diff --git a/src/main/java/dev/zontreck/libzontreck/blocks/BlockCustomVoxels.java b/src/main/java/dev/zontreck/libzontreck/blocks/BlockCustomVoxels.java new file mode 100644 index 0000000..85981b5 --- /dev/null +++ b/src/main/java/dev/zontreck/libzontreck/blocks/BlockCustomVoxels.java @@ -0,0 +1,22 @@ +package dev.zontreck.libzontreck.blocks; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class BlockCustomVoxels extends PartialTransparentBlock +{ + private VoxelShape superShape; + protected BlockCustomVoxels(Properties p_54120_, VoxelShape shape) { + super(p_54120_); + this.superShape = shape; + } + + @Override + public VoxelShape getShape(BlockState p_60555_, BlockGetter p_60556_, BlockPos p_60557_, CollisionContext p_60558_) { + return superShape; + } +} diff --git a/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentBlock.java b/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentBlock.java new file mode 100644 index 0000000..edae2fb --- /dev/null +++ b/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentBlock.java @@ -0,0 +1,18 @@ +package dev.zontreck.libzontreck.blocks; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.AbstractGlassBlock; +import net.minecraft.world.level.block.state.BlockState; + +public class PartialTransparentBlock extends AbstractGlassBlock +{ + protected PartialTransparentBlock(Properties p_48729_) { + super(p_48729_); + } + + @Override + public boolean propagatesSkylightDown(BlockState p_48740_, BlockGetter p_48741_, BlockPos p_48742_) { + return true; + } +} diff --git a/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentSlabBlock.java b/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentSlabBlock.java new file mode 100644 index 0000000..ab3e90f --- /dev/null +++ b/src/main/java/dev/zontreck/libzontreck/blocks/PartialTransparentSlabBlock.java @@ -0,0 +1,19 @@ +package dev.zontreck.libzontreck.blocks; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.AbstractGlassBlock; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.state.BlockState; + +public class PartialTransparentSlabBlock extends SlabBlock +{ + protected PartialTransparentSlabBlock(Properties p_48729_) { + super(p_48729_); + } + + @Override + public boolean propagatesSkylightDown(BlockState p_48740_, BlockGetter p_48741_, BlockPos p_48742_) { + return true; + } +} diff --git a/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlock.java b/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlock.java new file mode 100644 index 0000000..acfcefc --- /dev/null +++ b/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlock.java @@ -0,0 +1,26 @@ +package dev.zontreck.libzontreck.blocks; + +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.HorizontalDirectionalBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; + +public class RotatableBlock extends HorizontalDirectionalBlock +{ + protected RotatableBlock(Properties pProperties) { + super(pProperties); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { + super.createBlockStateDefinition(pBuilder); + pBuilder.add(FACING); + } + + + @Override + public BlockState getStateForPlacement(BlockPlaceContext pContext) { + return defaultBlockState().setValue(FACING, pContext.getHorizontalDirection()); + } +} \ No newline at end of file diff --git a/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlockCustomVoxels.java b/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlockCustomVoxels.java new file mode 100644 index 0000000..cc9d4f2 --- /dev/null +++ b/src/main/java/dev/zontreck/libzontreck/blocks/RotatableBlockCustomVoxels.java @@ -0,0 +1,35 @@ +package dev.zontreck.libzontreck.blocks; + +import dev.zontreck.ariaslib.util.Maps; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; + +import java.util.HashMap; +import java.util.Map; + + +public class RotatableBlockCustomVoxels extends RotatableBlock +{ + private Map rotatedShapes = new HashMap<>(); + + protected RotatableBlockCustomVoxels(Properties properties, VoxelShape north, VoxelShape south, VoxelShape east, VoxelShape west) { + super(properties); + rotatedShapes = Maps.of(new Maps.Entry<>(Direction.NORTH, north), new Maps.Entry<>(Direction.SOUTH, south), new Maps.Entry<>(Direction.WEST, west), new Maps.Entry<>(Direction.EAST, east), new Maps.Entry<>(Direction.NORTH, north), new Maps.Entry<>(Direction.DOWN, north)); + } + + @Override + public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { + Direction facing = state.getValue(FACING); + return rotatedShapes.get(facing); + } + + @Override + public boolean propagatesSkylightDown(BlockState p_49928_, BlockGetter p_49929_, BlockPos p_49930_) { + return true; + } +}