diff --git a/src/main/java/ru/betterend/blocks/BulbVineLanternBlock.java b/src/main/java/ru/betterend/blocks/BulbVineLanternBlock.java index ef807ff6..f9d3e114 100644 --- a/src/main/java/ru/betterend/blocks/BulbVineLanternBlock.java +++ b/src/main/java/ru/betterend/blocks/BulbVineLanternBlock.java @@ -21,10 +21,10 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.betterend.blocks.basis.EndLanternBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class BulbVineLanternBlock extends EndLanternBlock implements IRenderTypeable, BlockPatterned { +public class BulbVineLanternBlock extends EndLanternBlock implements IRenderTypeable, BlockModelProvider { private static final VoxelShape SHAPE_CEIL = Block.box(4, 4, 4, 12, 16, 12); private static final VoxelShape SHAPE_FLOOR = Block.box(4, 0, 4, 12, 12, 12); diff --git a/src/main/java/ru/betterend/blocks/ChandelierBlock.java b/src/main/java/ru/betterend/blocks/ChandelierBlock.java index ee8d2314..24cd210e 100644 --- a/src/main/java/ru/betterend/blocks/ChandelierBlock.java +++ b/src/main/java/ru/betterend/blocks/ChandelierBlock.java @@ -19,10 +19,10 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.betterend.blocks.basis.AttachedBlock; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class ChandelierBlock extends AttachedBlock implements IRenderTypeable, BlockPatterned { +public class ChandelierBlock extends AttachedBlock implements IRenderTypeable, BlockModelProvider { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); public ChandelierBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/EmeraldIceBlock.java b/src/main/java/ru/betterend/blocks/EmeraldIceBlock.java index 2072296e..56dd1084 100644 --- a/src/main/java/ru/betterend/blocks/EmeraldIceBlock.java +++ b/src/main/java/ru/betterend/blocks/EmeraldIceBlock.java @@ -27,10 +27,10 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EmeraldIceBlock extends HalfTransparentBlock implements IRenderTypeable, BlockPatterned { +public class EmeraldIceBlock extends HalfTransparentBlock implements IRenderTypeable, BlockModelProvider { public EmeraldIceBlock() { super(FabricBlockSettings.copyOf(Blocks.ICE)); } diff --git a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java index 20d49a70..f535bfe4 100644 --- a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java +++ b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java @@ -25,11 +25,11 @@ import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IColorProvider; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.noise.OpenSimplexNoise; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.util.MHelper; -public class JellyshroomCapBlock extends SlimeBlock implements IRenderTypeable, BlockPatterned, IColorProvider { +public class JellyshroomCapBlock extends SlimeBlock implements IRenderTypeable, BlockModelProvider, IColorProvider { public static final IntegerProperty COLOR = BlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); private final Vec3i colorStart; diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java index 4afa53f5..6df4e4ff 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java @@ -26,12 +26,12 @@ import net.minecraft.world.level.storage.loot.LootContext; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.noise.OpenSimplexNoise; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndBlocks; import ru.betterend.util.MHelper; -public class UmbrellaTreeMembraneBlock extends SlimeBlock implements IRenderTypeable, BlockPatterned { +public class UmbrellaTreeMembraneBlock extends SlimeBlock implements IRenderTypeable, BlockModelProvider { public static final IntegerProperty COLOR = BlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); diff --git a/src/main/java/ru/betterend/blocks/basis/BarkBlock.java b/src/main/java/ru/betterend/blocks/basis/BarkBlock.java index ed4b7e52..d8d1f511 100644 --- a/src/main/java/ru/betterend/blocks/basis/BarkBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/BarkBlock.java @@ -3,9 +3,12 @@ package ru.betterend.blocks.basis; import java.io.Reader; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.MultiVariant; +import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; +import org.apache.commons.lang3.tuple.Triple; import ru.betterend.patterns.Patterns; public class BarkBlock extends EndPillarBlock { @@ -26,7 +29,7 @@ public class BarkBlock extends EndPillarBlock { } @Override - public BlockModel getBlockModel(BlockState blockState) { + public Triple getBlockModels(BlockState blockState) { return null; } diff --git a/src/main/java/ru/betterend/blocks/basis/BlockBase.java b/src/main/java/ru/betterend/blocks/basis/BlockBase.java index 7f7edeac..983b5c6f 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockBase.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockBase.java @@ -5,16 +5,18 @@ import java.util.Collections; import java.util.List; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.MultiVariant; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import org.apache.commons.lang3.tuple.Triple; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class BlockBase extends Block implements BlockPatterned { +public class BlockBase extends Block implements BlockModelProvider { public BlockBase(Properties settings) { super(settings); } @@ -37,8 +39,8 @@ public class BlockBase extends Block implements BlockPatterned { } @Override - public BlockModel getItemModel() { - return getBlockModel(defaultBlockState()); + public BlockModel getModel() { + return getBlockModels(defaultBlockState()); } @Override @@ -47,7 +49,7 @@ public class BlockBase extends Block implements BlockPatterned { } @Override - public BlockModel getBlockModel(BlockState blockState) { + public Triple getBlockModels(BlockState blockState) { return BlockModel.fromString(getModelString("")); } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java index 26447674..25116dad 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndAnvilBlock.java @@ -11,6 +11,7 @@ import com.mojang.math.Transformation; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.MultiVariant; +import net.minecraft.client.renderer.block.model.Variant; import net.minecraft.core.Direction; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -23,11 +24,12 @@ 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 org.apache.commons.lang3.tuple.Triple; import ru.betterend.blocks.BlockProperties; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndAnvilBlock extends AnvilBlock implements BlockPatterned { +public class EndAnvilBlock extends AnvilBlock implements BlockModelProvider { private static final IntegerProperty DESTRUCTION = BlockProperties.DESTRUCTION; protected final int level; @@ -73,11 +75,6 @@ public class EndAnvilBlock extends AnvilBlock implements BlockPatterned { return Patterns.createJson(Patterns.BLOCK_ANVIL, map); } - @Override - public BlockModel getItemModel() { - return getBlockModel(defaultBlockState()); - } - protected String getTop(ResourceLocation blockId, String block) { if (block.contains("item")) { return blockId.getPath() + "_top_0"; @@ -92,16 +89,25 @@ public class EndAnvilBlock extends AnvilBlock implements BlockPatterned { } @Override - public BlockModel getBlockModel(BlockState blockState) { + public BlockModel getModel() { + return null; + } + + @Override + public Triple getBlockModels(BlockState blockState) { Direction facing = blockState.getValue(FACING); int destruction = blockState.getValue(DESTRUCTION); - MultiVariant variant; - Transformation transform; ResourceLocation blockId = Registry.BLOCK.getKey(this); + ResourceLocation modelId = new ResourceLocation(blockId.getNamespace(), + blockId.getPath() + "/" + facing + "/destruction_" + destruction); + Transformation transform = new Transformation(null, facing.getRotation(), null, null); + Variant variant = new Variant(modelId, transform, false, 1); + MultiVariant weightedModel = new MultiVariant(Collections.singletonList(variant)); Map map = Maps.newHashMap(); map.put("%anvil%", blockId.getPath()); map.put("%top%", "_top_" + destruction); String jsonString = Patterns.createJson(Patterns.BLOCK_ANVIL, map); - return BlockModel.fromString(jsonString); + BlockModel blockModel = BlockModel.fromString(jsonString); + return Triple.of(modelId, weightedModel, blockModel); } } diff --git a/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java b/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java index ae0cd3e8..af0fcda4 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndBarrelBlock.java @@ -26,11 +26,11 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndBlockEntities; -public class EndBarrelBlock extends BarrelBlock implements BlockPatterned { +public class EndBarrelBlock extends BarrelBlock implements BlockModelProvider { public EndBarrelBlock(Block source) { super(FabricBlockSettings.copyOf(source).noOcclusion()); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java b/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java index 3707089c..8b27fc1f 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndChainBlock.java @@ -15,10 +15,10 @@ import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndChainBlock extends ChainBlock implements BlockPatterned, IRenderTypeable { +public class EndChainBlock extends ChainBlock implements BlockModelProvider, IRenderTypeable { public EndChainBlock(MaterialColor color) { super(FabricBlockSettings.copyOf(Blocks.CHAIN).materialColor(color)); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java b/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java index 15cd39f2..9841a47b 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndChestBlock.java @@ -13,11 +13,11 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndBlockEntities; -public class EndChestBlock extends ChestBlock implements BlockPatterned { +public class EndChestBlock extends ChestBlock implements BlockModelProvider { private final Block parent; public EndChestBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java b/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java index c2c46b0f..ac216b3b 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndComposterBlock.java @@ -12,10 +12,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndComposterBlock extends ComposterBlock implements BlockPatterned { +public class EndComposterBlock extends ComposterBlock implements BlockModelProvider { public EndComposterBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java b/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java index a4d9e401..b88b3f4c 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndCraftingTableBlock.java @@ -13,10 +13,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndCraftingTableBlock extends CraftingTableBlock implements BlockPatterned { +public class EndCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { public EndCraftingTableBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java b/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java index 5257f9cd..bc6ab64f 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndDoorBlock.java @@ -15,10 +15,10 @@ import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; import net.minecraft.world.level.storage.loot.LootContext; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndDoorBlock extends DoorBlock implements IRenderTypeable, BlockPatterned { +public class EndDoorBlock extends DoorBlock implements IRenderTypeable, BlockModelProvider { public EndDoorBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(3F, 3F).noOcclusion()); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java b/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java index 069b4d49..f8a72a9c 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndFenceBlock.java @@ -12,10 +12,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndFenceBlock extends FenceBlock implements BlockPatterned { +public class EndFenceBlock extends FenceBlock implements BlockModelProvider { private final Block parent; public EndFenceBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java b/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java index 6fcc0c9b..e65feba1 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndFurnaceBlock.java @@ -26,10 +26,10 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.betterend.blocks.entities.EFurnaceBlockEntity; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndFurnaceBlock extends FurnaceBlock implements BlockPatterned, IRenderTypeable { +public class EndFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTypeable { public EndFurnaceBlock(Block source) { super(FabricBlockSettings.copyOf(source).luminance((state) -> { return state.getValue(LIT) ? 13 : 0; diff --git a/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java index e7b6ec13..598de70c 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndGateBlock.java @@ -12,10 +12,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndGateBlock extends FenceGateBlock implements BlockPatterned { +public class EndGateBlock extends FenceGateBlock implements BlockModelProvider { private final Block parent; public EndGateBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java b/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java index 971e3a36..c20de554 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndLadderBlock.java @@ -27,11 +27,11 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.util.BlocksHelper; -public class EndLadderBlock extends BlockBaseNotFull implements IRenderTypeable, BlockPatterned { +public class EndLadderBlock extends BlockBaseNotFull 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); diff --git a/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java b/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java index dfa07ed5..3003667e 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndLeavesBlock.java @@ -22,11 +22,11 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.util.MHelper; -public class EndLeavesBlock extends LeavesBlock implements BlockPatterned, IRenderTypeable { +public class EndLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTypeable { private final Block sapling; public EndLeavesBlock(Block sapling, MaterialColor color) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java b/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java index fdd46e61..1d61adc5 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndMetalPaneBlock.java @@ -17,10 +17,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndMetalPaneBlock extends IronBarsBlock implements BlockPatterned, IRenderTypeable { +public class EndMetalPaneBlock extends IronBarsBlock implements BlockModelProvider, IRenderTypeable { public EndMetalPaneBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(5.0F, 6.0F).noOcclusion()); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndMetalPlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndMetalPlateBlock.java index d374bac1..238d4013 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndMetalPlateBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndMetalPlateBlock.java @@ -12,10 +12,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndMetalPlateBlock extends WeightedPressurePlateBlock implements BlockPatterned { +public class EndMetalPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { private final Block parent; public EndMetalPlateBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java b/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java index fb43e2cd..ca08c3e8 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndOreBlock.java @@ -20,11 +20,11 @@ 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.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.util.MHelper; -public class EndOreBlock extends OreBlock implements BlockPatterned { +public class EndOreBlock extends OreBlock implements BlockModelProvider { private final Item dropItem; private final int minCount; private final int maxCount; diff --git a/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java index ba52384a..279d225a 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPillarBlock.java @@ -13,10 +13,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public abstract class EndPillarBlock extends RotatedPillarBlock implements BlockPatterned { +public abstract class EndPillarBlock extends RotatedPillarBlock implements BlockModelProvider { public EndPillarBlock(Properties settings) { super(settings); } @@ -31,8 +31,8 @@ public abstract class EndPillarBlock extends RotatedPillarBlock implements Block } @Override - public BlockModel getItemModel() { - return getBlockModel(defaultBlockState()); + public BlockModel getModel() { + return null; } @Override diff --git a/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java b/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java index cae86edc..aec55875 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndPlateBlock.java @@ -12,10 +12,10 @@ 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.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndPlateBlock extends PressurePlateBlock implements BlockPatterned { +public class EndPlateBlock extends PressurePlateBlock implements BlockModelProvider { private final Block parent; public EndPlateBlock(Sensitivity rule, Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java b/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java index ffc081cf..530a3002 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndSignBlock.java @@ -40,11 +40,11 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import ru.betterend.blocks.entities.ESignBlockEntity; import ru.betterend.interfaces.ISpetialItem; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.util.BlocksHelper; -public class EndSignBlock extends SignBlock implements BlockPatterned, ISpetialItem { +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[] { diff --git a/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java b/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java index 4c313ff4..61721a99 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndSlabBlock.java @@ -12,10 +12,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SlabBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndSlabBlock extends SlabBlock implements BlockPatterned { +public class EndSlabBlock extends SlabBlock implements BlockModelProvider { private final Block parent; public EndSlabBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java b/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java index 2b1b572a..1eed7622 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndStairsBlock.java @@ -12,10 +12,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.StairBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndStairsBlock extends StairBlock implements BlockPatterned { +public class EndStairsBlock extends StairBlock implements BlockModelProvider { private final Block parent; diff --git a/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java b/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java index b46ef135..2833de8e 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndStoneButtonBlock.java @@ -12,10 +12,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.StoneButtonBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndStoneButtonBlock extends StoneButtonBlock implements BlockPatterned { +public class EndStoneButtonBlock extends StoneButtonBlock implements BlockModelProvider { private final Block parent; public EndStoneButtonBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java b/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java index 5cead0d6..9904aeb5 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndTrapdoorBlock.java @@ -15,10 +15,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, BlockPatterned { +public class EndTrapdoorBlock extends TrapDoorBlock implements IRenderTypeable, BlockModelProvider { public EndTrapdoorBlock(Block source) { super(FabricBlockSettings.copyOf(source).strength(3.0F, 3.0F).noOcclusion()); } diff --git a/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java index 169eb7bc..ac421263 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndWallBlock.java @@ -12,10 +12,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndWallBlock extends WallBlock implements BlockPatterned { +public class EndWallBlock extends WallBlock implements BlockModelProvider { private final Block parent; diff --git a/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java b/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java index cbe6b140..1fe739dd 100644 --- a/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java +++ b/src/main/java/ru/betterend/blocks/basis/EndWoodenButtonBlock.java @@ -12,10 +12,10 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.WoodButtonBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; import ru.betterend.patterns.Patterns; -public class EndWoodenButtonBlock extends WoodButtonBlock implements BlockPatterned { +public class EndWoodenButtonBlock extends WoodButtonBlock implements BlockModelProvider { private final Block parent; public EndWoodenButtonBlock(Block source) { diff --git a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java index 0b8f1df0..e48d9f14 100644 --- a/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java +++ b/src/main/java/ru/betterend/blocks/complex/MetalMaterial.java @@ -27,7 +27,7 @@ import ru.betterend.blocks.basis.EndStairsBlock; import ru.betterend.blocks.basis.EndTrapdoorBlock; import ru.betterend.blocks.basis.EndWoodenPlateBlock; import ru.betterend.item.EndArmorItem; -import ru.betterend.item.PatternedItem; +import ru.betterend.item.ModelProviderItem; import ru.betterend.item.tool.EndAxeItem; import ru.betterend.item.tool.EndHammerItem; import ru.betterend.item.tool.EndHoeItem; @@ -119,8 +119,8 @@ public class MetalMaterial { bulb_lantern = EndBlocks.registerBlock(name + "_bulb_lantern", new BulbVineLanternBlock(lanternProperties)); bulb_lantern_colored = new ColoredMaterial(BulbVineLanternColoredBlock::new, bulb_lantern, false); - nugget = EndItems.registerItem(name + "_nugget", new PatternedItem(itemSettings)); - ingot = EndItems.registerItem(name + "_ingot", new PatternedItem(itemSettings)); + nugget = EndItems.registerItem(name + "_nugget", new ModelProviderItem(itemSettings)); + ingot = EndItems.registerItem(name + "_ingot", new ModelProviderItem(itemSettings)); shovelHead = EndItems.registerItem(name + "_shovel_head"); pickaxeHead = EndItems.registerItem(name + "_pickaxe_head"); diff --git a/src/main/java/ru/betterend/item/ArmoredElytra.java b/src/main/java/ru/betterend/item/ArmoredElytra.java index d5604248..ba9a5894 100644 --- a/src/main/java/ru/betterend/item/ArmoredElytra.java +++ b/src/main/java/ru/betterend/item/ArmoredElytra.java @@ -10,11 +10,11 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; import ru.betterend.BetterEnd; import ru.betterend.interfaces.BreakableItem; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndItems; -public class ArmoredElytra extends ElytraItem implements EquipmentSlotProvider, BreakableItem, Patterned { +public class ArmoredElytra extends ElytraItem implements EquipmentSlotProvider, BreakableItem, ModelProvider { private final ResourceLocation wingTexture; private final Item repairItem; diff --git a/src/main/java/ru/betterend/item/DrinkItem.java b/src/main/java/ru/betterend/item/DrinkItem.java index 50e4ad1a..09bda903 100644 --- a/src/main/java/ru/betterend/item/DrinkItem.java +++ b/src/main/java/ru/betterend/item/DrinkItem.java @@ -13,7 +13,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.UseAnim; import net.minecraft.world.level.Level; -public class DrinkItem extends PatternedItem { +public class DrinkItem extends ModelProviderItem { public DrinkItem(Properties settings) { super(settings); } diff --git a/src/main/java/ru/betterend/item/EnchantedPetalItem.java b/src/main/java/ru/betterend/item/EnchantedPetalItem.java index 8883964a..7dfe880c 100644 --- a/src/main/java/ru/betterend/item/EnchantedPetalItem.java +++ b/src/main/java/ru/betterend/item/EnchantedPetalItem.java @@ -5,7 +5,7 @@ import net.minecraft.world.item.Rarity; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndItems; -public class EnchantedPetalItem extends PatternedItem { +public class EnchantedPetalItem extends ModelProviderItem { public EnchantedPetalItem() { super(EndItems.makeItemSettings().rarity(Rarity.RARE).stacksTo(16)); } diff --git a/src/main/java/ru/betterend/item/EndArmorItem.java b/src/main/java/ru/betterend/item/EndArmorItem.java index 61ed97d1..574caab8 100644 --- a/src/main/java/ru/betterend/item/EndArmorItem.java +++ b/src/main/java/ru/betterend/item/EndArmorItem.java @@ -13,10 +13,10 @@ import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Item; import ru.betterend.mixin.common.ArmorItemAccessor; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndArmorItem extends ArmorItem implements Patterned { +public class EndArmorItem extends ArmorItem implements ModelProvider { public EndArmorItem(ArmorMaterial material, EquipmentSlot slot, Item.Properties settings) { super(material, slot, settings); diff --git a/src/main/java/ru/betterend/item/EndBucketItem.java b/src/main/java/ru/betterend/item/EndBucketItem.java index 23cb8898..9d079838 100644 --- a/src/main/java/ru/betterend/item/EndBucketItem.java +++ b/src/main/java/ru/betterend/item/EndBucketItem.java @@ -2,11 +2,11 @@ package ru.betterend.item; import net.minecraft.world.item.BucketItem; import net.minecraft.world.level.material.Fluids; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndItems; -public class EndBucketItem extends BucketItem implements Patterned { +public class EndBucketItem extends BucketItem implements ModelProvider { public EndBucketItem() { super(Fluids.WATER, EndItems.makeItemSettings().stacksTo(1)); } diff --git a/src/main/java/ru/betterend/item/EndSpawnEggItem.java b/src/main/java/ru/betterend/item/EndSpawnEggItem.java index 26901a0f..2013054c 100644 --- a/src/main/java/ru/betterend/item/EndSpawnEggItem.java +++ b/src/main/java/ru/betterend/item/EndSpawnEggItem.java @@ -2,10 +2,10 @@ package ru.betterend.item; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.SpawnEggItem; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndSpawnEggItem extends SpawnEggItem implements Patterned { +public class EndSpawnEggItem extends SpawnEggItem implements ModelProvider { public EndSpawnEggItem(EntityType type, int primaryColor, int secondaryColor, Properties settings) { super(type, primaryColor, secondaryColor, settings); } diff --git a/src/main/java/ru/betterend/item/EternalCrystalItem.java b/src/main/java/ru/betterend/item/EternalCrystalItem.java index 8a547347..f547ae5f 100644 --- a/src/main/java/ru/betterend/item/EternalCrystalItem.java +++ b/src/main/java/ru/betterend/item/EternalCrystalItem.java @@ -3,7 +3,7 @@ package ru.betterend.item; import net.minecraft.world.item.Rarity; import ru.betterend.registry.EndItems; -public class EternalCrystalItem extends PatternedItem { +public class EternalCrystalItem extends ModelProviderItem { public EternalCrystalItem() { super(EndItems.makeItemSettings().stacksTo(16).rarity(Rarity.EPIC)); } diff --git a/src/main/java/ru/betterend/item/GuideBookItem.java b/src/main/java/ru/betterend/item/GuideBookItem.java index 915ae3b3..fbdd38c0 100644 --- a/src/main/java/ru/betterend/item/GuideBookItem.java +++ b/src/main/java/ru/betterend/item/GuideBookItem.java @@ -18,7 +18,7 @@ import ru.betterend.registry.EndItems; import ru.betterend.util.LangUtil; import vazkii.patchouli.api.PatchouliAPI; -public class GuideBookItem extends PatternedItem { +public class GuideBookItem extends ModelProviderItem { public final static ResourceLocation BOOK_ID = BetterEnd.makeID("guidebook"); public static final Item GUIDE_BOOK = EndItems.registerItem(BOOK_ID, new GuideBookItem()); diff --git a/src/main/java/ru/betterend/item/ModelProviderDiscItem.java b/src/main/java/ru/betterend/item/ModelProviderDiscItem.java new file mode 100644 index 00000000..6ad46ea9 --- /dev/null +++ b/src/main/java/ru/betterend/item/ModelProviderDiscItem.java @@ -0,0 +1,23 @@ +package ru.betterend.item; + +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.item.RecordItem; +import ru.betterend.patterns.ModelProvider; +import ru.betterend.patterns.Patterns; + +public class ModelProviderDiscItem extends RecordItem implements ModelProvider { + public ModelProviderDiscItem(int comparatorOutput, SoundEvent sound, Properties settings) { + super(comparatorOutput, sound, settings); + } + + @Override + public String getModelString(String name) { + return Patterns.createJson(Patterns.ITEM_GENERATED, name); + } + + @Override + public BlockModel getModel() { + return null; + } +} diff --git a/src/main/java/ru/betterend/item/ModelProviderItem.java b/src/main/java/ru/betterend/item/ModelProviderItem.java new file mode 100644 index 00000000..abf58612 --- /dev/null +++ b/src/main/java/ru/betterend/item/ModelProviderItem.java @@ -0,0 +1,22 @@ +package ru.betterend.item; + +import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.world.item.Item; +import ru.betterend.patterns.ModelProvider; +import ru.betterend.patterns.Patterns; + +public class ModelProviderItem extends Item implements ModelProvider { + public ModelProviderItem(Properties settings) { + super(settings); + } + + @Override + public String getModelString(String name) { + return Patterns.createItemGenerated(name); + } + + @Override + public BlockModel getModel() { + return null; + } +} diff --git a/src/main/java/ru/betterend/item/PatternedDiscItem.java b/src/main/java/ru/betterend/item/PatternedDiscItem.java deleted file mode 100644 index c867429d..00000000 --- a/src/main/java/ru/betterend/item/PatternedDiscItem.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.betterend.item; - -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.item.RecordItem; -import ru.betterend.patterns.Patterned; -import ru.betterend.patterns.Patterns; - -public class PatternedDiscItem extends RecordItem implements Patterned { - public PatternedDiscItem(int comparatorOutput, SoundEvent sound, Properties settings) { - super(comparatorOutput, sound, settings); - } - - @Override - public String getModelString(String name) { - return Patterns.createJson(Patterns.ITEM_GENERATED, name); - } -} diff --git a/src/main/java/ru/betterend/item/PatternedItem.java b/src/main/java/ru/betterend/item/PatternedItem.java deleted file mode 100644 index e0072bc4..00000000 --- a/src/main/java/ru/betterend/item/PatternedItem.java +++ /dev/null @@ -1,16 +0,0 @@ -package ru.betterend.item; - -import net.minecraft.world.item.Item; -import ru.betterend.patterns.Patterned; -import ru.betterend.patterns.Patterns; - -public class PatternedItem extends Item implements Patterned { - public PatternedItem(Properties settings) { - super(settings); - } - - @Override - public String getModelString(String name) { - return Patterns.createItemGenerated(name); - } -} diff --git a/src/main/java/ru/betterend/item/tool/EndAxeItem.java b/src/main/java/ru/betterend/item/tool/EndAxeItem.java index b1977ed0..15058b1f 100644 --- a/src/main/java/ru/betterend/item/tool/EndAxeItem.java +++ b/src/main/java/ru/betterend/item/tool/EndAxeItem.java @@ -9,10 +9,10 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.level.block.state.BlockState; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndAxeItem extends AxeItem implements DynamicAttributeTool, Patterned { +public class EndAxeItem extends AxeItem implements DynamicAttributeTool, ModelProvider { public EndAxeItem(Tier material, float attackDamage, float attackSpeed, Properties settings) { super(material, attackDamage, attackSpeed, settings); } diff --git a/src/main/java/ru/betterend/item/tool/EndHammerItem.java b/src/main/java/ru/betterend/item/tool/EndHammerItem.java index 6f4ffa8f..41dcc541 100644 --- a/src/main/java/ru/betterend/item/tool/EndHammerItem.java +++ b/src/main/java/ru/betterend/item/tool/EndHammerItem.java @@ -26,11 +26,11 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; import ru.betterend.registry.EndTags; -public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, Patterned { +public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, ModelProvider { public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = Mth.createInsecureUUID(ThreadLocalRandom.current()); private final Multimap attributeModifiers; diff --git a/src/main/java/ru/betterend/item/tool/EndHoeItem.java b/src/main/java/ru/betterend/item/tool/EndHoeItem.java index 66f23a07..35966b5c 100644 --- a/src/main/java/ru/betterend/item/tool/EndHoeItem.java +++ b/src/main/java/ru/betterend/item/tool/EndHoeItem.java @@ -2,10 +2,10 @@ package ru.betterend.item.tool; import net.minecraft.world.item.HoeItem; import net.minecraft.world.item.Tier; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndHoeItem extends HoeItem implements Patterned { +public class EndHoeItem extends HoeItem implements ModelProvider { public EndHoeItem(Tier material, int attackDamage, float attackSpeed, Properties settings) { super(material, attackDamage, attackSpeed, settings); } diff --git a/src/main/java/ru/betterend/item/tool/EndPickaxeItem.java b/src/main/java/ru/betterend/item/tool/EndPickaxeItem.java index d1aac622..54771ce0 100644 --- a/src/main/java/ru/betterend/item/tool/EndPickaxeItem.java +++ b/src/main/java/ru/betterend/item/tool/EndPickaxeItem.java @@ -12,10 +12,10 @@ import net.minecraft.world.item.PickaxeItem; import net.minecraft.world.item.Tier; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndPickaxeItem extends PickaxeItem implements DynamicAttributeTool, Patterned { +public class EndPickaxeItem extends PickaxeItem implements DynamicAttributeTool, ModelProvider { public EndPickaxeItem(Tier material, int attackDamage, float attackSpeed, Properties settings) { super(material, attackDamage, attackSpeed, settings); } diff --git a/src/main/java/ru/betterend/item/tool/EndShovelItem.java b/src/main/java/ru/betterend/item/tool/EndShovelItem.java index be67f603..1cf6603c 100644 --- a/src/main/java/ru/betterend/item/tool/EndShovelItem.java +++ b/src/main/java/ru/betterend/item/tool/EndShovelItem.java @@ -11,10 +11,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ShovelItem; import net.minecraft.world.item.Tier; import net.minecraft.world.level.block.state.BlockState; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndShovelItem extends ShovelItem implements DynamicAttributeTool, Patterned { +public class EndShovelItem extends ShovelItem implements DynamicAttributeTool, ModelProvider { public EndShovelItem(Tier material, float attackDamage, float attackSpeed, Properties settings) { super(material, attackDamage, attackSpeed, settings); } diff --git a/src/main/java/ru/betterend/item/tool/EndSwordItem.java b/src/main/java/ru/betterend/item/tool/EndSwordItem.java index 3507970b..540e0101 100644 --- a/src/main/java/ru/betterend/item/tool/EndSwordItem.java +++ b/src/main/java/ru/betterend/item/tool/EndSwordItem.java @@ -3,10 +3,10 @@ package ru.betterend.item.tool; import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.ModelProvider; import ru.betterend.patterns.Patterns; -public class EndSwordItem extends SwordItem implements DynamicAttributeTool, Patterned { +public class EndSwordItem extends SwordItem implements DynamicAttributeTool, ModelProvider { public EndSwordItem(Tier material, int attackDamage, float attackSpeed, Properties settings) { super(material, attackDamage, attackSpeed, settings); } diff --git a/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java b/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java index 2088fc8c..091747e9 100644 --- a/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java +++ b/src/main/java/ru/betterend/mixin/client/ModelLoaderMixin.java @@ -2,6 +2,7 @@ package ru.betterend.mixin.client; import net.minecraft.client.renderer.block.BlockModelShaper; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.MultiVariant; import net.minecraft.client.resources.model.ModelBakery; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.client.resources.model.UnbakedModel; @@ -9,9 +10,9 @@ import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import org.apache.commons.lang3.tuple.Triple; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -21,8 +22,8 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.betterend.BetterEnd; -import ru.betterend.patterns.BlockPatterned; -import ru.betterend.patterns.Patterned; +import ru.betterend.patterns.BlockModelProvider; +import ru.betterend.patterns.ModelProvider; import ru.betterend.world.generator.GeneratorOptions; import java.io.InputStreamReader; @@ -59,8 +60,8 @@ public abstract class ModelLoaderMixin { ResourceLocation itemModelLoc = new ResourceLocation(modId, "models/" + itemLoc.getPath() + ".json"); if (!resourceManager.hasResource(itemModelLoc)) { Item item = Registry.ITEM.get(clearLoc); - if (item instanceof Patterned) { - BlockModel model = ((Patterned) item).getItemModel(); + if (item instanceof ModelProvider) { + BlockModel model = ((ModelProvider) item).getModel(); if (model != null) { model.name = itemLoc.toString(); } else { @@ -75,12 +76,13 @@ public abstract class ModelLoaderMixin { ResourceLocation blockstateId = new ResourceLocation(modId, "blockstates/" + path + ".json"); if (!resourceManager.hasResource(blockstateId)) { Block block = Registry.BLOCK.get(clearLoc); - if (block instanceof BlockPatterned) { + if (block instanceof BlockModelProvider) { block.getStateDefinition().getPossibleStates().forEach(blockState -> { - UnbakedModel model = ((BlockPatterned) block).getBlockModel(blockState); - if (model != null) { + Triple models = ((BlockModelProvider) block).getBlockModels(blockState); + if (models != null) { ModelResourceLocation stateLoc = BlockModelShaper.stateToModelLocation(clearLoc, blockState); - cacheAndQueueDependencies(stateLoc, model); + cacheAndQueueDependencies(stateLoc, models.getMiddle()); + unbakedCache.put(models.getLeft(), models.getRight()); } }); info.cancel(); @@ -106,16 +108,16 @@ public abstract class ModelLoaderMixin { ResourceLocation itemId = new ResourceLocation(id.getNamespace(), data[1]); Optional block = Registry.BLOCK.getOptional(itemId); if (block.isPresent()) { - if (block.get() instanceof Patterned) { - Patterned patterned = (Patterned) block.get(); - model = be_getModel(data, id, patterned); + if (block.get() instanceof ModelProvider) { + ModelProvider modelProvider = (ModelProvider) block.get(); + model = be_getModel(data, id, modelProvider); info.setReturnValue(model); } } else { Optional item = Registry.ITEM.getOptional(itemId); - if (item.isPresent() && item.get() instanceof Patterned) { - Patterned patterned = (Patterned) item.get(); - model = be_getModel(data, id, patterned); + if (item.isPresent() && item.get() instanceof ModelProvider) { + ModelProvider modelProvider = (ModelProvider) item.get(); + model = be_getModel(data, id, modelProvider); info.setReturnValue(model); } } @@ -124,15 +126,15 @@ public abstract class ModelLoaderMixin { } } - private BlockModel be_getModel(String[] data, ResourceLocation id, Patterned patterned) { + private BlockModel be_getModel(String[] data, ResourceLocation id, ModelProvider modelProvider) { String pattern; if (id.getPath().contains("item")) { - pattern = patterned.getModelString(id.getPath()); + pattern = modelProvider.getModelString(id.getPath()); } else { if (data.length > 2) { - pattern = patterned.getModelString(data[2]); + pattern = modelProvider.getModelString(data[2]); } else { - pattern = patterned.getModelString(data[1]); + pattern = modelProvider.getModelString(data[1]); } } BlockModel model = BlockModel.fromString(pattern); diff --git a/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java index d657e0aa..c1852dbb 100644 --- a/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java +++ b/src/main/java/ru/betterend/mixin/client/ModelVariantMapMixin.java @@ -13,7 +13,7 @@ import com.google.gson.Gson; import net.minecraft.client.renderer.block.model.BlockModelDefinition; import net.minecraft.util.GsonHelper; import net.minecraft.world.level.block.Block; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; @Mixin(BlockModelDefinition.class) public abstract class ModelVariantMapMixin { @@ -21,8 +21,8 @@ public abstract class ModelVariantMapMixin { @Inject(method = "fromStream", at = @At("HEAD"), cancellable = true) private static void be_deserializeBlockState(BlockModelDefinition.Context context, Reader reader, CallbackInfoReturnable info) { Block block = context.getDefinition().any().getBlock(); - if (block instanceof BlockPatterned) { - String pattern = ((BlockPatterned) block).getStatesPattern(reader); + if (block instanceof BlockModelProvider) { + String pattern = ((BlockModelProvider) block).getStatesPattern(reader); Gson gson = ContextGsonAccessor.class.cast(context).getGson(); BlockModelDefinition map = GsonHelper.fromJson(gson, new StringReader(pattern), BlockModelDefinition.class); info.setReturnValue(map); diff --git a/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java b/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java index ca9e8460..fb2a138f 100644 --- a/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java +++ b/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java @@ -17,7 +17,7 @@ import net.minecraft.server.packs.resources.FallbackResourceManager; import net.minecraft.server.packs.resources.Resource; import net.minecraft.world.level.block.Block; import ru.betterend.BetterEnd; -import ru.betterend.patterns.BlockPatterned; +import ru.betterend.patterns.BlockModelProvider; @Mixin(FallbackResourceManager.class) public abstract class NamespaceResourceManagerMixin { @@ -35,8 +35,8 @@ public abstract class NamespaceResourceManagerMixin { if (data.length > 1) { ResourceLocation blockId = BetterEnd.makeID(data[1].replace(".json", "")); Block block = Registry.BLOCK.get(blockId); - if (block instanceof BlockPatterned) { - ResourceLocation stateId = ((BlockPatterned) block).statePatternId(); + if (block instanceof BlockModelProvider) { + ResourceLocation stateId = ((BlockModelProvider) block).statePatternId(); try { List resources = Lists.newArrayList(); Resource stateRes = this.getResource(stateId); diff --git a/src/main/java/ru/betterend/patterns/BlockPatterned.java b/src/main/java/ru/betterend/patterns/BlockModelProvider.java similarity index 53% rename from src/main/java/ru/betterend/patterns/BlockPatterned.java rename to src/main/java/ru/betterend/patterns/BlockModelProvider.java index 7cd590b9..2e3f610e 100644 --- a/src/main/java/ru/betterend/patterns/BlockPatterned.java +++ b/src/main/java/ru/betterend/patterns/BlockModelProvider.java @@ -3,11 +3,13 @@ package ru.betterend.patterns; import java.io.Reader; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.client.renderer.block.model.MultiVariant; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; +import org.apache.commons.lang3.tuple.Triple; -public interface BlockPatterned extends Patterned { +public interface BlockModelProvider extends ModelProvider { String getStatesPattern(Reader data); ResourceLocation statePatternId(); - BlockModel getBlockModel(BlockState blockState); + Triple getBlockModels(BlockState blockState); } diff --git a/src/main/java/ru/betterend/patterns/Patterned.java b/src/main/java/ru/betterend/patterns/ModelProvider.java similarity index 69% rename from src/main/java/ru/betterend/patterns/Patterned.java rename to src/main/java/ru/betterend/patterns/ModelProvider.java index 99500951..8b1e2aa0 100644 --- a/src/main/java/ru/betterend/patterns/Patterned.java +++ b/src/main/java/ru/betterend/patterns/ModelProvider.java @@ -2,7 +2,7 @@ package ru.betterend.patterns; import net.minecraft.client.renderer.block.model.BlockModel; -public interface Patterned { +public interface ModelProvider { String getModelString(String name); - BlockModel getItemModel(); + BlockModel getModel(); } \ No newline at end of file diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 92d98166..0deb0668 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -34,15 +34,8 @@ import net.minecraft.world.level.block.DispenserBlock; import ru.betterend.BetterEnd; import ru.betterend.config.Configs; import ru.betterend.interfaces.BreakableItem; -import ru.betterend.item.ArmoredElytra; -import ru.betterend.item.DrinkItem; -import ru.betterend.item.EnchantedPetalItem; -import ru.betterend.item.EndArmorItem; -import ru.betterend.item.EndBucketItem; -import ru.betterend.item.EndSpawnEggItem; -import ru.betterend.item.EternalCrystalItem; -import ru.betterend.item.PatternedDiscItem; -import ru.betterend.item.PatternedItem; +import ru.betterend.item.*; +import ru.betterend.item.ModelProviderItem; import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.item.material.EndToolMaterial; import ru.betterend.item.tool.EndAxeItem; @@ -136,11 +129,11 @@ public class EndItems { public final static Item UMBRELLA_CLUSTER_JUICE = registerDrink("umbrella_cluster_juice", 5, 0.7F); public static Item registerDisc(String name, int power, SoundEvent sound) { - return registerItem(BetterEnd.makeID(name), new PatternedDiscItem(power, sound, makeItemSettings())); + return registerItem(BetterEnd.makeID(name), new ModelProviderDiscItem(power, sound, makeItemSettings())); } public static Item registerItem(String name) { - return registerItem(BetterEnd.makeID(name), new PatternedItem(makeItemSettings())); + return registerItem(BetterEnd.makeID(name), new ModelProviderItem(makeItemSettings())); } public static Item registerItem(String name, Item item) { @@ -229,7 +222,7 @@ public class EndItems { } public static Item registerFood(String name, FoodProperties foodComponent) { - return registerItem(name, new PatternedItem(makeItemSettings().food(foodComponent))); + return registerItem(name, new ModelProviderItem(makeItemSettings().food(foodComponent))); } public static Item registerDrink(String name) {