diff --git a/src/main/kotlin/breadmod/datagen/texture_plane/TexturePlaneProvider.kt b/src/main/kotlin/breadmod/datagen/texture_plane/TexturePlaneProvider.kt index 7b3c7ced..dd1ab29b 100644 --- a/src/main/kotlin/breadmod/datagen/texture_plane/TexturePlaneProvider.kt +++ b/src/main/kotlin/breadmod/datagen/texture_plane/TexturePlaneProvider.kt @@ -1,6 +1,5 @@ package breadmod.datagen.texture_plane -import breadmod.util.isSquareOf import com.google.gson.JsonArray import com.google.gson.JsonObject import net.minecraft.data.CachedOutput @@ -30,8 +29,8 @@ abstract class TexturePlaneProvider(private val packOutput: PackOutput, private }) it.add(ELEMENTS, JsonArray().also { element -> element.add(JsonObject().also { elementObject -> - elementObject.add("from", JsonArray().also { array -> array.add(0.0); array.add(0); array.add(0) }) - elementObject.add("to", JsonArray().also { array -> array.add(16); array.add(0.025); array.add(16) }) + elementObject.add("from", JsonArray().also { array -> array.add(8); array.add(0); array.add(-8) }) + elementObject.add("to", JsonArray().also { array -> array.add(24); array.add(0.025); array.add(8) }) elementObject.add("faces", JsonObject().also { faceObject -> directions.forEach { direction -> faceObject.add(direction, JsonObject().also { directions -> @@ -61,10 +60,10 @@ abstract class TexturePlaneProvider(private val packOutput: PackOutput, private textureLocation: ResourceLocation ) { if(addedModels.containsKey(name)) throw IllegalStateException("$name is already defined.") - println("texture width: ${getTextureRes(textureLocation).first}") - println("${isSquareOf(getTextureRes(textureLocation).first, 2)}") - println("texture height: ${getTextureRes(textureLocation).second}") - println(println("${isSquareOf(getTextureRes(textureLocation).second, 2)}")) +// println("texture width: ${getTextureRes(textureLocation).first}") +// println("${isSquareOf(getTextureRes(textureLocation).first, 2)}") +// println("texture height: ${getTextureRes(textureLocation).second}") +// println(println("${isSquareOf(getTextureRes(textureLocation).second, 2)}")) // if(!isSquareOf(getTextureRes(textureLocation).first, 2) && !isSquareOf(getTextureRes(textureLocation).second, 2)) throw IllegalStateException("Texture resolution is not power of 2.") addedModels[name] = textureLocation } diff --git a/src/main/kotlin/breadmod/item/rendering/TimerTicker.kt b/src/main/kotlin/breadmod/item/rendering/TimerTicker.kt index 661273f5..c5d16054 100644 --- a/src/main/kotlin/breadmod/item/rendering/TimerTicker.kt +++ b/src/main/kotlin/breadmod/item/rendering/TimerTicker.kt @@ -1,22 +1,25 @@ package breadmod.item.rendering import net.minecraft.client.Minecraft -import net.minecraft.util.Mth object TimerTicker { private val instance = Minecraft.getInstance() private var lastRotation = 0f var rotation = 0f + private var ticks = 0.0f fun tick() { if(!instance.isPaused) { - if(rotation <= 360f) { // todo smoothed out rotation | WrenchItemRenderer.java - lastRotation = rotation - rotation = 2f + Mth.lerp(instance.frameTime, lastRotation, rotation) -// rotation += 0.1f - println("current timer tick: $rotation") -// println("${instance.partialTick}") - } else rotation = 0f + ticks += 1.0f % 1728000 +// if(rotation <= 360f) { // todo smoothed out rotation | WrenchItemRenderer.java +// lastRotation = rotation +// rotation = 2f + lerp(instance.frameTime, lastRotation, rotation) +// } else rotation = 0f + + } } + + fun getRenderTime(): Float = ticks + instance.partialTick + fun reset() { ticks = 0f; rotation = 0f } } \ No newline at end of file diff --git a/src/main/kotlin/breadmod/item/rendering/ToolGunItemRenderer.kt b/src/main/kotlin/breadmod/item/rendering/ToolGunItemRenderer.kt index 238a6b95..98078c46 100644 --- a/src/main/kotlin/breadmod/item/rendering/ToolGunItemRenderer.kt +++ b/src/main/kotlin/breadmod/item/rendering/ToolGunItemRenderer.kt @@ -23,6 +23,7 @@ import net.minecraftforge.client.model.generators.ModelProvider import java.awt.Color import java.security.SecureRandom import kotlin.math.round +import kotlin.math.sin class ToolGunItemRenderer : BlockEntityWithoutLevelRenderer( @@ -49,22 +50,28 @@ class ToolGunItemRenderer : BlockEntityWithoutLevelRenderer( pPackedOverlay: Int ) { val toolgunItem = pStack.item as ToolGunItem - val renderer = Minecraft.getInstance().itemRenderer - val fontRenderer = Minecraft.getInstance().font - val modelManager = Minecraft.getInstance().modelManager + val instance = Minecraft.getInstance() + val renderer = instance.itemRenderer + val fontRenderer = instance.font + val modelManager = instance.modelManager val mainModel = modelManager.getModel(mainModelLocation) val coilModel = modelManager.getModel(coilModelLocation) val testModel = modelManager.getModel(testModelLocation) pPoseStack.pushPose() - renderModel(mainModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight) - renderModel(testModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight) // todo smooth rotation after firing toolgun, quickly tapering off // todo recoil and increased coil spin when using tool gun - pPoseStack.mulPose(Axis.XN.rotationDegrees(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks()) * 100)) + val worldTime: Float = TimerTicker.getRenderTime() / 20f + var angle = worldTime * -25 + angle %= 360 +// pPoseStack.translate(sin(angle.toDouble() / 30), 0.0, 0.0) + renderModel(mainModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight) + pPoseStack.mulPose(Axis.XN.rotationDegrees(angle * 10)) renderModel(coilModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight) +// pPoseStack.mulPose(Axis.YN.rotationDegrees(angle * 30)) +// renderModel(testModel, renderer, pStack, pPoseStack, pBuffer, pPackedOverlay, pPackedLight) pPoseStack.popPose() // x, y, z after rotations // x: back and forward, y: up and down, z: left and right