Opening a cargo crate now updates its physical model

This commit is contained in:
DBotThePony 2023-01-23 22:18:48 +07:00
parent 47f95975e5
commit 95189b7eaf
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 31 additions and 0 deletions

View File

@ -591,4 +591,14 @@ public class BlockShapes {
new SimpleCuboid(0.875d, 0d, 0.5625d, 1d, 0.125d, 0.875d), new SimpleCuboid(0.875d, 0d, 0.5625d, 1d, 0.125d, 0.875d),
new SimpleCuboid(0d, 0d, 0.5625d, 0.125d, 0.125d, 0.875d) new SimpleCuboid(0d, 0d, 0.5625d, 0.125d, 0.125d, 0.875d)
); );
public static final BlockShape CARGO_CRATE_OPEN = new BlockShape(
new SimpleCuboid(0d, 0d, 0d, 1d, 0.8125d, 1d),
new SimpleCuboid(0.125d, 0.8125d, 0.125d, 0.875d, 0.9375d, 0.875d),
new SimpleCuboid(0d, 0.9375d, 0d, 1d, 1.125d, 1d),
new SimpleCuboid(0d, 0.8125d, 0.4375d, 0d, 0.9375d, 0.5625d),
new SimpleCuboid(1d, 0.8125d, 0.4375d, 1d, 0.9375d, 0.5625d),
new SimpleCuboid(0.4375d, 0.8125d, 1d, 0.5625d, 0.9375d, 1d),
new SimpleCuboid(0.4375d, 0.8125d, 0d, 0.5625d, 0.9375d, 0d)
);
} }

View File

@ -1,10 +1,12 @@
package ru.dbotthepony.mc.otm.block package ru.dbotthepony.mc.otm.block
import com.google.common.collect.ImmutableMap
import net.minecraft.core.BlockPos import net.minecraft.core.BlockPos
import net.minecraft.world.Containers import net.minecraft.world.Containers
import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.DyeColor import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.context.BlockPlaceContext import net.minecraft.world.item.context.BlockPlaceContext
import net.minecraft.world.level.BlockGetter
import net.minecraft.world.level.Level import net.minecraft.world.level.Level
import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.EntityBlock import net.minecraft.world.level.block.EntityBlock
@ -14,7 +16,12 @@ import net.minecraft.world.level.block.state.StateDefinition
import net.minecraft.world.level.block.state.properties.BooleanProperty import net.minecraft.world.level.block.state.properties.BooleanProperty
import net.minecraft.world.level.material.Material import net.minecraft.world.level.material.Material
import net.minecraft.world.level.material.MaterialColor import net.minecraft.world.level.material.MaterialColor
import net.minecraft.world.phys.shapes.CollisionContext
import net.minecraft.world.phys.shapes.Shapes
import net.minecraft.world.phys.shapes.VoxelShape
import ru.dbotthepony.mc.otm.block.entity.CargoCrateBlockEntity import ru.dbotthepony.mc.otm.block.entity.CargoCrateBlockEntity
import ru.dbotthepony.mc.otm.core.get
import ru.dbotthepony.mc.otm.shapes.BlockShapes
class CargoCrateBlock(val color: DyeColor?) : RotatableMatteryBlock( class CargoCrateBlock(val color: DyeColor?) : RotatableMatteryBlock(
Properties.of(Material.STONE, color?.materialColor ?: MaterialColor.COLOR_BLUE).requiresCorrectToolForDrops().strength(1.5f, 30.0f) Properties.of(Material.STONE, color?.materialColor ?: MaterialColor.COLOR_BLUE).requiresCorrectToolForDrops().strength(1.5f, 30.0f)
@ -43,8 +50,22 @@ class CargoCrateBlock(val color: DyeColor?) : RotatableMatteryBlock(
return AbstractContainerMenu.getRedstoneSignalFromContainer(tile.container) return AbstractContainerMenu.getRedstoneSignalFromContainer(tile.container)
} }
override fun getShape(
p_60555_: BlockState,
p_60556_: BlockGetter,
p_60557_: BlockPos,
p_60558_: CollisionContext
): VoxelShape {
if (p_60555_[IS_OPEN]) {
return CARGO_CRATE_OPEN
} else {
return Shapes.block()
}
}
companion object { companion object {
@JvmField @JvmField
val IS_OPEN: BooleanProperty = BooleanProperty.create("open") val IS_OPEN: BooleanProperty = BooleanProperty.create("open")
val CARGO_CRATE_OPEN: VoxelShape = BlockShapes.CARGO_CRATE_OPEN.computeShape()
} }
} }