matter reconstructor item render

This commit is contained in:
YuRaNnNzZZ 2023-06-10 17:49:44 +03:00
parent 87e2c8d1d8
commit 20acf14bee
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D
3 changed files with 55 additions and 8 deletions

View File

@ -49,7 +49,10 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
private var lastItem: Item? = null private var lastItem: Item? = null
private var initialDamage = 0.0 private var initialDamage = 0.0
var visualProgress = 0f var visualItemStack by synchronizer.item(observe = false)
private set
var visualProgress by synchronizer.float().property
private set private set
var isUnableToProcess = false var isUnableToProcess = false
@ -155,6 +158,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
lastItem = item.item lastItem = item.item
repairProgress = 0.0 repairProgress = 0.0
initialDamage = item.damageValue.toDouble() initialDamage = item.damageValue.toDouble()
visualItemStack = item
visualProgress = 0f visualProgress = 0f
} }
@ -162,6 +166,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
matterPerTick = Decimal.ZERO matterPerTick = Decimal.ZERO
progressPerTick = 0.0 progressPerTick = 0.0
initialDamage = 0.0 initialDamage = 0.0
visualItemStack = item
visualProgress = 0f visualProgress = 0f
} else { } else {
if (ALLOW_TO_SKIP_ANVIL && !ONLY_ANVIL) { if (ALLOW_TO_SKIP_ANVIL && !ONLY_ANVIL) {
@ -199,6 +204,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
matterPerTick = Decimal.ZERO matterPerTick = Decimal.ZERO
progressPerTick = 0.0 progressPerTick = 0.0
initialDamage = 0.0 initialDamage = 0.0
visualItemStack = item
visualProgress = 0f visualProgress = 0f
} }
} }
@ -261,9 +267,11 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
repairProgress %= 1.0 repairProgress %= 1.0
} }
visualItemStack = item
visualProgress = 1f - ((item.damageValue - repairProgress) / initialDamage).toFloat() visualProgress = 1f - ((item.damageValue - repairProgress) / initialDamage).toFloat()
} else { } else {
initialDamage = 0.0 initialDamage = 0.0
visualItemStack = item
visualProgress = 0f visualProgress = 0f
} }
} }

View File

@ -0,0 +1,44 @@
package ru.dbotthepony.mc.otm.client.render.blockentity
import com.mojang.blaze3d.vertex.PoseStack
import com.mojang.math.Axis
import net.minecraft.client.renderer.MultiBufferSource
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
import net.minecraft.world.item.ItemDisplayContext
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReconstructorBlockEntity
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
class MatterReconstructorRenderer(private val context: BlockEntityRendererProvider.Context) : BlockEntityRenderer<MatterReconstructorBlockEntity> {
companion object {
private val source = DynamicBufferSource(maximalInitialBufferSize = 2 shl 10)
}
override fun render(
tile: MatterReconstructorBlockEntity,
partialTick: Float,
pose: PoseStack,
bufferSource: MultiBufferSource,
packedLight: Int,
packedOverlay: Int
) {
val item = tile.visualItemStack
if (item.isEmpty) {
return
}
pose.pushPose()
pose.translate(0.5, 0.6, 0.5)
pose.scale(0.5f, 0.5f, 0.5f)
pose.mulPose(Axis.XP.rotationDegrees(90f))
pose.mulPose(Axis.ZP.rotationDegrees(tile.blockRotation.front.toYRot() + 180f))
context.itemRenderer.renderStatic(item, ItemDisplayContext.FIXED, packedLight, packedOverlay, pose, source, tile.level, tile.blockPos.asLong().toInt())
source.endBatch()
pose.popPose()
}
}

View File

@ -22,13 +22,7 @@ import ru.dbotthepony.mc.otm.block.entity.tech.BatteryBankBlockEntity
import ru.dbotthepony.mc.otm.block.entity.tech.EnergyServoBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.EnergyServoBlockEntity
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity import ru.dbotthepony.mc.otm.block.entity.tech.PlatePressBlockEntity
import ru.dbotthepony.mc.otm.client.render.blockentity.BatteryBankRenderer import ru.dbotthepony.mc.otm.client.render.blockentity.*
import ru.dbotthepony.mc.otm.client.render.blockentity.BlackHoleRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.EnergyCounterRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.GravitationStabilizerRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.HoloSignRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterBatteryBankRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterReplicatorRenderer
@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") // Type<*> is unused in BlockEntityType.Builder @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") // Type<*> is unused in BlockEntityType.Builder
object MBlockEntities { object MBlockEntities {
@ -84,6 +78,7 @@ object MBlockEntities {
BlockEntityRenderers.register(ENERGY_COUNTER, ::EnergyCounterRenderer) BlockEntityRenderers.register(ENERGY_COUNTER, ::EnergyCounterRenderer)
BlockEntityRenderers.register(BATTERY_BANK, ::BatteryBankRenderer) BlockEntityRenderers.register(BATTERY_BANK, ::BatteryBankRenderer)
BlockEntityRenderers.register(MATTER_CAPACITOR_BANK, ::MatterBatteryBankRenderer) BlockEntityRenderers.register(MATTER_CAPACITOR_BANK, ::MatterBatteryBankRenderer)
BlockEntityRenderers.register(MATTER_RECONSTRUCTOR, ::MatterReconstructorRenderer)
BlockEntityRenderers.register(MATTER_REPLICATOR, ::MatterReplicatorRenderer) BlockEntityRenderers.register(MATTER_REPLICATOR, ::MatterReplicatorRenderer)
BlockEntityRenderers.register(HOLO_SIGN, ::HoloSignRenderer) BlockEntityRenderers.register(HOLO_SIGN, ::HoloSignRenderer)
} }