matter reconstructor item render
This commit is contained in:
parent
87e2c8d1d8
commit
20acf14bee
@ -49,7 +49,10 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
||||
private var lastItem: Item? = null
|
||||
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
|
||||
|
||||
var isUnableToProcess = false
|
||||
@ -155,6 +158,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
||||
lastItem = item.item
|
||||
repairProgress = 0.0
|
||||
initialDamage = item.damageValue.toDouble()
|
||||
visualItemStack = item
|
||||
visualProgress = 0f
|
||||
}
|
||||
|
||||
@ -162,6 +166,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
||||
matterPerTick = Decimal.ZERO
|
||||
progressPerTick = 0.0
|
||||
initialDamage = 0.0
|
||||
visualItemStack = item
|
||||
visualProgress = 0f
|
||||
} else {
|
||||
if (ALLOW_TO_SKIP_ANVIL && !ONLY_ANVIL) {
|
||||
@ -199,6 +204,7 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
||||
matterPerTick = Decimal.ZERO
|
||||
progressPerTick = 0.0
|
||||
initialDamage = 0.0
|
||||
visualItemStack = item
|
||||
visualProgress = 0f
|
||||
}
|
||||
}
|
||||
@ -261,9 +267,11 @@ class MatterReconstructorBlockEntity(blockPos: BlockPos, blockState: BlockState)
|
||||
repairProgress %= 1.0
|
||||
}
|
||||
|
||||
visualItemStack = item
|
||||
visualProgress = 1f - ((item.damageValue - repairProgress) / initialDamage).toFloat()
|
||||
} else {
|
||||
initialDamage = 0.0
|
||||
visualItemStack = item
|
||||
visualProgress = 0f
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
@ -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.GravitationStabilizerBlockEntity
|
||||
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.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
|
||||
import ru.dbotthepony.mc.otm.client.render.blockentity.*
|
||||
|
||||
@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") // Type<*> is unused in BlockEntityType.Builder
|
||||
object MBlockEntities {
|
||||
@ -84,6 +78,7 @@ object MBlockEntities {
|
||||
BlockEntityRenderers.register(ENERGY_COUNTER, ::EnergyCounterRenderer)
|
||||
BlockEntityRenderers.register(BATTERY_BANK, ::BatteryBankRenderer)
|
||||
BlockEntityRenderers.register(MATTER_CAPACITOR_BANK, ::MatterBatteryBankRenderer)
|
||||
BlockEntityRenderers.register(MATTER_RECONSTRUCTOR, ::MatterReconstructorRenderer)
|
||||
BlockEntityRenderers.register(MATTER_REPLICATOR, ::MatterReplicatorRenderer)
|
||||
BlockEntityRenderers.register(HOLO_SIGN, ::HoloSignRenderer)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user