diff --git a/src/main/java/ru/betterend/blocks/basis/BlockBase.java b/src/main/java/ru/betterend/blocks/basis/BlockBase.java index 5c363b2a..0d287f3e 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockBase.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockBase.java @@ -23,9 +23,9 @@ public class BlockBase extends Block implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockChest.java b/src/main/java/ru/betterend/blocks/basis/BlockChest.java index e0e31439..f3c14c47 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockChest.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockChest.java @@ -1,5 +1,6 @@ package ru.betterend.blocks.basis; +import java.io.Reader; import java.util.List; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -9,15 +10,21 @@ import net.minecraft.block.ChestBlock; import net.minecraft.block.entity.BlockEntity; import net.minecraft.item.ItemStack; import net.minecraft.loot.context.LootContext; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import net.minecraft.world.BlockView; +import ru.betterend.interfaces.Patterned; import ru.betterend.registry.BlockEntityRegistry; -public class BlockChest extends ChestBlock -{ +public class BlockChest extends ChestBlock implements Patterned { + + private final Block parent; + public BlockChest(Block source) { super(FabricBlockSettings.copyOf(source).nonOpaque(), () -> { return BlockEntityRegistry.CHEST; }); + this.parent = source; } @Override @@ -33,4 +40,26 @@ public class BlockChest extends ChestBlock drop.add(new ItemStack(this.asItem())); return drop; } + + @Override + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); + Identifier parentId = Registry.BLOCK.getId(parent); + return Patterned.createJson(data, parentId, blockId.getPath()); + } + + @Override + public String getModelPattern(String path) { + Identifier blockId = Registry.BLOCK.getId(this); + Identifier parentId = Registry.BLOCK.getId(parent); + if (path.contains("item")) { + return Patterned.createJson(Patterned.CHEST_ITEM_MODEL, blockId.getPath()); + } + return Patterned.createJson(Patterned.EMPTY_MODEL, parentId.getPath()); + } + + @Override + public Identifier statePatternId() { + return Patterned.BLOCK_STATES_PATTERN; + } } diff --git a/src/main/java/ru/betterend/blocks/basis/BlockCraftingTable.java b/src/main/java/ru/betterend/blocks/basis/BlockCraftingTable.java index e65ef5ff..f928e368 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockCraftingTable.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockCraftingTable.java @@ -26,9 +26,9 @@ public class BlockCraftingTable extends CraftingTableBlock implements Patterned } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockDoor.java b/src/main/java/ru/betterend/blocks/basis/BlockDoor.java index 0b1552e3..78db05e5 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockDoor.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockDoor.java @@ -36,9 +36,9 @@ public class BlockDoor extends DoorBlock implements IRenderTypeable, Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java b/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java index 10dbe528..7d1f7938 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java @@ -102,9 +102,9 @@ public abstract class BlockFeatureSapling extends BlockBaseNotFull implements Fe } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockFence.java b/src/main/java/ru/betterend/blocks/basis/BlockFence.java index b08f3f43..f09bf79a 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockFence.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockFence.java @@ -29,9 +29,10 @@ public class BlockFence extends FenceBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockGate.java b/src/main/java/ru/betterend/blocks/basis/BlockGate.java index 2c45acfc..0268a1b1 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockGate.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockGate.java @@ -29,9 +29,10 @@ public class BlockGate extends FenceGateBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockLadder.java b/src/main/java/ru/betterend/blocks/basis/BlockLadder.java index 7bfd710e..b896e222 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockLadder.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockLadder.java @@ -137,9 +137,9 @@ public class BlockLadder extends BlockBaseNotFull implements IRenderTypeable, Pa } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockPillar.java b/src/main/java/ru/betterend/blocks/basis/BlockPillar.java index 6af5e8d5..f389d92a 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockPillar.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockPillar.java @@ -23,9 +23,9 @@ public class BlockPillar extends PillarBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockPressurePlate.java b/src/main/java/ru/betterend/blocks/basis/BlockPressurePlate.java index d1fc9a4a..2a0bffd9 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockPressurePlate.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockPressurePlate.java @@ -29,9 +29,10 @@ public class BlockPressurePlate extends PressurePlateBlock implements Patterned } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockSign.java b/src/main/java/ru/betterend/blocks/basis/BlockSign.java index 9976aa48..30ec6cfb 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockSign.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockSign.java @@ -1,5 +1,7 @@ package ru.betterend.blocks.basis; +import java.io.Reader; + import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.AbstractSignBlock; import net.minecraft.block.Block; @@ -21,19 +23,22 @@ import net.minecraft.state.property.IntProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.SignType; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.registry.Registry; import net.minecraft.util.shape.VoxelShape; import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; import ru.betterend.blocks.entities.ESignBlockEntity; +import ru.betterend.interfaces.Patterned; -public class BlockSign extends AbstractSignBlock { +public class BlockSign extends AbstractSignBlock implements Patterned { public static final IntProperty ROTATION = Properties.ROTATION; public static final BooleanProperty FLOOR = BooleanProperty.of("floor"); private static final VoxelShape[] WALL_SHAPES = new VoxelShape[] { @@ -42,9 +47,12 @@ public class BlockSign extends AbstractSignBlock { Block.createCuboidShape(0.0D, 4.5D, 0.0D, 16.0D, 12.5D, 2.0D), Block.createCuboidShape(14.0D, 4.5D, 0.0D, 16.0D, 12.5D, 16.0D) }; + private final Block parent; + public BlockSign(Block source) { super(FabricBlockSettings.copyOf(source).noCollision().nonOpaque(), SignType.OAK); this.setDefaultState(this.stateManager.getDefaultState().with(ROTATION, 0).with(FLOOR, true).with(WATERLOGGED, false)); + this.parent = source; } @Override @@ -139,4 +147,26 @@ public class BlockSign extends AbstractSignBlock { return null; } + + @Override + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); + Identifier parentId = Registry.BLOCK.getId(parent); + return Patterned.createJson(data, parentId, blockId.getPath()); + } + + @Override + public String getModelPattern(String path) { + Identifier blockId = Registry.BLOCK.getId(this); + Identifier parentId = Registry.BLOCK.getId(parent); + if (path.contains("item")) { + return Patterned.createJson(Patterned.ITEM_MODEL, blockId.getPath()); + } + return Patterned.createJson(Patterned.EMPTY_MODEL, parentId.getPath()); + } + + @Override + public Identifier statePatternId() { + return Patterned.BLOCK_STATES_PATTERN; + } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/BlockSlab.java b/src/main/java/ru/betterend/blocks/basis/BlockSlab.java index 6b91d6b1..fafbe19a 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockSlab.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockSlab.java @@ -29,9 +29,10 @@ public class BlockSlab extends SlabBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockStairs.java b/src/main/java/ru/betterend/blocks/basis/BlockStairs.java index dba7588d..96f56656 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockStairs.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockStairs.java @@ -29,9 +29,10 @@ public class BlockStairs extends StairsBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockStoneButton.java b/src/main/java/ru/betterend/blocks/basis/BlockStoneButton.java index 214c31d1..3c9d6d43 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockStoneButton.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockStoneButton.java @@ -31,9 +31,10 @@ public class BlockStoneButton extends StoneButtonBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockStonePressurePlate.java b/src/main/java/ru/betterend/blocks/basis/BlockStonePressurePlate.java index 9256cb72..ab75866d 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockStonePressurePlate.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockStonePressurePlate.java @@ -29,9 +29,10 @@ public class BlockStonePressurePlate extends PressurePlateBlock implements Patte } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java b/src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java index 24a797a2..945e1be8 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockTrapdoor.java @@ -35,9 +35,9 @@ public class BlockTrapdoor extends TrapdoorBlock implements IRenderTypeable, Pat } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { Identifier blockId = Registry.BLOCK.getId(this); - return Patterned.createJson(data, blockId, block); + return Patterned.createJson(data, blockId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockWall.java b/src/main/java/ru/betterend/blocks/basis/BlockWall.java index 783f6ac3..7e511f38 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockWall.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockWall.java @@ -29,9 +29,10 @@ public class BlockWall extends WallBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/BlockWoodenButton.java b/src/main/java/ru/betterend/blocks/basis/BlockWoodenButton.java index 361afbd7..87fe7d29 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockWoodenButton.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockWoodenButton.java @@ -29,9 +29,10 @@ public class BlockWoodenButton extends WoodenButtonBlock implements Patterned { } @Override - public String getStatesPattern(Reader data, String block) { + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); Identifier parentId = Registry.BLOCK.getId(parent); - return Patterned.createJson(data, parentId, block); + return Patterned.createJson(data, parentId, blockId.getPath()); } @Override diff --git a/src/main/java/ru/betterend/interfaces/Patterned.java b/src/main/java/ru/betterend/interfaces/Patterned.java index 5b055f4d..e775b98c 100644 --- a/src/main/java/ru/betterend/interfaces/Patterned.java +++ b/src/main/java/ru/betterend/interfaces/Patterned.java @@ -31,6 +31,7 @@ public interface Patterned { public final static Identifier LADDER_STATES_PATTERN = BetterEnd.makeID("patterns/blockstate/pattern_ladder.json"); //Models Block + public final static Identifier EMPTY_MODEL = BetterEnd.makeID("patterns/block/pattern_empty.json"); public final static Identifier BASE_BLOCK_MODEL = BetterEnd.makeID("patterns/block/pattern_block.json"); public final static Identifier SIDED_BLOCK_MODEL = BetterEnd.makeID("patterns/block/pattern_block_sided.json"); public final static Identifier SLAB_BLOCK_MODEL = BetterEnd.makeID("patterns/block/pattern_slab.json"); @@ -64,9 +65,10 @@ public interface Patterned { public final static Identifier FENCE_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_fence.json"); public final static Identifier BUTTON_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_button.json"); public final static Identifier LADDER_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_ladder.json"); + public final static Identifier CHEST_ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_chest.json"); public final static Identifier ITEM_MODEL = BetterEnd.makeID("patterns/item/pattern_item.json"); - default String getStatesPattern(Reader data, String name) { + default String getStatesPattern(Reader data) { return null; } @@ -82,11 +84,11 @@ public interface Patterned { return null; } - public static String createJson(Reader data, Identifier parent, String block) { + public static String createJson(Reader data, Identifier parent, String name) { try (BufferedReader buffer = new BufferedReader(data)) { return buffer.lines().collect(Collectors.joining()) .replace("%parent%", parent.getPath()) - .replace("%block%", block); + .replace("%block%", name); } catch (Exception ex) { return null; } diff --git a/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java index 1f196650..311345f2 100644 --- a/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java +++ b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java @@ -34,7 +34,7 @@ public abstract class ModelVariantMapMixin { Block block = Registry.BLOCK.get(blockId); idContext.removeId(); if (block instanceof Patterned) { - String pattern = ((Patterned) block).getStatesPattern(reader, data[1]); + String pattern = ((Patterned) block).getStatesPattern(reader); info.setReturnValue(deserialize(context, new StringReader(pattern))); info.cancel(); } diff --git a/src/main/resources/assets/betterend/blockstates/pythadendron_chest.json b/src/main/resources/assets/betterend/blockstates/pythadendron_chest.json deleted file mode 100644 index 1b44c22c..00000000 --- a/src/main/resources/assets/betterend/blockstates/pythadendron_chest.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "betterend:block/pythadendron_empty" - } - } -} diff --git a/src/main/resources/assets/betterend/blockstates/pythadendron_sign.json b/src/main/resources/assets/betterend/blockstates/pythadendron_sign.json deleted file mode 100644 index 1b44c22c..00000000 --- a/src/main/resources/assets/betterend/blockstates/pythadendron_sign.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "betterend:block/pythadendron_empty" - } - } -} diff --git a/src/main/resources/assets/betterend/models/block/pythadendron_empty.json b/src/main/resources/assets/betterend/models/block/pythadendron_empty.json deleted file mode 100644 index b460ca89..00000000 --- a/src/main/resources/assets/betterend/models/block/pythadendron_empty.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "betterend:block/pythadendron_planks" - } -} diff --git a/src/main/resources/assets/betterend/models/item/pythadendron_chest.json b/src/main/resources/assets/betterend/models/item/pythadendron_chest.json deleted file mode 100644 index 6f8bc89e..00000000 --- a/src/main/resources/assets/betterend/models/item/pythadendron_chest.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "betterend:block/chest_item", - "textures": { - "texture": "betterend:entity/chest/pythadendron_chest" - } -} diff --git a/src/main/resources/assets/betterend/models/item/pythadendron_sign.json b/src/main/resources/assets/betterend/models/item/pythadendron_sign.json deleted file mode 100644 index e4e9b106..00000000 --- a/src/main/resources/assets/betterend/models/item/pythadendron_sign.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "betterend:item/pythadendron_sign" - } -} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_empty.json b/src/main/resources/assets/betterend/patterns/block/pattern_empty.json new file mode 100644 index 00000000..9008f821 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/pattern_empty.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_chest.json b/src/main/resources/assets/betterend/patterns/item/pattern_chest.json new file mode 100644 index 00000000..1febc69c --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/item/pattern_chest.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/chest_item", + "textures": { + "texture": "betterend:entity/chest/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/textures/entity/sign/chorus_sign.png b/src/main/resources/assets/betterend/textures/entity/sign/pythadendron_sign.png similarity index 100% rename from src/main/resources/assets/betterend/textures/entity/sign/chorus_sign.png rename to src/main/resources/assets/betterend/textures/entity/sign/pythadendron_sign.png