diff --git a/src/main/java/ru/bclib/blocks/EndAnvilBlock.java b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java similarity index 88% rename from src/main/java/ru/bclib/blocks/EndAnvilBlock.java rename to src/main/java/ru/bclib/blocks/BaseAnvilBlock.java index b0f68873..0e377e29 100644 --- a/src/main/java/ru/bclib/blocks/EndAnvilBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java @@ -22,16 +22,16 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndAnvilBlock extends AnvilBlock implements BlockModelProvider { +public class BaseAnvilBlock extends AnvilBlock implements BlockModelProvider { private static final IntegerProperty DESTRUCTION = BlockProperties.DESTRUCTION; protected final int level; - public EndAnvilBlock(MaterialColor color, int level) { + public BaseAnvilBlock(MaterialColor color, int level) { super(FabricBlockSettings.copyOf(Blocks.ANVIL).materialColor(color)); this.level = level; } @@ -79,7 +79,7 @@ public class EndAnvilBlock extends AnvilBlock implements BlockModelProvider { Map textures = Maps.newHashMap(); textures.put("%anvil%", name); textures.put("%top%", name + "_top_" + destruction); - Optional pattern = Patterns.createJson(Patterns.BLOCK_ANVIL, textures); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_ANVIL, textures); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/BaseBarkBlock.java b/src/main/java/ru/bclib/blocks/BaseBarkBlock.java index bd59a1dc..743ff0af 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarkBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarkBlock.java @@ -4,21 +4,22 @@ import java.util.Optional; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.PatternsHelper; -public class BarkBlock extends EndPillarBlock { - public BarkBlock(Properties settings) { +public class BaseBarkBlock extends BaseRotatedPillarBlock { + public BaseBarkBlock(Properties settings) { super(settings); } @Override protected Optional createBlockPattern(ResourceLocation blockId) { blockId = Registry.BLOCK.getKey(this); - return Patterns.createJson(Patterns.BLOCK_BASE, getName(blockId), blockId.getPath()); + return PatternsHelper.createJson(BasePatterns.BLOCK_BASE, replacePath(blockId)); } - private String getName(ResourceLocation blockId) { - String name = blockId.getPath(); - return name.replace("_bark", "_log_side"); + private ResourceLocation replacePath(ResourceLocation blockId) { + String newPath = blockId.getPath().replace("_bark", "_log_side"); + return new ResourceLocation(blockId.getNamespace(), newPath); } } diff --git a/src/main/java/ru/bclib/blocks/EndBookshelfBlock.java b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java similarity index 73% rename from src/main/java/ru/bclib/blocks/EndBookshelfBlock.java rename to src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java index 4ae6181d..98907016 100644 --- a/src/main/java/ru/bclib/blocks/EndBookshelfBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java @@ -17,11 +17,12 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndBookshelfBlock extends BlockBase { - public EndBookshelfBlock(Block source) { +public class BaseBookshelfBlock extends BaseBlock { + public BaseBookshelfBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } @@ -39,13 +40,12 @@ public class EndBookshelfBlock extends BlockBase { @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_BOOKSHELF, - getName(blockId), blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_BOOKSHELF, replacePath(blockId)); return ModelsHelper.fromPattern(pattern); } - private String getName(ResourceLocation blockId) { - String name = blockId.getPath(); - return name.replace("_bookshelf", ""); + private ResourceLocation replacePath(ResourceLocation blockId) { + String newPath = blockId.getPath().replace("_bookshelf", ""); + return new ResourceLocation(blockId.getNamespace(), newPath); } } diff --git a/src/main/java/ru/bclib/blocks/EndButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java similarity index 75% rename from src/main/java/ru/bclib/blocks/EndButtonBlock.java rename to src/main/java/ru/bclib/blocks/BaseButtonBlock.java index 766df64f..50d1f282 100644 --- a/src/main/java/ru/bclib/blocks/EndButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java @@ -18,15 +18,16 @@ import net.minecraft.world.level.block.ButtonBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.AttachFace; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public abstract class EndButtonBlock extends ButtonBlock implements BlockModelProvider { +public abstract class BaseButtonBlock extends ButtonBlock implements BlockModelProvider { private final Block parent; - protected EndButtonBlock(Block parent, Properties properties, boolean sensitive) { + protected BaseButtonBlock(Block parent, Properties properties, boolean sensitive) { super(sensitive, properties); this.parent = parent; } @@ -39,17 +40,16 @@ public abstract class EndButtonBlock extends ButtonBlock implements BlockModelPr @Override public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.ITEM_BUTTON, parentId.getPath(), blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_BUTTON, parentId); return ModelsHelper.fromPattern(pattern); } @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation blockId = Registry.BLOCK.getKey(this); ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = blockState.getValue(POWERED) ? - Patterns.createJson(Patterns.BLOCK_BUTTON_PRESSED, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_BUTTON, parentId.getPath(), blockId.getPath()); + PatternsHelper.createJson(BasePatterns.BLOCK_BUTTON_PRESSED, parentId) : + PatternsHelper.createJson(BasePatterns.BLOCK_BUTTON, parentId); return ModelsHelper.fromPattern(pattern); } @@ -64,15 +64,13 @@ public abstract class EndButtonBlock extends ButtonBlock implements BlockModelPr int x = 0, y = 0; switch (face) { case CEILING: x = 180; break; - case WALL: - default: x = 90; break; + case WALL: x = 90; break; } switch (blockState.getValue(FACING)) { case NORTH: if (isCeiling) { y = 180; } break; case EAST: y = isCeiling ? 270 : 90; break; case SOUTH: if(!isCeiling) { y = 180; } break; - case WEST: - default: y = isCeiling ? 90 : 270; break; + case WEST: y = isCeiling ? 90 : 270; break; } BlockModelRotation rotation = BlockModelRotation.by(x, y); return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), face == AttachFace.WALL); diff --git a/src/main/java/ru/bclib/blocks/EndChainBlock.java b/src/main/java/ru/bclib/blocks/BaseChainBlock.java similarity index 75% rename from src/main/java/ru/bclib/blocks/EndChainBlock.java rename to src/main/java/ru/bclib/blocks/BaseChainBlock.java index 4767f9d4..7d7693a3 100644 --- a/src/main/java/ru/bclib/blocks/EndChainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChainBlock.java @@ -18,14 +18,15 @@ import net.minecraft.world.level.block.ChainBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class EndChainBlock extends ChainBlock implements BlockModelProvider, IRenderTypeable { - public EndChainBlock(MaterialColor color) { +public class BaseChainBlock extends ChainBlock implements BlockModelProvider, IRenderTypeable { + public BaseChainBlock(MaterialColor color) { super(FabricBlockSettings.copyOf(Blocks.CHAIN).materialColor(color)); } @@ -36,13 +37,12 @@ public class EndChainBlock extends ChainBlock implements BlockModelProvider, IRe @Override public BlockModel getItemModel(ResourceLocation blockId) { - return ModelsHelper.createItemModel(blockId.getPath()); + return ModelsHelper.createItemModel(blockId); } @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - String name = blockId.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_CHAIN, name, name); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CHAIN, blockId); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndComposterBlock.java b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java similarity index 81% rename from src/main/java/ru/bclib/blocks/EndComposterBlock.java rename to src/main/java/ru/bclib/blocks/BaseComposterBlock.java index 901a26ee..40fcd847 100644 --- a/src/main/java/ru/bclib/blocks/EndComposterBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java @@ -16,13 +16,14 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.ModelsHelper.MultiPartBuilder; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; +import ru.bclib.client.models.PatternsHelper; -public class EndComposterBlock extends ComposterBlock implements BlockModelProvider { - public EndComposterBlock(Block source) { +public class BaseComposterBlock extends ComposterBlock implements BlockModelProvider { + public BaseComposterBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } @@ -38,7 +39,7 @@ public class EndComposterBlock extends ComposterBlock implements BlockModelProvi @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_COMPOSTER, blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_COMPOSTER, blockId); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndCraftingTableBlock.java b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java similarity index 77% rename from src/main/java/ru/bclib/blocks/EndCraftingTableBlock.java rename to src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java index 8c3a40b4..5b465ca3 100644 --- a/src/main/java/ru/bclib/blocks/EndCraftingTableBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java @@ -15,12 +15,13 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CraftingTableBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { - public EndCraftingTableBlock(Block source) { +public class BaseCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { + public BaseCraftingTableBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } @@ -37,7 +38,7 @@ public class EndCraftingTableBlock extends CraftingTableBlock implements BlockMo @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String blockName = blockId.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_SIDED, new HashMap() { + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SIDED, new HashMap() { private static final long serialVersionUID = 1L; { put("%particle%", blockName + "_front"); diff --git a/src/main/java/ru/bclib/blocks/BaseCropBlock.java b/src/main/java/ru/bclib/blocks/BaseCropBlock.java index 86bf1f20..703ffaab 100644 --- a/src/main/java/ru/bclib/blocks/BaseCropBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCropBlock.java @@ -28,8 +28,8 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; -import ru.betterend.util.BlocksHelper; public class BaseCropBlock extends BasePlantBlock { private static final VoxelShape SHAPE = Block.box(2, 0, 2, 14, 14, 14); diff --git a/src/main/java/ru/bclib/blocks/EndDoorBlock.java b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java similarity index 84% rename from src/main/java/ru/bclib/blocks/EndDoorBlock.java rename to src/main/java/ru/bclib/blocks/BaseDoorBlock.java index f11e2e27..8ebc1311 100644 --- a/src/main/java/ru/bclib/blocks/EndDoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java @@ -21,14 +21,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.DoorHingeSide; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class EndDoorBlock extends DoorBlock implements IRenderTypeable, BlockModelProvider { - public EndDoorBlock(Block source) { +public class BaseDoorBlock extends DoorBlock implements IRenderTypeable, BlockModelProvider { + public BaseDoorBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(3F, 3F).noOcclusion()); } @@ -47,19 +48,17 @@ public class EndDoorBlock extends DoorBlock implements IRenderTypeable, BlockMod @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - String blockName = resourceLocation.getPath(); DoorType doorType = getDoorType(blockState); - Optional pattern = Patterns.createJson(Patterns.BLOCK_DOOR_BOTTOM, blockName, blockName); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_DOOR_BOTTOM, resourceLocation); switch (doorType) { case TOP_HINGE: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_TOP_HINGE, blockName, blockName); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_DOOR_TOP_HINGE, resourceLocation); break; case BOTTOM_HINGE: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_BOTTOM_HINGE, blockName, blockName); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_DOOR_BOTTOM_HINGE, resourceLocation); break; case TOP: - default: - pattern = Patterns.createJson(Patterns.BLOCK_DOOR_TOP, blockName, blockName); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_DOOR_TOP, resourceLocation); break; } return ModelsHelper.fromPattern(pattern); diff --git a/src/main/java/ru/bclib/blocks/EndFenceBlock.java b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java similarity index 81% rename from src/main/java/ru/bclib/blocks/EndFenceBlock.java rename to src/main/java/ru/bclib/blocks/BaseFenceBlock.java index 3fbc5874..0948de06 100644 --- a/src/main/java/ru/bclib/blocks/EndFenceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java @@ -18,15 +18,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.ModelsHelper.MultiPartBuilder; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; +import ru.bclib.client.models.PatternsHelper; -public class EndFenceBlock extends FenceBlock implements BlockModelProvider { +public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { private final Block parent; - public EndFenceBlock(Block source) { + public BaseFenceBlock(Block source) { super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } @@ -39,7 +40,7 @@ public class EndFenceBlock extends FenceBlock implements BlockModelProvider { @Override public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.ITEM_FENCE, parentId.getPath(), blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_FENCE, parentId); return ModelsHelper.fromPattern(pattern); } @@ -49,10 +50,10 @@ public class EndFenceBlock extends FenceBlock implements BlockModelProvider { String path = blockId.getPath(); Optional pattern = Optional.empty(); if (path.endsWith("_post")) { - pattern = Patterns.createJson(Patterns.BLOCK_FENCE_POST, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_FENCE_POST, parentId); } if (path.endsWith("_side")) { - pattern = Patterns.createJson(Patterns.BLOCK_FENCE_SIDE, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_FENCE_SIDE, parentId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndGateBlock.java b/src/main/java/ru/bclib/blocks/BaseGateBlock.java similarity index 75% rename from src/main/java/ru/bclib/blocks/EndGateBlock.java rename to src/main/java/ru/bclib/blocks/BaseGateBlock.java index e262a14d..8e811ce4 100644 --- a/src/main/java/ru/bclib/blocks/EndGateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseGateBlock.java @@ -17,14 +17,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceGateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndGateBlock extends FenceGateBlock implements BlockModelProvider { +public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider { private final Block parent; - public EndGateBlock(Block source) { + public BaseGateBlock(Block source) { super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } @@ -46,11 +47,11 @@ public class EndGateBlock extends FenceGateBlock implements BlockModelProvider { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern; if (inWall) { - pattern = isOpen ? Patterns.createJson(Patterns.BLOCK_GATE_OPEN_WALL, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_GATE_CLOSED_WALL, parentId.getPath(), blockId.getPath()); + pattern = isOpen ? PatternsHelper.createJson(BasePatterns.BLOCK_GATE_OPEN_WALL, parentId) : + PatternsHelper.createJson(BasePatterns.BLOCK_GATE_CLOSED_WALL, parentId); } else { - pattern = isOpen ? Patterns.createJson(Patterns.BLOCK_GATE_OPEN, parentId.getPath(), blockId.getPath()) : - Patterns.createJson(Patterns.BLOCK_GATE_CLOSED, parentId.getPath(), blockId.getPath()); + pattern = isOpen ? PatternsHelper.createJson(BasePatterns.BLOCK_GATE_OPEN, parentId) : + PatternsHelper.createJson(BasePatterns.BLOCK_GATE_CLOSED, parentId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndLadderBlock.java b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java similarity index 94% rename from src/main/java/ru/bclib/blocks/EndLadderBlock.java rename to src/main/java/ru/bclib/blocks/BaseLadderBlock.java index a8c1c567..4a60d045 100644 --- a/src/main/java/ru/bclib/blocks/EndLadderBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java @@ -37,7 +37,7 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.interfaces.IRenderTypeable; import ru.bclib.util.BlocksHelper; -public class EndLadderBlock extends BaseBlockNotFull implements IRenderTypeable, BlockModelProvider { +public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTypeable, BlockModelProvider { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; protected static final VoxelShape EAST_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 3.0D, 16.0D, 16.0D); @@ -45,7 +45,7 @@ public class EndLadderBlock extends BaseBlockNotFull implements IRenderTypeable, protected static final VoxelShape SOUTH_SHAPE = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 3.0D); protected static final VoxelShape NORTH_SHAPE = Block.box(0.0D, 0.0D, 13.0D, 16.0D, 16.0D, 16.0D); - public EndLadderBlock(Block block) { + public BaseLadderBlock(Block block) { super(FabricBlockSettings.copyOf(block).noOcclusion()); } @@ -75,7 +75,7 @@ public class EndLadderBlock extends BaseBlockNotFull implements IRenderTypeable, @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); + Direction direction = state.getValue(FACING); return this.canPlaceOn(world, pos.relative(direction.getOpposite()), direction); } @@ -85,7 +85,7 @@ public class EndLadderBlock extends BaseBlockNotFull implements IRenderTypeable, if (facing.getOpposite() == state.getValue(FACING) && !state.canSurvive(world, pos)) { return Blocks.AIR.defaultBlockState(); } else { - if ((Boolean) state.getValue(WATERLOGGED)) { + if (state.getValue(WATERLOGGED)) { world.getLiquidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); } @@ -133,7 +133,7 @@ public class EndLadderBlock extends BaseBlockNotFull implements IRenderTypeable, @Override public FluidState getFluidState(BlockState state) { - return (Boolean) state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); } @Override diff --git a/src/main/java/ru/bclib/blocks/EndLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java similarity index 87% rename from src/main/java/ru/bclib/blocks/EndLeavesBlock.java rename to src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index 364f4311..b407e30b 100644 --- a/src/main/java/ru/bclib/blocks/EndLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -19,15 +19,15 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; import ru.bclib.util.MHelper; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -public class EndLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTypeable { +public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTypeable { private final Block sapling; - public EndLeavesBlock(Block sapling, MaterialColor color) { + public BaseLeavesBlock(Block sapling, MaterialColor color) { super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) .materialColor(color) .breakByTool(FabricToolTags.HOES) @@ -39,7 +39,7 @@ public class EndLeavesBlock extends LeavesBlock implements BlockModelProvider, I this.sapling = sapling; } - public EndLeavesBlock(Block sapling, MaterialColor color, int light) { + public BaseLeavesBlock(Block sapling, MaterialColor color, int light) { super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) .materialColor(color) .luminance(light) diff --git a/src/main/java/ru/bclib/blocks/EndMetalPaneBlock.java b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java similarity index 81% rename from src/main/java/ru/bclib/blocks/EndMetalPaneBlock.java rename to src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java index c995180a..084201c2 100644 --- a/src/main/java/ru/bclib/blocks/EndMetalPaneBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java @@ -21,14 +21,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.IronBarsBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class EndMetalPaneBlock extends IronBarsBlock implements BlockModelProvider, IRenderTypeable { - public EndMetalPaneBlock(Block source) { +public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvider, IRenderTypeable { + public BaseMetalBarsBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(5.0F, 6.0F).noOcclusion()); } @@ -40,13 +41,13 @@ public class EndMetalPaneBlock extends IronBarsBlock implements BlockModelProvid public Optional getModelString(String block) { ResourceLocation blockId = Registry.BLOCK.getKey(this); if (block.contains("item")) { - return Patterns.createJson(Patterns.ITEM_BLOCK, blockId.getPath()); + return PatternsHelper.createJson(BasePatterns.ITEM_BLOCK, blockId); } if (block.contains("post")) { - return Patterns.createJson(Patterns.BLOCK_BARS_POST, blockId.getPath(), blockId.getPath()); + return PatternsHelper.createJson(BasePatterns.BLOCK_BARS_POST, blockId); } else { - return Patterns.createJson(Patterns.BLOCK_BARS_SIDE, blockId.getPath(), blockId.getPath()); + return PatternsHelper.createJson(BasePatterns.BLOCK_BARS_SIDE, blockId); } } @@ -61,10 +62,10 @@ public class EndMetalPaneBlock extends IronBarsBlock implements BlockModelProvid String path = blockId.getPath(); Optional pattern = Optional.empty(); if (path.endsWith("_post")) { - pattern = Patterns.createJson(Patterns.BLOCK_BARS_POST, thisId.getPath(), thisId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_BARS_POST, thisId); } if (path.endsWith("_side")) { - pattern = Patterns.createJson(Patterns.BLOCK_BARS_SIDE, thisId.getPath(), thisId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_BARS_SIDE, thisId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndOreBlock.java b/src/main/java/ru/bclib/blocks/BaseOreBlock.java similarity index 92% rename from src/main/java/ru/bclib/blocks/EndOreBlock.java rename to src/main/java/ru/bclib/blocks/BaseOreBlock.java index ef8b7a8e..5d5cc847 100644 --- a/src/main/java/ru/bclib/blocks/EndOreBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseOreBlock.java @@ -19,16 +19,16 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import ru.bclib.client.models.BlockModelProvider; import ru.bclib.util.MHelper; -import ru.betterend.client.models.BlockModelProvider; -public class EndOreBlock extends OreBlock implements BlockModelProvider { +public class BaseOreBlock extends OreBlock implements BlockModelProvider { private final Item dropItem; private final int minCount; private final int maxCount; private final int experience; - public EndOreBlock(Item drop, int minCount, int maxCount, int experience) { + public BaseOreBlock(Item drop, int minCount, int maxCount, int experience) { super(FabricBlockSettings.of(Material.STONE, MaterialColor.SAND) .hardness(3F) .resistance(9F) @@ -52,7 +52,7 @@ public class EndOreBlock extends OreBlock implements BlockModelProvider { if (EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Collections.singletonList(new ItemStack(this)); } - int count = 0; + int count; int enchantment = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); if (enchantment > 0) { int min = Mth.clamp(minCount + enchantment, minCount, maxCount); diff --git a/src/main/java/ru/bclib/blocks/EndPathBlock.java b/src/main/java/ru/bclib/blocks/BasePathBlock.java similarity index 90% rename from src/main/java/ru/bclib/blocks/EndPathBlock.java rename to src/main/java/ru/bclib/blocks/BasePathBlock.java index 4878d66a..dd01811e 100644 --- a/src/main/java/ru/bclib/blocks/EndPathBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePathBlock.java @@ -25,13 +25,14 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndPathBlock extends BlockBaseNotFull { +public class BasePathBlock extends BaseBlockNotFull { private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 15, 16); - public EndPathBlock(Block source) { + public BasePathBlock(Block source) { super(FabricBlockSettings.copyOf(source).isValidSpawn((state, world, pos, type) -> { return false; })); if (source instanceof BaseTerrainBlock) { BaseTerrainBlock terrain = (BaseTerrainBlock) source; @@ -69,7 +70,7 @@ public class EndPathBlock extends BlockBaseNotFull { Map textures = Maps.newHashMap(); textures.put("%top%", name + "_top"); textures.put("%side%", name.replace("_path", "") + "_side"); - Optional pattern = Patterns.createJson(Patterns.BLOCK_PATH, textures); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_PATH, textures); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/BasePlantBlock.java b/src/main/java/ru/bclib/blocks/BasePlantBlock.java index 3f8d3deb..cbe50461 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantBlock.java @@ -30,10 +30,11 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.api.TagAPI; import ru.bclib.client.render.ERenderLayer; import ru.bclib.interfaces.IRenderTypeable; -public class BasePlantBlock extends BaseBlockNotFull implements IRenderTypeable, BonemealableBlock { +public abstract class BasePlantBlock extends BaseBlockNotFull implements IRenderTypeable, BonemealableBlock { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); public BasePlantBlock() { @@ -65,6 +66,8 @@ public class BasePlantBlock extends BaseBlockNotFull implements IRenderTypeable, super(settings); } + protected abstract boolean isTerrain(BlockState state); + @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { Vec3 vec3d = state.getOffset(view, pos); @@ -81,10 +84,6 @@ public class BasePlantBlock extends BaseBlockNotFull implements IRenderTypeable, BlockState down = world.getBlockState(pos.below()); return isTerrain(down); } - - protected boolean isTerrain(BlockState state) { - return state.is(EndTags.END_GROUND); - } @Override public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { diff --git a/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java b/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java index ad6f6779..a8c31d54 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java @@ -14,7 +14,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.BlockProperties; public abstract class BasePlantWithAgeBlock extends BasePlantBlock { public static final IntegerProperty AGE = BlockProperties.AGE; diff --git a/src/main/java/ru/bclib/blocks/EndPlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java similarity index 79% rename from src/main/java/ru/bclib/blocks/EndPlateBlock.java rename to src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java index 8c01e9f1..6f08b05b 100644 --- a/src/main/java/ru/bclib/blocks/EndPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java @@ -17,14 +17,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.PressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndPlateBlock extends PressurePlateBlock implements BlockModelProvider { +public class BasePressurePlateBlock extends PressurePlateBlock implements BlockModelProvider { private final Block parent; - public EndPlateBlock(Sensitivity rule, Block source) { + public BasePressurePlateBlock(Sensitivity rule, Block source) { super(rule, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().strength(0.5F)); this.parent = source; } @@ -44,9 +45,9 @@ public class EndPlateBlock extends PressurePlateBlock implements BlockModelProvi ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern; if (blockState.getValue(POWERED)) { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_DOWN, parentId.getPath(), resourceLocation.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_PLATE_DOWN, parentId); } else { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_UP, parentId.getPath(), resourceLocation.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_PLATE_UP, parentId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/BasePressureStonePlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressureStonePlateBlock.java new file mode 100644 index 00000000..168c7fee --- /dev/null +++ b/src/main/java/ru/bclib/blocks/BasePressureStonePlateBlock.java @@ -0,0 +1,9 @@ +package ru.bclib.blocks; + +import net.minecraft.world.level.block.Block; + +public class BasePressureStonePlateBlock extends BasePressurePlateBlock { + public BasePressureStonePlateBlock(Block source) { + super(Sensitivity.MOBS, source); + } +} diff --git a/src/main/java/ru/bclib/blocks/BasePressureWoodenPlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressureWoodenPlateBlock.java new file mode 100644 index 00000000..80783fd4 --- /dev/null +++ b/src/main/java/ru/bclib/blocks/BasePressureWoodenPlateBlock.java @@ -0,0 +1,9 @@ +package ru.bclib.blocks; + +import net.minecraft.world.level.block.Block; + +public class BasePressureWoodenPlateBlock extends BasePressurePlateBlock { + public BasePressureWoodenPlateBlock(Block source) { + super(Sensitivity.EVERYTHING, source); + } +} diff --git a/src/main/java/ru/bclib/blocks/EndPillarBlock.java b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java similarity index 81% rename from src/main/java/ru/bclib/blocks/EndPillarBlock.java rename to src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java index deae0c31..0a7e72fb 100644 --- a/src/main/java/ru/bclib/blocks/EndPillarBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java @@ -16,16 +16,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndPillarBlock extends RotatedPillarBlock implements BlockModelProvider { - public EndPillarBlock(Properties settings) { +public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockModelProvider { + public BaseRotatedPillarBlock(Properties settings) { super(settings); } - public EndPillarBlock(Block block) { + public BaseRotatedPillarBlock(Block block) { super(FabricBlockSettings.copyOf(block)); } @@ -54,6 +54,6 @@ public class EndPillarBlock extends RotatedPillarBlock implements BlockModelProv } protected Optional createBlockPattern(ResourceLocation blockId) { - return Patterns.createBlockPillar(blockId.getPath()); + return PatternsHelper.createBlockPillar(blockId); } } diff --git a/src/main/java/ru/bclib/blocks/EndSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java similarity index 83% rename from src/main/java/ru/bclib/blocks/EndSlabBlock.java rename to src/main/java/ru/bclib/blocks/BaseSlabBlock.java index 84de2baf..357ecd58 100644 --- a/src/main/java/ru/bclib/blocks/EndSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -19,14 +19,15 @@ import net.minecraft.world.level.block.SlabBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndSlabBlock extends SlabBlock implements BlockModelProvider { +public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { private final Block parent; - public EndSlabBlock(Block source) { + public BaseSlabBlock(Block source) { super(FabricBlockSettings.copyOf(source)); this.parent = source; } @@ -44,7 +45,7 @@ public class EndSlabBlock extends SlabBlock implements BlockModelProvider { @Override public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.BLOCK_SLAB, parentId.getPath(), blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SLAB, parentId); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndStairsBlock.java b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java similarity index 84% rename from src/main/java/ru/bclib/blocks/EndStairsBlock.java rename to src/main/java/ru/bclib/blocks/BaseStairsBlock.java index 6e77e478..49eb833c 100644 --- a/src/main/java/ru/bclib/blocks/EndStairsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java @@ -20,15 +20,16 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.StairsShape; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndStairsBlock extends StairBlock implements BlockModelProvider { +public class BaseStairsBlock extends StairBlock implements BlockModelProvider { private final Block parent; - public EndStairsBlock(Block source) { + public BaseStairsBlock(Block source) { super(source.defaultBlockState(), FabricBlockSettings.copyOf(source)); this.parent = source; } @@ -49,15 +50,15 @@ public class EndStairsBlock extends StairBlock implements BlockModelProvider { Optional pattern = Optional.empty(); switch (blockState.getValue(SHAPE)) { case STRAIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_STAIR, parentId); break; case INNER_LEFT: case INNER_RIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR_INNER, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_STAIR_INNER, parentId); break; case OUTER_LEFT: case OUTER_RIGHT: - pattern = Patterns.createJson(Patterns.BLOCK_STAIR_OUTER, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_STAIR_OUTER, parentId); break; } return ModelsHelper.fromPattern(pattern); @@ -65,7 +66,7 @@ public class EndStairsBlock extends StairBlock implements BlockModelProvider { @Override public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String state = ""; + String state; StairsShape shape = blockState.getValue(SHAPE); switch (shape) { case INNER_LEFT: @@ -73,8 +74,9 @@ public class EndStairsBlock extends StairBlock implements BlockModelProvider { state = "_inner"; break; case OUTER_LEFT: case OUTER_RIGHT: - default: state = "_outer"; break; + default: + state = ""; } ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + state); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/EndStoneButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java similarity index 81% rename from src/main/java/ru/bclib/blocks/EndStoneButtonBlock.java rename to src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java index 2a7e5936..aabc865b 100644 --- a/src/main/java/ru/bclib/blocks/EndStoneButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java @@ -5,9 +5,9 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; -public class EndStoneButtonBlock extends EndButtonBlock { +public class BaseStoneButtonBlock extends BaseButtonBlock { - public EndStoneButtonBlock(Block source) { + public BaseStoneButtonBlock(Block source) { super(source, FabricBlockSettings.copyOf(source).noOcclusion(), false); } diff --git a/src/main/java/ru/bclib/blocks/EndBlockStripableLogLog.java b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java similarity index 89% rename from src/main/java/ru/bclib/blocks/EndBlockStripableLogLog.java rename to src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java index 64640813..550c25e7 100644 --- a/src/main/java/ru/bclib/blocks/EndBlockStripableLogLog.java +++ b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java @@ -16,10 +16,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; -public class EndBlockStripableLogLog extends EndPillarBlock { +public class BaseStripableLogBlock extends BaseRotatedPillarBlock { private final Block striped; - public EndBlockStripableLogLog(MaterialColor color, Block striped) { + public BaseStripableLogBlock(MaterialColor color, Block striped) { super(FabricBlockSettings.copyOf(striped).materialColor(color)); this.striped = striped; } @@ -30,7 +30,7 @@ public class EndBlockStripableLogLog extends EndPillarBlock { world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); if (!world.isClientSide) { world.setBlock(pos, striped.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); - if (player != null && !player.isCreative()) { + if (!player.isCreative()) { player.getMainHandItem().hurt(1, world.random, (ServerPlayer) player); } } diff --git a/src/main/java/ru/bclib/blocks/EndTrapdoorBlock.java b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java similarity index 80% rename from src/main/java/ru/bclib/blocks/EndTrapdoorBlock.java rename to src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java index e9c9b883..16b433f7 100644 --- a/src/main/java/ru/bclib/blocks/EndTrapdoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java @@ -19,14 +19,15 @@ import net.minecraft.world.level.block.TrapDoorBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, BlockModelProvider { - public EndTrapdoorBlock(Block source) { +public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, BlockModelProvider { + public BaseTrapdoorBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(3.0F, 3.0F).noOcclusion()); } @@ -48,11 +49,11 @@ public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { String name = resourceLocation.getPath(); - Optional pattern = Patterns.createJson(Patterns.BLOCK_TRAPDOOR, new HashMap() { + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_TRAPDOOR, new HashMap() { private static final long serialVersionUID = 1L; { - put("%block%", name); - put("%texture%", name.replace("trapdoor", "door_side")); + put("%texture%", name); + put("%side%", name.replace("trapdoor", "door_side")); } }); return ModelsHelper.fromPattern(pattern); @@ -77,7 +78,6 @@ public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, y = (isTop && isOpen) ? 0 : 180; break; case WEST: - default: y = (isTop && isOpen) ? 90 : 270; break; } diff --git a/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java b/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java index eb61ee40..5ef38d66 100644 --- a/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java @@ -14,7 +14,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.Material; -public class BaseUnderwaterWallPlantBlock extends BaseWallPlantBlock implements LiquidBlockContainer { +public abstract class BaseUnderwaterWallPlantBlock extends BaseWallPlantBlock implements LiquidBlockContainer { public BaseUnderwaterWallPlantBlock() { super(FabricBlockSettings.of(Material.WATER_PLANT) diff --git a/src/main/java/ru/bclib/blocks/EndWallBlock.java b/src/main/java/ru/bclib/blocks/BaseWallBlock.java similarity index 85% rename from src/main/java/ru/bclib/blocks/EndWallBlock.java rename to src/main/java/ru/bclib/blocks/BaseWallBlock.java index db1ffe82..a88c82c8 100644 --- a/src/main/java/ru/bclib/blocks/EndWallBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallBlock.java @@ -19,15 +19,16 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WallSide; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndWallBlock extends WallBlock implements BlockModelProvider { +public class BaseWallBlock extends WallBlock implements BlockModelProvider { private final Block parent; - public EndWallBlock(Block source) { + public BaseWallBlock(Block source) { super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } @@ -40,7 +41,7 @@ public class EndWallBlock extends WallBlock implements BlockModelProvider { @Override public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = Patterns.createJson(Patterns.ITEM_WALL, parentId.getPath(), blockId.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_WALL, parentId); return ModelsHelper.fromPattern(pattern); } @@ -50,13 +51,13 @@ public class EndWallBlock extends WallBlock implements BlockModelProvider { String path = blockId.getPath(); Optional pattern = Optional.empty(); if (path.endsWith("_post")) { - pattern = Patterns.createJson(Patterns.BLOCK_WALL_POST, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_WALL_POST, parentId); } if (path.endsWith("_side")) { - pattern = Patterns.createJson(Patterns.BLOCK_WALL_SIDE, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_WALL_SIDE, parentId); } if (path.endsWith("_side_tall")) { - pattern = Patterns.createJson(Patterns.BLOCK_WALL_SIDE_TALL, parentId.getPath(), blockId.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_WALL_SIDE_TALL, parentId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java b/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java index 32378fee..d833e3fc 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java @@ -28,7 +28,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.util.BlocksHelper; -public class BaseWallPlantBlock extends BasePlantBlock { +public abstract class BaseWallPlantBlock extends BasePlantBlock { private static final EnumMap SHAPES = Maps.newEnumMap(ImmutableMap.of( Direction.NORTH, Block.box(1, 1, 8, 15, 15, 16), Direction.SOUTH, Block.box(1, 1, 0, 15, 15, 8), @@ -74,7 +74,7 @@ public class BaseWallPlantBlock extends BasePlantBlock { @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); + Direction direction = state.getValue(FACING); BlockPos blockPos = pos.relative(direction.getOpposite()); BlockState blockState = world.getBlockState(blockPos); return isSupport(world, blockPos, blockState, direction); @@ -90,8 +90,7 @@ public class BaseWallPlantBlock extends BasePlantBlock { LevelReader worldView = ctx.getLevel(); BlockPos blockPos = ctx.getClickedPos(); Direction[] directions = ctx.getNearestLookingDirections(); - for (int i = 0; i < directions.length; ++i) { - Direction direction = directions[i]; + for (Direction direction : directions) { if (direction.getAxis().isHorizontal()) { Direction direction2 = direction.getOpposite(); blockState = blockState.setValue(FACING, direction2); diff --git a/src/main/java/ru/bclib/blocks/EndWeightedPlateBlock.java b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java similarity index 79% rename from src/main/java/ru/bclib/blocks/EndWeightedPlateBlock.java rename to src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java index ce87ac60..a1616678 100644 --- a/src/main/java/ru/bclib/blocks/EndWeightedPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java @@ -17,14 +17,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.WeightedPressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; -public class EndWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { +public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { private final Block parent; - public EndWeightedPlateBlock(Block source) { + public BaseWeightedPlateBlock(Block source) { super(15, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); this.parent = source; } @@ -44,9 +45,9 @@ public class EndWeightedPlateBlock extends WeightedPressurePlateBlock implements ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern; if (blockState.getValue(POWER) > 0) { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_DOWN, parentId.getPath(), resourceLocation.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_PLATE_DOWN, parentId); } else { - pattern = Patterns.createJson(Patterns.BLOCK_PLATE_UP, parentId.getPath(), resourceLocation.getPath()); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_PLATE_UP, parentId); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/EndWoodenButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java similarity index 82% rename from src/main/java/ru/bclib/blocks/EndWoodenButtonBlock.java rename to src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java index 531548bd..daab12c0 100644 --- a/src/main/java/ru/bclib/blocks/EndWoodenButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java @@ -5,9 +5,9 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; -public class EndWoodenButtonBlock extends EndButtonBlock { +public class BaseWoodenButtonBlock extends BaseButtonBlock { - public EndWoodenButtonBlock(Block source) { + public BaseWoodenButtonBlock(Block source) { super(source, FabricBlockSettings.copyOf(source).strength(0.5F, 0.5F).noOcclusion(), true); } diff --git a/src/main/java/ru/bclib/blocks/BlockProperties.java b/src/main/java/ru/bclib/blocks/BlockProperties.java new file mode 100644 index 00000000..58980d0b --- /dev/null +++ b/src/main/java/ru/bclib/blocks/BlockProperties.java @@ -0,0 +1,105 @@ +package ru.bclib.blocks; + +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +public class BlockProperties { + public static final EnumProperty CACTUS_BOTTOM = EnumProperty.create("bottom", CactusBottom.class); + public static final EnumProperty TRIPLE_SHAPE = EnumProperty.create("shape", TripleShape.class); + public static final EnumProperty PENTA_SHAPE = EnumProperty.create("shape", PentaShape.class); + + public static final BooleanProperty TRANSITION = BooleanProperty.create("transition"); + public static final BooleanProperty HAS_LIGHT = BooleanProperty.create("has_light"); + public static final BooleanProperty IS_FLOOR = BooleanProperty.create("is_floor"); + public static final BooleanProperty NATURAL = BooleanProperty.create("natural"); + public static final BooleanProperty ACTIVE = BooleanProperty.create("active"); + public static final BooleanProperty SMALL = BooleanProperty.create("small"); + + public static final IntegerProperty DESTRUCTION_LONG = IntegerProperty.create("destruction", 0, 8); + public static final IntegerProperty DESTRUCTION = IntegerProperty.create("destruction", 0, 2); + public static final IntegerProperty ROTATION = IntegerProperty.create("rotation", 0, 3); + public static final IntegerProperty FULLNESS = IntegerProperty.create("fullness", 0, 3); + public static final IntegerProperty COLOR = IntegerProperty.create("color", 0, 7); + public static final IntegerProperty SIZE = IntegerProperty.create("size", 0, 7); + public static final IntegerProperty AGE = IntegerProperty.create("age", 0, 3); + + public enum TripleShape implements StringRepresentable { + TOP("top", 0), + MIDDLE("middle", 1), + BOTTOM("bottom", 2); + + private final String name; + private final int index; + + TripleShape(String name, int index) { + this.name = name; + this.index = index; + } + + @Override + public String getSerializedName() { + return name; + } + + @Override + public String toString() { + return name; + } + + public int getIndex() { + return index; + } + + public static TripleShape fromIndex(int index) { + return index > 1 ? BOTTOM : index == 1 ? MIDDLE : TOP; + } + } + + public enum PentaShape implements StringRepresentable { + BOTTOM("bottom"), + PRE_BOTTOM("pre_bottom"), + MIDDLE("middle"), + PRE_TOP("pre_top"), + TOP("top"); + + private final String name; + + PentaShape(String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return name; + } + + @Override + public String toString() { + return name; + } + } + + public enum CactusBottom implements StringRepresentable { + EMPTY("empty"), + SAND("sand"), + MOSS("moss"); + + private final String name; + + CactusBottom(String name) { + this.name = name; + } + + @Override + public String getSerializedName() { + return name; + } + + @Override + public String toString() { + return name; + } + } +} diff --git a/src/main/java/ru/bclib/blocks/DoublePlantBlock.java b/src/main/java/ru/bclib/blocks/DoublePlantBlock.java index c258c2af..4a616d23 100644 --- a/src/main/java/ru/bclib/blocks/DoublePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/DoublePlantBlock.java @@ -34,13 +34,11 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.registry.EndTags; -import ru.betterend.util.BlocksHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; +import ru.bclib.util.BlocksHelper; -public class DoublePlantBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock { +public abstract class DoublePlantBlock extends BaseBlockNotFull implements IRenderTypeable, BonemealableBlock { private static final VoxelShape SHAPE = Block.box(4, 2, 4, 12, 16, 12); public static final IntegerProperty ROTATION = BlockProperties.ROTATION; public static final BooleanProperty TOP = BooleanProperty.create("top"); @@ -93,9 +91,7 @@ public class DoublePlantBlock extends BlockBaseNotFull implements IRenderTypeabl return state.getValue(TOP) ? down.getBlock() == this : isTerrain(down) && (up.getBlock() == this); } - protected boolean isTerrain(BlockState state) { - return state.is(EndTags.END_GROUND); - } + protected abstract boolean isTerrain(BlockState state); @Override public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { diff --git a/src/main/java/ru/bclib/blocks/EndBarrelBlock.java b/src/main/java/ru/bclib/blocks/EndBarrelBlock.java deleted file mode 100644 index 345d13e6..00000000 --- a/src/main/java/ru/bclib/blocks/EndBarrelBlock.java +++ /dev/null @@ -1,133 +0,0 @@ -package ru.bclib.blocks; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Random; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.BlockModelRotation; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.stats.Stats; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.monster.piglin.PiglinAi; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.BarrelBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.phys.BlockHitResult; -import ru.betterend.blocks.entities.EBarrelBlockEntity; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.registry.EndBlockEntities; - -public class EndBarrelBlock extends BarrelBlock implements BlockModelProvider { - public EndBarrelBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); - } - - @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return EndBlockEntities.BARREL.create(); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - List drop = super.getDrops(state, builder); - drop.add(new ItemStack(this.asItem())); - return drop; - } - - @Override - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, - BlockHitResult hit) { - if (world.isClientSide) { - return InteractionResult.SUCCESS; - } else { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EBarrelBlockEntity) { - player.openMenu((EBarrelBlockEntity) blockEntity); - player.awardStat(Stats.OPEN_BARREL); - PiglinAi.angerNearbyPiglins(player, true); - } - - return InteractionResult.CONSUME; - } - } - - @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EBarrelBlockEntity) { - ((EBarrelBlockEntity) blockEntity).tick(); - } - } - - @Override - public RenderShape getRenderShape(BlockState state) { - return RenderShape.MODEL; - } - - @Override - public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, - ItemStack itemStack) { - if (itemStack.hasCustomHoverName()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EBarrelBlockEntity) { - ((EBarrelBlockEntity) blockEntity).setCustomName(itemStack.getHoverName()); - } - } - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - return getBlockModel(blockId, defaultBlockState()); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - String texture = blockId.getPath(); - Optional pattern; - if (blockState.getValue(OPEN)) { - pattern = Patterns.createJson(Patterns.BLOCK_BARREL_OPEN, texture, texture); - } else { - pattern = Patterns.createJson(Patterns.BLOCK_BOTTOM_TOP, texture, texture); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String open = blockState.getValue(OPEN) ? "_open" : ""; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + open); - registerBlockModel(stateId, modelId, blockState, modelCache); - Direction facing = blockState.getValue(FACING); - BlockModelRotation rotation = BlockModelRotation.X0_Y0; - switch (facing) { - case NORTH: rotation = BlockModelRotation.X90_Y0; break; - case EAST: rotation = BlockModelRotation.X90_Y90; break; - case SOUTH: rotation = BlockModelRotation.X90_Y180; break; - case WEST: rotation = BlockModelRotation.X90_Y270; break; - case DOWN: - default: rotation = BlockModelRotation.X180_Y0; break; - } - return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), false); - } -} diff --git a/src/main/java/ru/bclib/blocks/EndChestBlock.java b/src/main/java/ru/bclib/blocks/EndChestBlock.java deleted file mode 100644 index a71742d1..00000000 --- a/src/main/java/ru/bclib/blocks/EndChestBlock.java +++ /dev/null @@ -1,57 +0,0 @@ -package ru.bclib.blocks; - -import java.util.List; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.core.Registry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.ChestBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.registry.EndBlockEntities; - -public class EndChestBlock extends ChestBlock implements BlockModelProvider { - private final Block parent; - - public EndChestBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion(), () -> EndBlockEntities.CHEST); - this.parent = source; - } - - @Override - public BlockEntity newBlockEntity(BlockGetter world) - { - return EndBlockEntities.CHEST.create(); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) - { - List drop = super.getDrops(state, builder); - drop.add(new ItemStack(this.asItem())); - return drop; - } - - @Override - public BlockModel getItemModel(ResourceLocation blockId) { - Optional pattern = Patterns.createJson(Patterns.ITEM_CHEST, blockId.getPath()); - return ModelsHelper.fromPattern(pattern); - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - return ModelsHelper.createBlockEmpty(parentId); - } -} diff --git a/src/main/java/ru/bclib/blocks/EndFurnaceBlock.java b/src/main/java/ru/bclib/blocks/EndFurnaceBlock.java deleted file mode 100644 index 3775a44d..00000000 --- a/src/main/java/ru/bclib/blocks/EndFurnaceBlock.java +++ /dev/null @@ -1,104 +0,0 @@ -package ru.bclib.blocks; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.stats.Stats; -import net.minecraft.world.MenuProvider; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.FurnaceBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import ru.betterend.blocks.entities.EFurnaceBlockEntity; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; - -public class EndFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTypeable { - public EndFurnaceBlock(Block source) { - super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); - } - - @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return new EFurnaceBlockEntity(); - } - - @Override - protected void openContainer(Level world, BlockPos pos, Player player) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EFurnaceBlockEntity) { - player.openMenu((MenuProvider) blockEntity); - player.awardStat(Stats.INTERACT_WITH_FURNACE); - } - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { - String blockName = blockId.getPath(); - Map textures = Maps.newHashMap(); - textures.put("%top%", blockName + "_top"); - textures.put("%side%", blockName + "_side"); - Optional pattern; - if (blockState.getValue(LIT)) { - textures.put("%front%", blockName + "_front_on"); - textures.put("%glow%", blockName + "_glow"); - pattern = Patterns.createJson(Patterns.BLOCK_FURNACE_LIT, textures); - } else { - textures.put("%front%", blockName + "_front"); - pattern = Patterns.createJson(Patterns.BLOCK_FURNACE, textures); - } - return ModelsHelper.fromPattern(pattern); - } - - @Override - public BlockModel getItemModel(ResourceLocation resourceLocation) { - return getBlockModel(resourceLocation, defaultBlockState()); - } - - @Override - public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - String lit = blockState.getValue(LIT) ? "_lit" : ""; - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath() + lit); - registerBlockModel(stateId, modelId, blockState, modelCache); - return ModelsHelper.createFacingModel(modelId, blockState.getValue(FACING), false, true); - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.CUTOUT; - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - List drop = Lists.newArrayList(new ItemStack(this)); - BlockEntity blockEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); - if (blockEntity instanceof EFurnaceBlockEntity) { - EFurnaceBlockEntity entity = (EFurnaceBlockEntity) blockEntity; - for (int i = 0; i < entity.getContainerSize(); i++) { - drop.add(entity.getItem(i)); - } - } - return drop; - } -} diff --git a/src/main/java/ru/bclib/blocks/EndSignBlock.java b/src/main/java/ru/bclib/blocks/EndSignBlock.java deleted file mode 100644 index 9125c676..00000000 --- a/src/main/java/ru/bclib/blocks/EndSignBlock.java +++ /dev/null @@ -1,197 +0,0 @@ -package ru.bclib.blocks; - -import java.util.Collections; -import java.util.List; - -import org.jetbrains.annotations.Nullable; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.Registry; -import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.Mirror; -import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.block.state.properties.WoodType; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.storage.loot.LootContext; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.entities.ESignBlockEntity; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.interfaces.ISpetialItem; -import ru.betterend.util.BlocksHelper; - -public class EndSignBlock extends SignBlock implements BlockModelProvider, ISpetialItem { - public static final IntegerProperty ROTATION = BlockStateProperties.ROTATION_16; - public static final BooleanProperty FLOOR = BooleanProperty.create("floor"); - private static final VoxelShape[] WALL_SHAPES = new VoxelShape[] { - Block.box(0.0D, 4.5D, 14.0D, 16.0D, 12.5D, 16.0D), - Block.box(0.0D, 4.5D, 0.0D, 2.0D, 12.5D, 16.0D), - Block.box(0.0D, 4.5D, 0.0D, 16.0D, 12.5D, 2.0D), - Block.box(14.0D, 4.5D, 0.0D, 16.0D, 12.5D, 16.0D) - }; - - private final Block parent; - - public EndSignBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(1.0F, 1.0F).noCollission().noOcclusion(), WoodType.OAK); - this.registerDefaultState(this.stateDefinition.any().setValue(ROTATION, 0).setValue(FLOOR, false).setValue(WATERLOGGED, false)); - this.parent = source; - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { - builder.add(ROTATION, FLOOR, WATERLOGGED); - } - - @Override - public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - return state.getValue(FLOOR) ? SHAPE : WALL_SHAPES[state.getValue(ROTATION) >> 2]; - } - - @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return new ESignBlockEntity(); - } - - @Override - public void setPlacedBy(Level world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { - if (placer instanceof Player) { - ESignBlockEntity sign = (ESignBlockEntity) world.getBlockEntity(pos); - if (sign != null) { - if (!world.isClientSide) { - sign.setAllowedPlayerEditor((Player) placer); - ((ServerPlayer) placer).connection.send(new ClientboundOpenSignEditorPacket(pos)); - } else { - sign.setEditable(true); - } - } - } - } - - @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { - if ((Boolean) state.getValue(WATERLOGGED)) { - world.getLiquidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); - } - if (!canSurvive(state, world, pos)) { - return state.getValue(WATERLOGGED) ? state.getFluidState().createLegacyBlock() : Blocks.AIR.defaultBlockState(); - } - return super.updateShape(state, facing, neighborState, world, pos, neighborPos); - } - - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - if (!state.getValue(FLOOR)) { - int index = (((state.getValue(ROTATION) >> 2) + 2)) & 3; - return world.getBlockState(pos.relative(BlocksHelper.HORIZONTAL[index])).getMaterial().isSolid(); - } - else { - return world.getBlockState(pos.below()).getMaterial().isSolid(); - } - } - - @Override - public BlockState getStateForPlacement(BlockPlaceContext ctx) { - if (ctx.getClickedFace() == Direction.UP) { - FluidState fluidState = ctx.getLevel().getFluidState(ctx.getClickedPos()); - return this.defaultBlockState().setValue(FLOOR, true) - .setValue(ROTATION, Mth.floor((180.0 + ctx.getRotation() * 16.0 / 360.0) + 0.5 - 12) & 15) - .setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); - } - else if (ctx.getClickedFace() != Direction.DOWN) { - BlockState blockState = this.defaultBlockState(); - FluidState fluidState = ctx.getLevel().getFluidState(ctx.getClickedPos()); - LevelReader worldView = ctx.getLevel(); - BlockPos blockPos = ctx.getClickedPos(); - Direction[] directions = ctx.getNearestLookingDirections(); - - for (Direction direction : directions) { - if (direction.getAxis().isHorizontal()) { - Direction dir = direction.getOpposite(); - int rot = Mth.floor((180.0 + dir.toYRot() * 16.0 / 360.0) + 0.5 + 4) & 15; - blockState = blockState.setValue(ROTATION, rot); - if (blockState.canSurvive(worldView, blockPos)) { - return blockState.setValue(FLOOR, false).setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); - } - } - } - } - - return null; - } - - @Override - public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - ResourceLocation parentId = Registry.BLOCK.getKey(parent); - return ModelsHelper.createBlockEmpty(parentId); - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - return (BlockState) state.setValue(ROTATION, rotation.rotate((Integer) state.getValue(ROTATION), 16)); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - return (BlockState) state.setValue(ROTATION, mirror.mirror((Integer) state.getValue(ROTATION), 16)); - } - - @Override - public List getDrops(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public Fluid takeLiquid(LevelAccessor world, BlockPos pos, BlockState state) { - // TODO Auto-generated method stub - return null; - } - - @Override - public boolean canPlaceLiquid(BlockGetter world, BlockPos pos, BlockState state, Fluid fluid) { - // TODO Auto-generated method stub - return false; - } - - @Override - public boolean placeLiquid(LevelAccessor world, BlockPos pos, BlockState state, FluidState fluidState) { - // TODO Auto-generated method stub - return false; - } - - @Override - public int getStackSize() { - return 16; - } - - @Override - public boolean canPlaceOnWater() { - return false; - } -} \ No newline at end of file diff --git a/src/main/java/ru/bclib/blocks/EndStonePlateBlock.java b/src/main/java/ru/bclib/blocks/EndStonePlateBlock.java deleted file mode 100644 index 38483da1..00000000 --- a/src/main/java/ru/bclib/blocks/EndStonePlateBlock.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.bclib.blocks; - -import net.minecraft.world.level.block.Block; - -public class EndStonePlateBlock extends EndPlateBlock { - public EndStonePlateBlock(Block source) { - super(Sensitivity.MOBS, source); - } -} diff --git a/src/main/java/ru/bclib/blocks/EndWoodenPlateBlock.java b/src/main/java/ru/bclib/blocks/EndWoodenPlateBlock.java deleted file mode 100644 index 80138c46..00000000 --- a/src/main/java/ru/bclib/blocks/EndWoodenPlateBlock.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.bclib.blocks; - -import net.minecraft.world.level.block.Block; - -public class EndWoodenPlateBlock extends EndPlateBlock { - public EndWoodenPlateBlock(Block source) { - super(Sensitivity.EVERYTHING, source); - } -} diff --git a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java index 13b88cf3..6341cd64 100644 --- a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java +++ b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java @@ -28,12 +28,12 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.client.models.BlockModelProvider; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.registry.EndTags; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.BlockModelProvider; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; public abstract class FeatureSaplingBlock extends SaplingBlock implements IRenderTypeable, BlockModelProvider { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); @@ -69,11 +69,6 @@ public abstract class FeatureSaplingBlock extends SaplingBlock implements IRende return SHAPE; } - @Override - public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - return world.getBlockState(pos.below()).is(EndTags.END_GROUND); - } - @Override public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { if (!canSurvive(state, world, pos)) @@ -117,7 +112,7 @@ public abstract class FeatureSaplingBlock extends SaplingBlock implements IRende @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_CROSS, resourceLocation.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CROSS, resourceLocation); return ModelsHelper.fromPattern(pattern); } } diff --git a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java index fd2b4012..b95c5f1e 100644 --- a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java @@ -4,10 +4,10 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class SimpleLeavesBlock extends BlockBaseNotFull implements IRenderTypeable { +public class SimpleLeavesBlock extends BaseBlockNotFull implements IRenderTypeable { public SimpleLeavesBlock(MaterialColor color) { super(FabricBlockSettings.of(Material.LEAVES) .strength(0.2F) diff --git a/src/main/java/ru/bclib/blocks/StalactiteBlock.java b/src/main/java/ru/bclib/blocks/StalactiteBlock.java index dc6e3669..63dfbf71 100644 --- a/src/main/java/ru/bclib/blocks/StalactiteBlock.java +++ b/src/main/java/ru/bclib/blocks/StalactiteBlock.java @@ -35,12 +35,11 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; +import ru.bclib.client.render.ERenderLayer; import ru.bclib.interfaces.IRenderTypeable; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; public class StalactiteBlock extends BaseBlockNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer, IRenderTypeable { public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; @@ -202,7 +201,7 @@ public class StalactiteBlock extends BaseBlockNotFull implements SimpleWaterlogg @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - Optional pattern = Patterns.createJson(Patterns.BLOCK_CROSS_SHADED, resourceLocation.getPath()); + Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CROSS_SHADED, resourceLocation); return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/StrippableBarkBlock.java b/src/main/java/ru/bclib/blocks/StrippableBarkBlock.java index 60fb6f43..8738a3d9 100644 --- a/src/main/java/ru/bclib/blocks/StrippableBarkBlock.java +++ b/src/main/java/ru/bclib/blocks/StrippableBarkBlock.java @@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; -public class StrippableBarkBlock extends BarkBlock { +public class StrippableBarkBlock extends BaseBarkBlock { private final Block striped; public StrippableBarkBlock(MaterialColor color, Block striped) { diff --git a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java index 57d07c21..a168b40b 100644 --- a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java @@ -32,10 +32,10 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.client.models.ModelsHelper; -import ru.betterend.client.models.Patterns; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.client.models.BasePatterns; +import ru.bclib.client.models.ModelsHelper; +import ru.bclib.client.models.PatternsHelper; public class TripleTerrainBlock extends BaseTerrainBlock { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; @@ -110,16 +110,17 @@ public class TripleTerrainBlock extends BaseTerrainBlock { @Override public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { - String name = resourceLocation.getPath(); + String path = resourceLocation.getPath(); Optional pattern; if (isMiddle(blockState)) { - pattern = Patterns.createBlockSimple(name + "_top"); + ResourceLocation topId = new ResourceLocation(resourceLocation.getNamespace(), path + "_top"); + pattern = PatternsHelper.createBlockSimple(topId); } else { Map textures = Maps.newHashMap(); - textures.put("%top%", "betterend:block/" + name + "_top"); - textures.put("%side%", "betterend:block/" + name + "_side"); + textures.put("%top%", "betterend:block/" + path + "_top"); + textures.put("%side%", "betterend:block/" + path + "_side"); textures.put("%bottom%", "minecraft:block/end_stone"); - pattern = Patterns.createJson(Patterns.BLOCK_TOP_SIDE_BOTTOM, textures); + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_TOP_SIDE_BOTTOM, textures); } return ModelsHelper.fromPattern(pattern); } diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java index 239c974c..df7c5528 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java @@ -34,12 +34,10 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndTags; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class UnderwaterPlantBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock, LiquidBlockContainer { +public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements IRenderTypeable, BonemealableBlock, LiquidBlockContainer { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); public UnderwaterPlantBlock() { @@ -81,9 +79,7 @@ public class UnderwaterPlantBlock extends BlockBaseNotFull implements IRenderTyp return isTerrain(down) && state.getFluidState().getType().equals(Fluids.WATER.getSource()); } - protected boolean isTerrain(BlockState state) { - return state.is(EndTags.END_GROUND) || state.getBlock() == EndBlocks.ENDSTONE_DUST; - } + protected abstract boolean isTerrain(BlockState state); @Override public BlockState updateShape(BlockState state, Direction facing, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java index 0f8176c4..fb7870b8 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java @@ -13,7 +13,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.Material; -import ru.betterend.blocks.BlockProperties; public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock { public static final IntegerProperty AGE = BlockProperties.AGE; diff --git a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java index 0a036e9c..ce4c0fe5 100644 --- a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java @@ -26,11 +26,10 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.registry.EndTags; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; -public class UpDownPlantBlock extends BlockBaseNotFull implements IRenderTypeable { +public abstract class UpDownPlantBlock extends BaseBlockNotFull implements IRenderTypeable { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); public UpDownPlantBlock() { @@ -41,6 +40,8 @@ public class UpDownPlantBlock extends BlockBaseNotFull implements IRenderTypeabl .noCollission()); } + protected abstract boolean isTerrain(BlockState state); + @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { return SHAPE; @@ -53,10 +54,6 @@ public class UpDownPlantBlock extends BlockBaseNotFull implements IRenderTypeabl return (isTerrain(down) || down.getBlock() == this) && (isSupport(up, world, pos) || up.getBlock() == this); } - protected boolean isTerrain(BlockState state) { - return state.is(EndTags.END_GROUND); - } - protected boolean isSupport(BlockState state, LevelReader world, BlockPos pos) { return canSupportCenter(world, pos.above(), Direction.UP); } diff --git a/src/main/java/ru/bclib/blocks/VineBlock.java b/src/main/java/ru/bclib/blocks/VineBlock.java index dcd87d41..e091196b 100644 --- a/src/main/java/ru/bclib/blocks/VineBlock.java +++ b/src/main/java/ru/bclib/blocks/VineBlock.java @@ -32,13 +32,12 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.BlockProperties.TripleShape; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.util.BlocksHelper; +import ru.bclib.blocks.BlockProperties.TripleShape; +import ru.bclib.client.render.ERenderLayer; +import ru.bclib.interfaces.IRenderTypeable; +import ru.bclib.util.BlocksHelper; -public class VineBlock extends BlockBaseNotFull implements IRenderTypeable, BonemealableBlock { +public class VineBlock extends BaseBlockNotFull implements IRenderTypeable, BonemealableBlock { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape VOXEL_SHAPE = Block.box(2, 0, 2, 14, 16, 14); diff --git a/src/main/java/ru/bclib/blocks/WallMushroomBlock.java b/src/main/java/ru/bclib/blocks/WallMushroomBlock.java index c4e5fa1d..5e910e70 100644 --- a/src/main/java/ru/bclib/blocks/WallMushroomBlock.java +++ b/src/main/java/ru/bclib/blocks/WallMushroomBlock.java @@ -15,7 +15,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; import net.minecraft.world.level.storage.loot.LootContext; -public class WallMushroomBlock extends BaseWallPlantBlock { +public abstract class WallMushroomBlock extends BaseWallPlantBlock { public WallMushroomBlock(int light) { super(FabricBlockSettings.of(Material.PLANT) .breakByTool(FabricToolTags.AXES)