Apply BCLib (WIP)
This commit is contained in:
parent
746613cbf1
commit
006dc63583
65 changed files with 122 additions and 775 deletions
|
@ -12,8 +12,8 @@ import net.minecraft.client.resources.model.UnbakedModel;
|
|||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.basis.EndAnvilBlock;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.item.material.EndToolMaterial;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
|
|
|
@ -20,9 +20,9 @@ import net.minecraft.world.level.material.Material;
|
|||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.basis.EndLanternBlock;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -21,9 +21,9 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.basis.AttachedBlock;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
@ -47,7 +47,7 @@ public class ChandelierBlock extends AttachedBlock implements IRenderTypeable, B
|
|||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation blockId) {
|
||||
return ModelsHelper.createItemModel(blockId.getPath());
|
||||
return ModelsHelper.createItemModel(blockId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,7 +24,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.material.Material;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ import net.minecraft.client.color.item.ItemColor;
|
|||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.interfaces.IColorProvider;
|
||||
import ru.betterend.util.BlocksHelper;
|
||||
|
@ -22,16 +22,12 @@ public class HydraluxPetalColoredBlock extends HydraluxPetalBlock implements ICo
|
|||
|
||||
@Override
|
||||
public BlockColor getProvider() {
|
||||
return (state, world, pos, tintIndex) -> {
|
||||
return BlocksHelper.getBlockColor(this);
|
||||
};
|
||||
return (state, world, pos, tintIndex) -> BlocksHelper.getBlockColor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemColor getItemProvider() {
|
||||
return (stack, tintIndex) -> {
|
||||
return BlocksHelper.getBlockColor(this);
|
||||
};
|
||||
return (stack, tintIndex) -> BlocksHelper.getBlockColor(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
package ru.betterend.blocks;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.client.color.block.BlockColor;
|
||||
import net.minecraft.client.color.item.ItemColor;
|
||||
|
@ -23,16 +17,20 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.bclib.util.ColorUtil;
|
||||
import ru.bclib.util.MHelper;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IColorProvider;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
import ru.betterend.noise.OpenSimplexNoise;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class JellyshroomCapBlock extends SlimeBlock implements IRenderTypeable, BlockModelProvider, IColorProvider {
|
||||
public static final IntegerProperty COLOR = BlockProperties.COLOR;
|
||||
private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0);
|
||||
|
|
|
@ -22,8 +22,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.util.MHelper;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
import ru.betterend.noise.OpenSimplexNoise;
|
||||
|
|
|
@ -9,7 +9,7 @@ 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.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
|
||||
public class BlockBase extends Block implements BlockModelProvider {
|
||||
public BlockBase(Properties settings) {
|
||||
|
|
|
@ -22,9 +22,9 @@ import net.minecraft.world.level.block.state.StateDefinition;
|
|||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.BlockProperties;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndAnvilBlock extends AnvilBlock implements BlockModelProvider {
|
||||
|
|
|
@ -17,7 +17,7 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndBookshelfBlock extends BlockBase {
|
||||
|
|
|
@ -18,8 +18,8 @@ import net.minecraft.world.level.block.ButtonBlock;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.AttachFace;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public abstract class EndButtonBlock extends ButtonBlock implements BlockModelProvider {
|
||||
|
|
|
@ -18,8 +18,8 @@ import net.minecraft.world.level.block.ChainBlock;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
@ -36,7 +36,7 @@ public class EndChainBlock extends ChainBlock implements BlockModelProvider, IRe
|
|||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation blockId) {
|
||||
return ModelsHelper.createItemModel(blockId.getPath());
|
||||
return ModelsHelper.createItemModel(blockId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,26 +1,7 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.ChestBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.bclib.blocks.BaseChestBlock;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.registry.EndBlockEntities;
|
||||
|
||||
public class EndChestBlock extends BaseChestBlock {
|
||||
public EndChestBlock(Block source) {
|
||||
|
|
|
@ -16,9 +16,9 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.ComposterBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.ModelsHelper.MultiPartBuilder;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ModelsHelper.MultiPartBuilder;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndComposterBlock extends ComposterBlock implements BlockModelProvider {
|
||||
|
|
|
@ -15,8 +15,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.CraftingTableBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider {
|
||||
|
|
|
@ -21,8 +21,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.properties.DoorHingeSide;
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -18,9 +18,9 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.FenceBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.ModelsHelper.MultiPartBuilder;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ModelsHelper.MultiPartBuilder;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndFenceBlock extends FenceBlock implements BlockModelProvider {
|
||||
|
|
|
@ -17,8 +17,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.FenceGateBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndGateBlock extends FenceGateBlock implements BlockModelProvider {
|
||||
|
|
|
@ -29,8 +29,8 @@ import net.minecraft.world.level.material.FluidState;
|
|||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -22,8 +22,8 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
|||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.BlockProperties;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndLanternBlock extends BlockBaseNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer {
|
||||
public static final BooleanProperty IS_FLOOR = BlockProperties.IS_FLOOR;
|
||||
|
|
|
@ -19,8 +19,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.util.MHelper;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.IronBarsBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -19,8 +19,8 @@ import net.minecraft.world.level.material.Material;
|
|||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.util.MHelper;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
|
||||
public class EndOreBlock extends OreBlock implements BlockModelProvider {
|
||||
private final Item dropItem;
|
||||
|
|
|
@ -9,9 +9,4 @@ public class EndPathBlock extends BasePathBlock {
|
|||
public EndPathBlock(Block source) {
|
||||
super(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Block getBottomBlock() {
|
||||
return Blocks.END_STONE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.RotatedPillarBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndPillarBlock extends RotatedPillarBlock implements BlockModelProvider {
|
||||
|
|
|
@ -17,8 +17,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.PressurePlateBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndPlateBlock extends PressurePlateBlock implements BlockModelProvider {
|
||||
|
|
|
@ -19,8 +19,8 @@ import net.minecraft.world.level.block.SlabBlock;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.SlabType;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndSlabBlock extends SlabBlock implements BlockModelProvider {
|
||||
|
|
|
@ -20,8 +20,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.properties.Half;
|
||||
import net.minecraft.world.level.block.state.properties.StairsShape;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndStairsBlock extends StairBlock implements BlockModelProvider {
|
||||
|
|
|
@ -1,47 +1,8 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.LevelReader;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.SnowLayerBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.lighting.LayerLightEngine;
|
||||
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 net.minecraft.world.phys.BlockHitResult;
|
||||
import ru.bclib.blocks.BaseTerrainBlock;
|
||||
import ru.betterend.blocks.BlockSounds;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndTerrainBlock extends BaseTerrainBlock {
|
||||
public EndTerrainBlock(MaterialColor color) {
|
||||
|
|
|
@ -19,8 +19,8 @@ import net.minecraft.world.level.block.TrapDoorBlock;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.Half;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -1,95 +1,11 @@
|
|||
package ru.betterend.blocks.basis;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.client.resources.model.BlockModelRotation;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
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.WallBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.WallSide;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.bclib.blocks.BaseWallBlock;
|
||||
|
||||
public class EndWallBlock extends WallBlock implements BlockModelProvider {
|
||||
|
||||
private final Block parent;
|
||||
public class EndWallBlock extends BaseWallBlock {
|
||||
|
||||
public EndWallBlock(Block source) {
|
||||
super(FabricBlockSettings.copyOf(source).noOcclusion());
|
||||
this.parent = source;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDrops(BlockState state, LootContext.Builder builder) {
|
||||
return Collections.singletonList(new ItemStack(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation blockId) {
|
||||
ResourceLocation parentId = Registry.BLOCK.getKey(parent);
|
||||
Optional<String> pattern = Patterns.createJson(Patterns.ITEM_WALL, parentId.getPath(), blockId.getPath());
|
||||
return ModelsHelper.fromPattern(pattern);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) {
|
||||
ResourceLocation parentId = Registry.BLOCK.getKey(parent);
|
||||
String path = blockId.getPath();
|
||||
Optional<String> pattern = Optional.empty();
|
||||
if (path.endsWith("_post")) {
|
||||
pattern = Patterns.createJson(Patterns.BLOCK_WALL_POST, parentId.getPath(), blockId.getPath());
|
||||
}
|
||||
if (path.endsWith("_side")) {
|
||||
pattern = Patterns.createJson(Patterns.BLOCK_WALL_SIDE, parentId.getPath(), blockId.getPath());
|
||||
}
|
||||
if (path.endsWith("_side_tall")) {
|
||||
pattern = Patterns.createJson(Patterns.BLOCK_WALL_SIDE_TALL, parentId.getPath(), blockId.getPath());
|
||||
}
|
||||
return ModelsHelper.fromPattern(pattern);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
|
||||
ResourceLocation postId = new ResourceLocation(stateId.getNamespace(),
|
||||
"block/" + stateId.getPath() + "_post");
|
||||
ResourceLocation sideId = new ResourceLocation(stateId.getNamespace(),
|
||||
"block/" + stateId.getPath() + "_side");
|
||||
ResourceLocation sideTallId = new ResourceLocation(stateId.getNamespace(),
|
||||
"block/" + stateId.getPath() + "_side_tall");
|
||||
registerBlockModel(postId, postId, blockState, modelCache);
|
||||
registerBlockModel(sideId, sideId, blockState, modelCache);
|
||||
registerBlockModel(sideTallId, sideTallId, blockState, modelCache);
|
||||
|
||||
ModelsHelper.MultiPartBuilder builder = ModelsHelper.MultiPartBuilder.create(stateDefinition);
|
||||
builder.part(sideId).setCondition(state -> state.getValue(NORTH_WALL) == WallSide.LOW).setUVLock(true).add();
|
||||
builder.part(sideId).setCondition(state -> state.getValue(EAST_WALL) == WallSide.LOW)
|
||||
.setTransformation(BlockModelRotation.X0_Y90.getRotation()).setUVLock(true).add();
|
||||
builder.part(sideId).setCondition(state -> state.getValue(SOUTH_WALL) == WallSide.LOW)
|
||||
.setTransformation(BlockModelRotation.X0_Y180.getRotation()).setUVLock(true).add();
|
||||
builder.part(sideId).setCondition(state -> state.getValue(WEST_WALL) == WallSide.LOW)
|
||||
.setTransformation(BlockModelRotation.X0_Y270.getRotation()).setUVLock(true).add();
|
||||
builder.part(sideTallId).setCondition(state -> state.getValue(NORTH_WALL) == WallSide.TALL).setUVLock(true).add();
|
||||
builder.part(sideTallId).setCondition(state -> state.getValue(EAST_WALL) == WallSide.TALL)
|
||||
.setTransformation(BlockModelRotation.X0_Y90.getRotation()).setUVLock(true).add();
|
||||
builder.part(sideTallId).setCondition(state -> state.getValue(SOUTH_WALL) == WallSide.TALL)
|
||||
.setTransformation(BlockModelRotation.X0_Y180.getRotation()).setUVLock(true).add();
|
||||
builder.part(sideTallId).setCondition(state -> state.getValue(WEST_WALL) == WallSide.TALL)
|
||||
.setTransformation(BlockModelRotation.X0_Y270.getRotation()).setUVLock(true).add();
|
||||
builder.part(postId).setCondition(state -> state.getValue(UP)).add();
|
||||
|
||||
return builder.build();
|
||||
super(source);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,8 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.WeightedPressurePlateBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.storage.loot.LootContext;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider {
|
||||
|
|
|
@ -29,8 +29,8 @@ import net.minecraft.world.level.storage.loot.LootContext;
|
|||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.api.TagAPI;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.BlockModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -40,11 +40,11 @@ import net.minecraft.world.phys.BlockHitResult;
|
|||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.BlockProperties;
|
||||
import ru.betterend.blocks.BlockProperties.PedestalState;
|
||||
import ru.betterend.blocks.InfusionPedestal;
|
||||
import ru.betterend.blocks.entities.PedestalBlockEntity;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.rituals.InfusionRitual;
|
||||
|
|
|
@ -35,8 +35,8 @@ import net.minecraft.world.level.material.FluidState;
|
|||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.BlockProperties;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.client.render.ERenderLayer;
|
||||
import ru.betterend.interfaces.IRenderTypeable;
|
||||
|
|
|
@ -17,10 +17,10 @@ import net.minecraft.world.level.block.Block;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.bclib.util.ColorUtil;
|
||||
import ru.bclib.util.MHelper;
|
||||
import ru.betterend.blocks.AuroraCrystalBlock;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
import ru.betterend.interfaces.IColorProvider;
|
||||
|
||||
|
|
|
@ -32,9 +32,9 @@ import net.minecraft.world.level.block.state.StateDefinition;
|
|||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.blocks.BlockProperties;
|
||||
import ru.betterend.blocks.BlockProperties.TripleShape;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class TripleTerrainBlock extends EndTerrainBlock {
|
||||
|
|
|
@ -14,32 +14,16 @@ import net.minecraft.world.level.block.Blocks;
|
|||
import net.minecraft.world.level.block.SoundType;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.material.MaterialColor;
|
||||
import ru.bclib.items.ModelProviderItem;
|
||||
import ru.bclib.items.tool.*;
|
||||
import ru.bclib.util.TagHelper;
|
||||
import ru.betterend.blocks.BulbVineLanternBlock;
|
||||
import ru.betterend.blocks.BulbVineLanternColoredBlock;
|
||||
import ru.betterend.blocks.ChandelierBlock;
|
||||
import ru.betterend.blocks.basis.BlockBase;
|
||||
import ru.betterend.blocks.basis.EndAnvilBlock;
|
||||
import ru.betterend.blocks.basis.EndChainBlock;
|
||||
import ru.betterend.blocks.basis.EndDoorBlock;
|
||||
import ru.betterend.blocks.basis.EndMetalPaneBlock;
|
||||
import ru.betterend.blocks.basis.EndSlabBlock;
|
||||
import ru.betterend.blocks.basis.EndStairsBlock;
|
||||
import ru.betterend.blocks.basis.EndTrapdoorBlock;
|
||||
import ru.betterend.blocks.basis.EndWoodenPlateBlock;
|
||||
import ru.betterend.blocks.basis.*;
|
||||
import ru.betterend.item.EndArmorItem;
|
||||
import ru.betterend.item.ModelProviderItem;
|
||||
import ru.betterend.item.tool.EndAxeItem;
|
||||
import ru.betterend.item.tool.EndHammerItem;
|
||||
import ru.betterend.item.tool.EndHoeItem;
|
||||
import ru.betterend.item.tool.EndPickaxeItem;
|
||||
import ru.betterend.item.tool.EndShovelItem;
|
||||
import ru.betterend.item.tool.EndSwordItem;
|
||||
import ru.betterend.recipe.builders.AlloyingRecipe;
|
||||
import ru.betterend.recipe.builders.AnvilRecipe;
|
||||
import ru.betterend.recipe.builders.FurnaceRecipe;
|
||||
import ru.betterend.recipe.builders.GridRecipe;
|
||||
import ru.betterend.recipe.builders.SmithingTableRecipe;
|
||||
import ru.betterend.recipe.builders.*;
|
||||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.registry.EndItems;
|
||||
import ru.betterend.registry.EndTags;
|
||||
|
@ -130,11 +114,11 @@ public class MetalMaterial {
|
|||
swordBlade = EndItems.registerEndItem(name + "_sword_blade");
|
||||
swordHandle = EndItems.registerEndItem(name + "_sword_handle");
|
||||
|
||||
shovel = EndItems.registerEndTool(name + "_shovel", new EndShovelItem(material, 1.5F, -3.0F, itemSettings));
|
||||
sword = EndItems.registerEndTool(name + "_sword", new EndSwordItem(material, 3, -2.4F, itemSettings));
|
||||
pickaxe = EndItems.registerEndTool(name + "_pickaxe", new EndPickaxeItem(material, 1, -2.8F, itemSettings));
|
||||
axe = EndItems.registerEndTool(name + "_axe", new EndAxeItem(material, 6.0F, -3.0F, itemSettings));
|
||||
hoe = EndItems.registerEndTool(name + "_hoe", new EndHoeItem(material, -3, 0.0F, itemSettings));
|
||||
shovel = EndItems.registerEndTool(name + "_shovel", new BaseShovelItem(material, 1.5F, -3.0F, itemSettings));
|
||||
sword = EndItems.registerEndTool(name + "_sword", new BaseSwordItem(material, 3, -2.4F, itemSettings));
|
||||
pickaxe = EndItems.registerEndTool(name + "_pickaxe", new BasePickaxeItem(material, 1, -2.8F, itemSettings));
|
||||
axe = EndItems.registerEndTool(name + "_axe", new BaseAxeItem(material, 6.0F, -3.0F, itemSettings));
|
||||
hoe = EndItems.registerEndTool(name + "_hoe", new BaseHoeItem(material, -3, 0.0F, itemSettings));
|
||||
hammer = EndItems.registerEndTool(name + "_hammer", new EndHammerItem(material, 5.0F, -3.2F, 0.3D, itemSettings));
|
||||
|
||||
forgedPlate = EndItems.registerEndItem(name + "_forged_plate");
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
package ru.betterend.client.models;
|
||||
|
||||
import static net.minecraft.client.resources.model.ModelBakery.MISSING_MODEL_LOCATION;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import ru.betterend.BetterEnd;
|
||||
|
||||
public interface BlockModelProvider extends ItemModelProvider {
|
||||
default @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) {
|
||||
Optional<String> pattern = Patterns.createBlockSimple(resourceLocation.getPath());
|
||||
return ModelsHelper.fromPattern(pattern);
|
||||
}
|
||||
|
||||
default UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
|
||||
ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath());
|
||||
registerBlockModel(stateId, modelId, blockState, modelCache);
|
||||
return ModelsHelper.createBlockSimple(modelId);
|
||||
}
|
||||
|
||||
default void registerBlockModel(ResourceLocation stateId, ResourceLocation modelId, BlockState blockState, Map<ResourceLocation, UnbakedModel> modelCache) {
|
||||
if (!modelCache.containsKey(modelId)) {
|
||||
BlockModel model = getBlockModel(stateId, blockState);
|
||||
if (model != null) {
|
||||
model.name = modelId.toString();
|
||||
modelCache.put(modelId, model);
|
||||
} else {
|
||||
BetterEnd.LOGGER.warning("Error loading model: {}", modelId);
|
||||
modelCache.put(modelId, modelCache.get(MISSING_MODEL_LOCATION));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
package ru.betterend.client.models;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
||||
public interface ItemModelProvider {
|
||||
default BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createItemModel(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,149 +0,0 @@
|
|||
package ru.betterend.client.models;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.mojang.math.Transformation;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
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.client.renderer.block.model.multipart.Condition;
|
||||
import net.minecraft.client.renderer.block.model.multipart.MultiPart;
|
||||
import net.minecraft.client.renderer.block.model.multipart.Selector;
|
||||
import net.minecraft.client.resources.model.BlockModelRotation;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class ModelsHelper {
|
||||
public static BlockModel fromPattern(Optional<String> pattern) {
|
||||
return pattern.map(BlockModel::fromString).orElse(null);
|
||||
}
|
||||
|
||||
public static BlockModel createItemModel(String name) {
|
||||
Optional<String> pattern = Patterns.createItemGenerated("item/" + name);
|
||||
return fromPattern(pattern);
|
||||
}
|
||||
|
||||
public static BlockModel createHandheldItem(String name) {
|
||||
Optional<String> pattern = Patterns.createJson(Patterns.ITEM_HANDHELD, "item/" + name);
|
||||
return fromPattern(pattern);
|
||||
}
|
||||
|
||||
public static BlockModel createBlockItem(ResourceLocation resourceLocation) {
|
||||
Optional<String> pattern = Patterns.createJson(Patterns.ITEM_BLOCK, resourceLocation.getPath());
|
||||
return fromPattern(pattern);
|
||||
}
|
||||
|
||||
public static BlockModel createBlockEmpty(ResourceLocation resourceLocation) {
|
||||
Optional<String> pattern = Patterns.createJson(Patterns.BLOCK_EMPTY, resourceLocation.getPath());
|
||||
return fromPattern(pattern);
|
||||
}
|
||||
|
||||
public static MultiVariant createMultiVariant(ResourceLocation resourceLocation, Transformation transform, boolean uvLock) {
|
||||
Variant variant = new Variant(resourceLocation, transform, uvLock, 1);
|
||||
return new MultiVariant(Lists.newArrayList(variant));
|
||||
}
|
||||
|
||||
public static MultiVariant createBlockSimple(ResourceLocation resourceLocation) {
|
||||
return createMultiVariant(resourceLocation, Transformation.identity(), false);
|
||||
}
|
||||
|
||||
public static MultiVariant createFacingModel(ResourceLocation resourceLocation, Direction facing, boolean uvLock, boolean inverted) {
|
||||
if (inverted) {
|
||||
facing = facing.getOpposite();
|
||||
}
|
||||
BlockModelRotation rotation = BlockModelRotation.by(0, (int) facing.toYRot());
|
||||
return createMultiVariant(resourceLocation, rotation.getRotation(), uvLock);
|
||||
}
|
||||
|
||||
public static MultiVariant createRotatedModel(ResourceLocation resourceLocation, Direction.Axis axis) {
|
||||
BlockModelRotation rotation = BlockModelRotation.X0_Y0;
|
||||
switch (axis) {
|
||||
case X: rotation = BlockModelRotation.X90_Y90; break;
|
||||
case Z: rotation = BlockModelRotation.X90_Y0; break;
|
||||
default: break;
|
||||
}
|
||||
return createMultiVariant(resourceLocation, rotation.getRotation(), false);
|
||||
}
|
||||
|
||||
public static MultiVariant createRandomTopModel(ResourceLocation resourceLocation) {
|
||||
return new MultiVariant(Lists.newArrayList(
|
||||
new Variant(resourceLocation, Transformation.identity(), false, 1),
|
||||
new Variant(resourceLocation, BlockModelRotation.X0_Y90.getRotation(), false, 1),
|
||||
new Variant(resourceLocation, BlockModelRotation.X0_Y180.getRotation(), false, 1),
|
||||
new Variant(resourceLocation, BlockModelRotation.X0_Y270.getRotation(), false, 1)
|
||||
));
|
||||
}
|
||||
|
||||
public static class MultiPartBuilder {
|
||||
|
||||
private final static MultiPartBuilder BUILDER = new MultiPartBuilder();
|
||||
|
||||
public static MultiPartBuilder create(StateDefinition<Block, BlockState> stateDefinition) {
|
||||
BUILDER.stateDefinition = stateDefinition;
|
||||
BUILDER.modelParts.clear();
|
||||
return BUILDER;
|
||||
}
|
||||
|
||||
private final List<ModelPart> modelParts = Lists.newArrayList();
|
||||
private StateDefinition<Block, BlockState> stateDefinition;
|
||||
|
||||
private MultiPartBuilder() {}
|
||||
|
||||
public ModelPart part(ResourceLocation modelId) {
|
||||
return new ModelPart(modelId);
|
||||
}
|
||||
|
||||
public MultiPart build() {
|
||||
if (modelParts.size() > 0) {
|
||||
List<Selector> selectors = Lists.newArrayList();
|
||||
modelParts.forEach(modelPart -> {
|
||||
MultiVariant variant = createMultiVariant(modelPart.modelId, modelPart.transform, modelPart.uvLock);
|
||||
selectors.add(new Selector(modelPart.condition, variant));
|
||||
});
|
||||
modelParts.clear();
|
||||
return new MultiPart(stateDefinition, selectors);
|
||||
}
|
||||
throw new IllegalStateException("At least one model part need to be created.");
|
||||
}
|
||||
|
||||
public class ModelPart {
|
||||
private final ResourceLocation modelId;
|
||||
private Transformation transform = Transformation.identity();
|
||||
private Condition condition = Condition.TRUE;
|
||||
private boolean uvLock = false;
|
||||
|
||||
private ModelPart(ResourceLocation modelId) {
|
||||
this.modelId = modelId;
|
||||
}
|
||||
|
||||
public ModelPart setCondition(Function<BlockState, Boolean> condition) {
|
||||
this.condition = stateDefinition -> condition::apply;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelPart setTransformation(Transformation transform) {
|
||||
this.transform = transform;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ModelPart setUVLock(boolean value) {
|
||||
this.uvLock = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void add() {
|
||||
modelParts.add(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -80,11 +80,11 @@ public class REIPlugin implements REIPluginV0 {
|
|||
}
|
||||
|
||||
static {
|
||||
List<EntryStack> anvils = Lists.newArrayList(EntryStack.ofItems(EndItems.getModBlocks().stream()
|
||||
List<EntryStack> anvils = Lists.newArrayList(EntryStack.ofItems(EndItems.getModBlocks(BetterEnd.MOD_ID).stream()
|
||||
.filter(item -> ((BlockItem) item).getBlock() instanceof EndAnvilBlock).collect(Collectors.toList())));
|
||||
anvils.add(0, EntryStack.create(Blocks.ANVIL));
|
||||
ANVILS = anvils.toArray(new EntryStack[0]);
|
||||
FURNACES = Lists.newArrayList(EntryStack.ofItems(EndItems.getModBlocks().stream()
|
||||
FURNACES = Lists.newArrayList(EntryStack.ofItems(EndItems.getModBlocks(BetterEnd.MOD_ID).stream()
|
||||
.filter(item -> ((BlockItem) item).getBlock() instanceof EndFurnaceBlock).collect(Collectors.toList())))
|
||||
.toArray(new EntryStack[0]);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package ru.betterend.interfaces;
|
|||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.registry.EndItems;
|
||||
|
||||
public interface MultiModelItem {
|
||||
|
@ -9,7 +10,7 @@ public interface MultiModelItem {
|
|||
void registerModelPredicate();
|
||||
|
||||
static void register() {
|
||||
EndItems.getModItems().forEach(item -> {
|
||||
EndItems.getModItems(BetterEnd.MOD_ID).forEach(item -> {
|
||||
if (item instanceof MultiModelItem) {
|
||||
((MultiModelItem) item).registerModelPredicate();
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.world.item.ItemUtils;
|
|||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.UseAnim;
|
||||
import net.minecraft.world.level.Level;
|
||||
import ru.bclib.items.ModelProviderItem;
|
||||
|
||||
public class DrinkItem extends ModelProviderItem {
|
||||
public DrinkItem(Properties settings) {
|
||||
|
|
|
@ -4,7 +4,9 @@ import net.minecraft.client.renderer.block.model.BlockModel;
|
|||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Rarity;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.bclib.items.ModelProviderItem;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.registry.EndItems;
|
||||
|
||||
public class EnchantedPetalItem extends ModelProviderItem {
|
||||
|
@ -19,6 +21,6 @@ public class EnchantedPetalItem extends ModelProviderItem {
|
|||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createItemModel("hydralux_petal");
|
||||
return ModelsHelper.createItemModel(BetterEnd.makeID("hydralux_petal"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
|||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
import net.minecraft.world.item.ArmorItem;
|
||||
import net.minecraft.world.item.ArmorMaterial;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.bclib.client.models.ItemModelProvider;
|
||||
|
||||
public class EndArmorItem extends ArmorItem implements ItemModelProvider {
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package ru.betterend.item;
|
|||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.item.FishBucketItem;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.bclib.client.models.ItemModelProvider;
|
||||
import ru.betterend.registry.EndItems;
|
||||
|
||||
public class EndBucketItem extends FishBucketItem implements ItemModelProvider {
|
||||
|
|
|
@ -2,7 +2,7 @@ package ru.betterend.item;
|
|||
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.world.item.RecordItem;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.bclib.client.models.ItemModelProvider;
|
||||
|
||||
public class EndDiscItem extends RecordItem implements ItemModelProvider {
|
||||
public EndDiscItem(int comparatorOutput, SoundEvent sound, Properties settings) {
|
||||
|
|
|
@ -6,8 +6,8 @@ import net.minecraft.client.renderer.block.model.BlockModel;
|
|||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.item.SpawnEggItem;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ItemModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.client.models.Patterns;
|
||||
|
||||
public class EndSpawnEggItem extends SpawnEggItem implements ItemModelProvider {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package ru.betterend.item;
|
||||
|
||||
import net.minecraft.world.item.Rarity;
|
||||
import ru.bclib.items.ModelProviderItem;
|
||||
import ru.betterend.registry.EndItems;
|
||||
|
||||
public class EternalCrystalItem extends ModelProviderItem {
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.minecraft.world.item.Item;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
import net.minecraft.world.level.Level;
|
||||
import ru.bclib.items.ModelProviderItem;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.registry.EndItems;
|
||||
import ru.betterend.util.LangUtil;
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
package ru.betterend.item;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.Item;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class ModelProviderItem extends Item implements ItemModelProvider {
|
||||
public ModelProviderItem(Properties settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createItemModel(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
package ru.betterend.item.tool;
|
||||
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.AxeItem;
|
||||
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.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndAxeItem extends AxeItem implements DynamicAttributeTool, ItemModelProvider {
|
||||
public EndAxeItem(Tier material, float attackDamage, float attackSpeed, Properties settings) {
|
||||
super(material, attackDamage, attackSpeed, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMiningLevel(Tag<Item> tag, BlockState state, ItemStack stack, LivingEntity user) {
|
||||
if (tag.equals(FabricToolTags.AXES)) {
|
||||
return this.getTier().getLevel();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -28,8 +28,8 @@ 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.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
import ru.bclib.client.models.ItemModelProvider;
|
||||
import ru.bclib.client.models.ModelsHelper;
|
||||
import ru.betterend.registry.EndTags;
|
||||
|
||||
public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, ItemModelProvider {
|
||||
|
@ -134,6 +134,6 @@ public class EndHammerItem extends DiggerItem implements DynamicAttributeTool, I
|
|||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
return ModelsHelper.createHandheldItem(resourceLocation);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package ru.betterend.item.tool;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.HoeItem;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndHoeItem extends HoeItem implements ItemModelProvider {
|
||||
public EndHoeItem(Tier material, int attackDamage, float attackSpeed, Properties settings) {
|
||||
super(material, attackDamage, attackSpeed, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
package ru.betterend.item.tool;
|
||||
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl;
|
||||
import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl.Entry;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
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.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndPickaxeItem extends PickaxeItem implements DynamicAttributeTool, ItemModelProvider {
|
||||
public EndPickaxeItem(Tier material, int attackDamage, float attackSpeed, Properties settings) {
|
||||
super(material, attackDamage, attackSpeed, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMiningLevel(Tag<Item> tag, BlockState state, ItemStack stack, LivingEntity user) {
|
||||
if (tag.equals(FabricToolTags.PICKAXES)) {
|
||||
return getTier().getLevel();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDestroySpeed(ItemStack stack, BlockState state) {
|
||||
if (getTier().getLevel() > 2 && state.getMaterial().equals(Blocks.END_STONE.defaultBlockState().getMaterial())) {
|
||||
return speed * 3;
|
||||
}
|
||||
Entry entry = ToolManagerImpl.entryNullable(state.getBlock());
|
||||
return (entry != null && entry.getMiningLevel(FabricToolTags.PICKAXES) >= 0) ? speed : super.getDestroySpeed(stack, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
package ru.betterend.item.tool;
|
||||
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl;
|
||||
import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl.Entry;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
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.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndShovelItem extends ShovelItem implements DynamicAttributeTool, ItemModelProvider {
|
||||
public EndShovelItem(Tier material, float attackDamage, float attackSpeed, Properties settings) {
|
||||
super(material, attackDamage, attackSpeed, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMiningLevel(Tag<Item> tag, BlockState state, ItemStack stack, LivingEntity user) {
|
||||
if (tag.equals(FabricToolTags.SHOVELS)) {
|
||||
return this.getTier().getLevel();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getDestroySpeed(ItemStack stack, BlockState state) {
|
||||
Entry entry = ToolManagerImpl.entryNullable(state.getBlock());
|
||||
return (entry != null && entry.getMiningLevel(FabricToolTags.SHOVELS) >= 0) ? speed : super.getDestroySpeed(stack, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package ru.betterend.item.tool;
|
||||
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.SwordItem;
|
||||
import net.minecraft.world.item.Tier;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import ru.betterend.client.models.ModelsHelper;
|
||||
|
||||
public class EndSwordItem extends SwordItem implements DynamicAttributeTool, ItemModelProvider {
|
||||
public EndSwordItem(Tier material, int attackDamage, float attackSpeed, Properties settings) {
|
||||
super(material, attackDamage, attackSpeed, settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockModel getItemModel(ResourceLocation resourceLocation) {
|
||||
return ModelsHelper.createHandheldItem(resourceLocation.getPath());
|
||||
}
|
||||
}
|
|
@ -1,114 +1,20 @@
|
|||
package ru.betterend.mixin.client;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import net.minecraft.client.renderer.block.BlockModelShaper;
|
||||
import net.minecraft.client.renderer.block.model.BlockModel;
|
||||
import net.minecraft.client.renderer.block.model.multipart.MultiPart;
|
||||
import net.minecraft.client.resources.model.ModelBakery;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.client.resources.model.UnbakedModel;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
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 net.minecraft.world.level.block.state.BlockState;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.client.models.BlockModelProvider;
|
||||
import ru.betterend.client.models.ItemModelProvider;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
import ru.betterend.world.generator.GeneratorOptions;
|
||||
|
||||
@Mixin(ModelBakery.class)
|
||||
public abstract class ModelLoaderMixin {
|
||||
@Final
|
||||
@Shadow
|
||||
private ResourceManager resourceManager;
|
||||
@Final
|
||||
@Shadow
|
||||
private Map<ResourceLocation, UnbakedModel> unbakedCache;
|
||||
|
||||
@Shadow
|
||||
protected abstract void cacheAndQueueDependencies(ResourceLocation resourceLocation, UnbakedModel unbakedModel);
|
||||
|
||||
@Inject(method = "loadModel", at = @At("HEAD"), cancellable = true)
|
||||
private void be_loadModels(ResourceLocation resourceLocation, CallbackInfo info) {
|
||||
if (resourceLocation instanceof ModelResourceLocation) {
|
||||
String modId = resourceLocation.getNamespace();
|
||||
String path = resourceLocation.getPath();
|
||||
ResourceLocation clearLoc = new ResourceLocation(modId, path);
|
||||
ModelResourceLocation modelId = (ModelResourceLocation) resourceLocation;
|
||||
if ("inventory".equals(modelId.getVariant())) {
|
||||
ResourceLocation itemLoc = new ResourceLocation(modId, "item/" + path);
|
||||
ResourceLocation itemModelLoc = new ResourceLocation(modId, "models/" + itemLoc.getPath() + ".json");
|
||||
if (!resourceManager.hasResource(itemModelLoc)) {
|
||||
Item item = Registry.ITEM.get(clearLoc);
|
||||
ItemModelProvider modelProvider = null;
|
||||
if (item instanceof ItemModelProvider) {
|
||||
modelProvider = (ItemModelProvider) item;
|
||||
} else if (item instanceof BlockItem) {
|
||||
Block block = Registry.BLOCK.get(clearLoc);
|
||||
if (block instanceof ItemModelProvider) {
|
||||
modelProvider = (ItemModelProvider) block;
|
||||
}
|
||||
}
|
||||
if (modelProvider != null) {
|
||||
BlockModel model = modelProvider.getItemModel(clearLoc);
|
||||
if (model != null) {
|
||||
model.name = itemLoc.toString();
|
||||
cacheAndQueueDependencies(modelId, model);
|
||||
unbakedCache.put(itemLoc, model);
|
||||
} else {
|
||||
BetterEnd.LOGGER.warning("Error loading model: {}", itemLoc);
|
||||
}
|
||||
info.cancel();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ResourceLocation stateLoc = new ResourceLocation(modId, "blockstates/" + path + ".json");
|
||||
if (!resourceManager.hasResource(stateLoc)) {
|
||||
Block block = Registry.BLOCK.get(clearLoc);
|
||||
if (block instanceof BlockModelProvider) {
|
||||
List<BlockState> possibleStates = block.getStateDefinition().getPossibleStates();
|
||||
Optional<BlockState> possibleState = possibleStates.stream()
|
||||
.filter(state -> modelId.equals(BlockModelShaper.stateToModelLocation(clearLoc, state)))
|
||||
.findFirst();
|
||||
if (possibleState.isPresent()) {
|
||||
UnbakedModel modelVariant = ((BlockModelProvider) block).getModelVariant(modelId, possibleState.get(), unbakedCache);
|
||||
if (modelVariant != null) {
|
||||
if (modelVariant instanceof MultiPart) {
|
||||
possibleStates.forEach(state -> {
|
||||
ResourceLocation stateId = BlockModelShaper.stateToModelLocation(clearLoc, state);
|
||||
cacheAndQueueDependencies(stateId, modelVariant);
|
||||
});
|
||||
} else {
|
||||
cacheAndQueueDependencies(modelId, modelVariant);
|
||||
}
|
||||
} else {
|
||||
BetterEnd.LOGGER.warning("Error loading variant: {}", modelId);
|
||||
}
|
||||
info.cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ModifyVariable(method = "loadModel", ordinal = 2, at = @At(value = "INVOKE"))
|
||||
public ResourceLocation be_switchModel(ResourceLocation id) {
|
||||
if (GeneratorOptions.changeChorusPlant() && id.getNamespace().equals("minecraft") && id.getPath().startsWith("blockstates/") && id.getPath().contains("chorus") && !id.getPath().contains("custom_")) {
|
||||
if (GeneratorOptions.changeChorusPlant() && id.getNamespace().equals("minecraft") &&
|
||||
id.getPath().startsWith("blockstates/") && id.getPath().contains("chorus") &&
|
||||
!id.getPath().contains("custom_")) {
|
||||
id = new ResourceLocation(id.getPath().replace("chorus", "custom_chorus"));
|
||||
}
|
||||
return id;
|
||||
|
|
|
@ -6,6 +6,8 @@ import net.minecraft.world.item.BlockItem;
|
|||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import ru.bclib.blocks.BaseChestBlock;
|
||||
import ru.bclib.registry.BaseRegistry;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.blocks.EndStoneSmelter;
|
||||
import ru.betterend.blocks.EternalPedestal;
|
||||
|
@ -34,17 +36,11 @@ public class EndBlockEntities {
|
|||
public static void register() {}
|
||||
|
||||
static Block[] getPedestals() {
|
||||
List<Block> result = Lists.newArrayList();
|
||||
EndItems.getModBlocks().forEach((item) -> {
|
||||
if (item instanceof BlockItem) {
|
||||
Block block = ((BlockItem) item).getBlock();
|
||||
if (block instanceof EternalPedestal ||
|
||||
block instanceof InfusionPedestal) return;
|
||||
if (block instanceof PedestalBlock) {
|
||||
result.add(block);
|
||||
}
|
||||
}
|
||||
});
|
||||
return result.toArray(new Block[] {});
|
||||
return BaseRegistry.getRegisteredBlocks().values().stream()
|
||||
.filter(item -> item instanceof BlockItem)
|
||||
.map(item -> ((BlockItem) item).getBlock())
|
||||
.filter(block -> block instanceof PedestalBlock &&
|
||||
!(block instanceof EternalPedestal || block instanceof InfusionPedestal))
|
||||
.toArray(Block[]::new);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package ru.betterend.registry;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
|
@ -18,25 +16,10 @@ import ru.bclib.items.tool.*;
|
|||
import ru.bclib.registry.ItemsRegistry;
|
||||
import ru.betterend.BetterEnd;
|
||||
import ru.betterend.config.Configs;
|
||||
import ru.betterend.item.ArmoredElytra;
|
||||
import ru.betterend.item.CrystaliteBoots;
|
||||
import ru.betterend.item.CrystaliteChestplate;
|
||||
import ru.betterend.item.CrystaliteHelmet;
|
||||
import ru.betterend.item.CrystaliteLeggings;
|
||||
import ru.betterend.item.DrinkItem;
|
||||
import ru.betterend.item.EnchantedPetalItem;
|
||||
import ru.betterend.item.EndArmorItem;
|
||||
import ru.betterend.item.EndBucketItem;
|
||||
import ru.betterend.item.EternalCrystalItem;
|
||||
import ru.betterend.item.ModelProviderItem;
|
||||
import ru.betterend.item.*;
|
||||
import ru.betterend.item.material.EndArmorMaterial;
|
||||
import ru.betterend.item.material.EndToolMaterial;
|
||||
import ru.betterend.item.tool.EndAxeItem;
|
||||
import ru.betterend.item.tool.EndHammerItem;
|
||||
import ru.betterend.item.tool.EndHoeItem;
|
||||
import ru.betterend.item.tool.EndPickaxeItem;
|
||||
import ru.betterend.item.tool.EndShovelItem;
|
||||
import ru.betterend.item.tool.EndSwordItem;
|
||||
import ru.betterend.tab.CreativeTabs;
|
||||
|
||||
public class EndItems extends ItemsRegistry {
|
||||
|
|
|
@ -82,7 +82,7 @@ public class EndTags {
|
|||
TagAPI.addEndGround(EndBlocks.ENDSTONE_DUST);
|
||||
TagAPI.addEndGround(EndBlocks.AMBER_ORE);
|
||||
|
||||
EndItems.getModBlocks().forEach(blockItem -> {
|
||||
EndItems.getModBlocks(BetterEnd.MOD_ID).forEach(blockItem -> {
|
||||
Block block = ((BlockItem) blockItem).getBlock();
|
||||
if (block instanceof EndTerrainBlock) {
|
||||
TagAPI.addEndGround(block);
|
||||
|
@ -106,7 +106,7 @@ public class EndTags {
|
|||
});
|
||||
|
||||
List<Item> hammers = Lists.newArrayList();
|
||||
EndItems.getModItems().forEach(item -> {
|
||||
EndItems.getModItems(BetterEnd.MOD_ID).forEach(item -> {
|
||||
if (item.isEdible()) {
|
||||
FoodProperties food = item.getFoodProperties();
|
||||
if (food != null) {
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package ru.betterend.tab;
|
||||
|
||||
import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
@ -8,6 +11,8 @@ import ru.betterend.BetterEnd;
|
|||
import ru.betterend.registry.EndBlocks;
|
||||
import ru.betterend.registry.EndItems;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CreativeTabs {
|
||||
public static final CreativeModeTab TAB_BLOCKS;
|
||||
public static final CreativeModeTab TAB_ITEMS;
|
||||
|
@ -15,15 +20,13 @@ public class CreativeTabs {
|
|||
static {
|
||||
TAB_BLOCKS = FabricItemGroupBuilder.create(BetterEnd.makeID("end_blocks"))
|
||||
.icon(() -> new ItemStack(EndBlocks.END_MYCELIUM)).appendItems(stacks -> {
|
||||
for (Item i : EndItems.getModBlocks()) {
|
||||
stacks.add(new ItemStack(i));
|
||||
}
|
||||
stacks.addAll(EndItems.getModBlocks(BetterEnd.MOD_ID).stream()
|
||||
.map(ItemStack::new).collect(Collectors.toList()));
|
||||
}).build();
|
||||
TAB_ITEMS = FabricItemGroupBuilder.create(BetterEnd.makeID("end_items"))
|
||||
.icon(() -> new ItemStack(EndItems.ETERNAL_CRYSTAL)).appendItems(stacks -> {
|
||||
for (Item i : EndItems.getModItems()) {
|
||||
stacks.add(new ItemStack(i));
|
||||
}
|
||||
stacks.addAll(EndItems.getModItems(BetterEnd.MOD_ID).stream()
|
||||
.map(ItemStack::new).collect(Collectors.toList()));
|
||||
}).build();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
"fabricloader": ">=0.11.0",
|
||||
"fabric": ">=0.32.0",
|
||||
"minecraft": ">=1.16.4",
|
||||
"bclib": ">=0.1.10"
|
||||
"bclib": ">=0.1.12"
|
||||
},
|
||||
"suggests": {
|
||||
"byg": ">=1.1.3",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue