Change loading models (WIP)
This commit is contained in:
parent
1e6451e375
commit
6447ec6026
56 changed files with 196 additions and 176 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<Direction, VoxelShape> BOUNDING_SHAPES = Maps.newEnumMap(Direction.class);
|
||||
|
||||
public ChandelierBlock(Block source) {
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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<ResourceLocation, MultiVariant, BlockModel> getBlockModels(BlockState blockState) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -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<ResourceLocation, MultiVariant, BlockModel> getBlockModels(BlockState blockState) {
|
||||
return BlockModel.fromString(getModelString(""));
|
||||
}
|
||||
}
|
|
@ -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<ResourceLocation, MultiVariant, BlockModel> 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<String, String> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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[] {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
23
src/main/java/ru/betterend/item/ModelProviderDiscItem.java
Normal file
23
src/main/java/ru/betterend/item/ModelProviderDiscItem.java
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
22
src/main/java/ru/betterend/item/ModelProviderItem.java
Normal file
22
src/main/java/ru/betterend/item/ModelProviderItem.java
Normal file
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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<Attribute, AttributeModifier> attributeModifiers;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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<ResourceLocation, MultiVariant, BlockModel> 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> 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> 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);
|
||||
|
|
|
@ -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<BlockModelDefinition> 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);
|
||||
|
|
|
@ -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<Resource> resources = Lists.newArrayList();
|
||||
Resource stateRes = this.getResource(stateId);
|
||||
|
|
|
@ -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<ResourceLocation, MultiVariant, BlockModel> getBlockModels(BlockState blockState);
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue