diff --git a/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java b/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java new file mode 100644 index 0000000..78d0892 --- /dev/null +++ b/src/main/java/su/a71/new_soviet/blocks/StoveBlock.java @@ -0,0 +1,69 @@ +package su.a71.new_soviet.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.BlockMirror; +import net.minecraft.util.BlockRotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import org.jetbrains.annotations.Nullable; + +public class StoveBlock extends BlockWithEntity { + public static final DirectionProperty FACING; + + public StoveBlock() { + super(FabricBlockSettings.create().sounds(BlockSoundGroup.METAL).notSolid().pistonBehavior(PistonBehavior.BLOCK)); + setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH)); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(Properties.HORIZONTAL_FACING); + } + + @Nullable + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return null; + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + Direction dir = state.get(FACING); + switch(dir) { + case NORTH, SOUTH: + return VoxelShapes.cuboid(0.0625f, 0.0f, 0.3125f, 0.9375f, 0.5625f, 0.6875f); + case EAST, WEST: + return VoxelShapes.cuboid(0.3125f, 0.0f, 0.0625f, 0.6875f, 0.5625f, 0.9375f); + default: + return VoxelShapes.fullCube(); + } + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + public BlockState rotate(BlockState state, BlockRotation rotation) { + return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING))); + } + + public BlockState mirror(BlockState state, BlockMirror mirror) { + return state.rotate(mirror.getRotation((Direction)state.get(FACING))); + } + + static { + FACING = Properties.HORIZONTAL_FACING; + } +} \ No newline at end of file diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove.png b/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove.png index e608fd5..4ab04d4 100644 Binary files a/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove.png and b/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove_on.png b/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove_on.png new file mode 100644 index 0000000..b63ed3c Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/appliances/stove_on.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/acacia.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/acacia.png new file mode 100644 index 0000000..094e19b Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/acacia.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/birch.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/birch.png new file mode 100644 index 0000000..1fca778 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/birch.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/cherry.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/cherry.png new file mode 100644 index 0000000..ea603fc Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/cherry.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/crimson.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/crimson.png new file mode 100644 index 0000000..702e40e Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/crimson.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/dark_oak.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/dark_oak.png new file mode 100644 index 0000000..6a38f8a Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/dark_oak.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/jungle.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/jungle.png new file mode 100644 index 0000000..9142e9d Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/jungle.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/mangrove.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/mangrove.png new file mode 100644 index 0000000..88338ff Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/mangrove.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/oak.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/oak.png new file mode 100644 index 0000000..e89ea24 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/oak.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/spruce.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/spruce.png new file mode 100644 index 0000000..56ca028 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/spruce.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/warped.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/warped.png new file mode 100644 index 0000000..739e9d2 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/warped.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/whitewashed.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/whitewashed.png new file mode 100644 index 0000000..fc5bd88 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/frames/whitewashed.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass.png new file mode 100644 index 0000000..9c949c3 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2.png new file mode 100644 index 0000000..b34f541 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_down.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_down.png new file mode 100644 index 0000000..1b45063 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_down.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_up.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_up.png new file mode 100644 index 0000000..508f945 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass2_up.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_broken.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_broken.png new file mode 100644 index 0000000..1b59a04 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_broken.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_down.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_down.png new file mode 100644 index 0000000..0a56ff9 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_down.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_middle.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_middle.png new file mode 100644 index 0000000..16fd8b9 Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_middle.png differ diff --git a/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_top.png b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_top.png new file mode 100644 index 0000000..0c67dca Binary files /dev/null and b/src/main/resources/assets/new_soviet/textures/block/custom/furniture/windows/glass_top.png differ