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 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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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.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)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user