From 7caecce978de92c9048e0d9fc52ce935bee844df Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Tue, 10 Jul 2018 00:06:52 +0200 Subject: [PATCH] Register item models in the item class itself. --- .../apiimpl/network/NetworkNodeGraph.java | 2 +- .../refinedstorage/block/BlockBase.java | 4 +- .../refinedstorage/block/BlockController.java | 4 +- .../block/BlockFluidStorage.java | 7 +- .../refinedstorage/block/BlockGrid.java | 4 +- .../block/BlockPortableGrid.java | 4 +- .../refinedstorage/block/BlockStorage.java | 7 +- .../block/BlockStorageMonitor.java | 3 + .../refinedstorage/block/info/BlockInfo.java | 8 +- .../refinedstorage/item/ItemBase.java | 18 +- .../refinedstorage/item/ItemCore.java | 18 +- .../refinedstorage/item/ItemCover.java | 21 +- .../refinedstorage/item/ItemCuttingTool.java | 14 +- .../refinedstorage/item/ItemEnergyItem.java | 6 +- .../refinedstorage/item/ItemFilter.java | 13 +- .../item/ItemFluidStorageDisk.java | 32 ++- .../item/ItemFluidStoragePart.java | 26 ++- .../refinedstorage/item/ItemHollowCover.java | 14 +- .../refinedstorage/item/ItemNetworkCard.java | 14 +- .../refinedstorage/item/ItemNetworkItem.java | 14 +- .../refinedstorage/item/ItemPattern.java | 19 +- .../refinedstorage/item/ItemProcessor.java | 32 ++- .../item/ItemQuartzEnrichedIron.java | 15 +- .../refinedstorage/item/ItemSecurityCard.java | 14 +- .../refinedstorage/item/ItemSilicon.java | 15 +- .../refinedstorage/item/ItemStorageDisk.java | 33 ++- .../item/ItemStorageHousing.java | 15 +- .../refinedstorage/item/ItemStoragePart.java | 26 ++- .../refinedstorage/item/ItemUpgrade.java | 34 ++- .../item/ItemWirelessCraftingMonitor.java | 13 +- .../item/ItemWirelessFluidGrid.java | 13 +- .../refinedstorage/item/ItemWirelessGrid.java | 18 +- .../CapabilityProviderEnergy.java | 2 +- .../refinedstorage/item/info/IItemInfo.java | 7 + .../refinedstorage/item/info/ItemInfo.java | 16 ++ .../item/{ => itemblock}/ItemBlockBase.java | 17 +- .../{ => itemblock}/ItemBlockController.java | 9 +- .../{ => itemblock}/ItemBlockEnergyItem.java | 10 +- .../ItemBlockFluidStorage.java | 11 +- .../ItemBlockPortableGrid.java | 10 +- .../{ => itemblock}/ItemBlockStorage.java | 11 +- .../MessageGridCraftingPreviewResponse.java | 19 +- .../MessageGridCraftingStartResponse.java | 15 +- .../refinedstorage/proxy/ProxyClient.java | 205 +++--------------- .../refinedstorage/proxy/ProxyCommon.java | 2 +- .../render/IModelRegistration.java | 13 ++ .../render/color/ItemColorPattern.java | 25 +++ .../ItemMeshDefinitionPortableGrid.java | 2 +- .../tile/grid/portable/PortableGrid.java | 2 +- .../tile/grid/portable/TilePortableGrid.java | 2 +- 50 files changed, 579 insertions(+), 279 deletions(-) rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => capprovider}/CapabilityProviderEnergy.java (95%) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/item/info/IItemInfo.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/item/info/ItemInfo.java rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockBase.java (73%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockController.java (87%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockEnergyItem.java (91%) rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockFluidStorage.java (93%) mode change 100755 => 100644 rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockPortableGrid.java (90%) rename src/main/java/com/raoulvdberge/refinedstorage/item/{ => itemblock}/ItemBlockStorage.java (93%) mode change 100755 => 100644 create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/render/color/ItemColorPattern.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java index 9b416b68a..97d899895 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/NetworkNodeGraph.java @@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; -import com.raoulvdberge.refinedstorage.item.ItemBlockController; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockController; import com.raoulvdberge.refinedstorage.tile.TileController; import net.minecraft.block.state.IBlockState; import net.minecraft.inventory.InventoryHelper; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java index 7ee9dbe68..d64b3c735 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockBase.java @@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.block; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; -import com.raoulvdberge.refinedstorage.item.ItemBlockBase; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockBase; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.util.WorldUtils; @@ -64,7 +64,7 @@ public abstract class BlockBase extends Block { } public Item createItem() { - return new ItemBlockBase(this, getDirection(), false); + return new ItemBlockBase(this, false); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java index 86547f2e1..869a7d7f0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType; import com.raoulvdberge.refinedstorage.block.enums.ControllerType; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.ItemBlockController; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockController; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileController; import net.minecraft.block.properties.PropertyEnum; @@ -117,6 +117,6 @@ public class BlockController extends BlockNodeProxy { @Override public Item createItem() { - return new ItemBlockController(this, getDirection()); + return new ItemBlockController(this); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java index 6b0802f7b..4d09cfc75 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockFluidStorage.java @@ -1,11 +1,10 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage; import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.ItemBlockFluidStorage; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockFluidStorage; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileFluidStorage; import net.minecraft.block.properties.PropertyEnum; @@ -75,7 +74,7 @@ public class BlockFluidStorage extends BlockNode { @Override public Item createItem() { - return new ItemBlockFluidStorage(this, getDirection()); + return new ItemBlockFluidStorage(this); } @Override @@ -98,7 +97,7 @@ public class BlockFluidStorage extends BlockNode { public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { TileFluidStorage storage = (TileFluidStorage) world.getTileEntity(pos); - ItemStack stack = new ItemStack(RSBlocks.FLUID_STORAGE, 1, getMetaFromState(state)); + ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); stack.setTagCompound(new NBTTagCompound()); stack.getTagCompound().setUniqueId(NetworkNodeFluidStorage.NBT_ID, storage.getNode().getStorageId()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java index fa48928f3..146d3ce95 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockGrid.java @@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.api.network.grid.GridType; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.ItemBlockBase; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockBase; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; @@ -85,6 +85,6 @@ public class BlockGrid extends BlockNode { @Override public Item createItem() { - return new ItemBlockBase(this, getDirection(), true); + return new ItemBlockBase(this, true); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java index d3e2d493e..249c8499f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockPortableGrid.java @@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.block.enums.PortableGridDiskState; import com.raoulvdberge.refinedstorage.block.enums.PortableGridType; import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid; import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid; @@ -57,7 +57,7 @@ public class BlockPortableGrid extends BlockBase { @Override public Item createItem() { - return new ItemBlockPortableGrid(this, getDirection()); + return new ItemBlockPortableGrid(this); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java index 25a934549..e455f4787 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorage.java @@ -1,11 +1,10 @@ package com.raoulvdberge.refinedstorage.block; -import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage; import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.item.ItemBlockStorage; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockStorage; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.tile.TileStorage; import net.minecraft.block.properties.PropertyEnum; @@ -75,7 +74,7 @@ public class BlockStorage extends BlockNode { @Override public Item createItem() { - return new ItemBlockStorage(this, getDirection()); + return new ItemBlockStorage(this); } @Override @@ -98,7 +97,7 @@ public class BlockStorage extends BlockNode { public void getDrops(NonNullList drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { TileStorage storage = (TileStorage) world.getTileEntity(pos); - ItemStack stack = new ItemStack(RSBlocks.STORAGE, 1, getMetaFromState(state)); + ItemStack stack = new ItemStack(this, 1, getMetaFromState(state)); stack.setTagCompound(new NBTTagCompound()); stack.getTagCompound().setUniqueId(NetworkNodeStorage.NBT_ID, storage.getNode().getStorageId()); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java index 6adcf133e..8ab68fd95 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockStorageMonitor.java @@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeStorageMo import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.tesr.TileEntitySpecialRendererStorageMonitor; import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -30,6 +31,8 @@ public class BlockStorageMonitor extends BlockNode { @SideOnly(Side.CLIENT) public void registerModels(IModelRegistration modelRegistration) { modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north")); + + modelRegistration.setTesr(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor()); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java index 555758eda..407b45a4c 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/info/BlockInfo.java @@ -12,8 +12,7 @@ public class BlockInfo implements IBlockInfo { private final Material material; private final SoundType soundType; private final float hardness; - private final String id; - private final String modId; + private final ResourceLocation id; private final Object modObject; @Nullable private final Supplier tileSupplier; @@ -22,8 +21,7 @@ public class BlockInfo implements IBlockInfo { this.material = material; this.soundType = soundType; this.hardness = hardness; - this.id = id; - this.modId = modId; + this.id = new ResourceLocation(modId, id); this.modObject = modObject; this.tileSupplier = tileSupplier; } @@ -40,7 +38,7 @@ public class BlockInfo implements IBlockInfo { @Override public ResourceLocation getId() { - return new ResourceLocation(modId, id); + return id; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java index 25fcbb2c1..c4edd00c9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBase.java @@ -1,26 +1,30 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.IItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public abstract class ItemBase extends Item { - private final String name; + protected final IItemInfo info; - public ItemBase(String name) { - this.name = name; + public ItemBase(IItemInfo info) { + this.info = info; - setRegistryName(getDomain(), name); + setRegistryName(info.getId()); setCreativeTab(RS.INSTANCE.tab); } - protected String getDomain() { - return RS.ID; + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { } @Override public String getUnlocalizedName() { - return "item." + getDomain() + ":" + name; + return "item." + info.getId().toString(); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCore.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCore.java index 09851f7de..550c3ad1b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCore.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCore.java @@ -1,20 +1,36 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemCore extends ItemBase { public static final int TYPE_CONSTRUCTION = 0; public static final int TYPE_DESTRUCTION = 1; public ItemCore() { - super("core"); + super(new ItemInfo(RS.ID, "core")); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants(this, new ResourceLocation(RS.ID, "construction_core"), new ResourceLocation(RS.ID, "destruction_core")); + + modelRegistration.setModel(this, TYPE_CONSTRUCTION, new ModelResourceLocation(RS.ID + ":construction_core", "inventory")); + modelRegistration.setModel(this, TYPE_DESTRUCTION, new ModelResourceLocation(RS.ID + ":destruction_core", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java index 5074c105b..277614cd9 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCover.java @@ -7,9 +7,14 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.ICoverable; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType; +import com.raoulvdberge.refinedstorage.item.info.IItemInfo; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderCover; import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.util.WorldUtils; import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -24,6 +29,8 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -32,14 +39,22 @@ import java.util.List; public class ItemCover extends ItemBase { private static final String NBT_ITEM = "Item"; - public ItemCover(String name) { - super(name); + public ItemCover(IItemInfo info) { + super(info); setCreativeTab(RS.INSTANCE.coversTab); } public ItemCover() { - this("cover"); + this(new ItemInfo(RS.ID, "cover")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + modelRegistration.addModelLoader(() -> new CustomModelLoaderCover()); // Don't use a method reference here, it crashes the server! } public static void setItem(ItemStack cover, ItemStack item) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCuttingTool.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCuttingTool.java index 92b4a91cc..fc90a19ab 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCuttingTool.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemCuttingTool.java @@ -1,15 +1,27 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemCuttingTool extends ItemBase { public ItemCuttingTool() { - super("cutting_tool"); + super(new ItemInfo(RS.ID, "cutting_tool")); setMaxDamage(50 - 1); setMaxStackSize(1); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public boolean isRepairable() { return false; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java index 5050c4d08..baf40adbd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemEnergyItem.java @@ -1,5 +1,7 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.item.capprovider.CapabilityProviderEnergy; +import com.raoulvdberge.refinedstorage.item.info.IItemInfo; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -21,8 +23,8 @@ public abstract class ItemEnergyItem extends ItemBase { private int energyCapacity; - public ItemEnergyItem(String name, int energyCapacity) { - super(name); + public ItemEnergyItem(IItemInfo info, int energyCapacity) { + super(info); this.energyCapacity = energyCapacity; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFilter.java index 041207040..4f6ba1689 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFilter.java @@ -6,7 +6,10 @@ import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.IFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilterItems; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.util.RenderUtils; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -17,6 +20,8 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -29,11 +34,17 @@ public class ItemFilter extends ItemBase { private static final String NBT_ICON = "Icon"; public ItemFilter() { - super("filter"); + super(new ItemInfo(RS.ID, "filter")); setMaxStackSize(1); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStorageDisk.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStorageDisk.java index f23ec56fd..55c589690 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStorageDisk.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStorageDisk.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.storage.StorageType; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; @@ -7,6 +8,9 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -15,11 +19,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; +import net.minecraft.util.*; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -35,13 +38,32 @@ public class ItemFluidStorageDisk extends ItemBase implements IStorageDiskProvid public static final int TYPE_CREATIVE = 4; public ItemFluidStorageDisk() { - super("fluid_storage_disk"); + super(new ItemInfo(RS.ID, "fluid_storage_disk")); setMaxStackSize(1); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "64k_fluid_storage_disk"), + new ResourceLocation(RS.ID, "256k_fluid_storage_disk"), + new ResourceLocation(RS.ID, "1024k_fluid_storage_disk"), + new ResourceLocation(RS.ID, "4096k_fluid_storage_disk"), + new ResourceLocation(RS.ID, "creative_fluid_storage_disk") + ); + + modelRegistration.setModel(this, TYPE_64K, new ModelResourceLocation(RS.ID + ":64k_fluid_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_256K, new ModelResourceLocation(RS.ID + ":256k_fluid_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_1024K, new ModelResourceLocation(RS.ID + ":1024k_fluid_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_4096K, new ModelResourceLocation(RS.ID + ":4096k_fluid_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_CREATIVE, new ModelResourceLocation(RS.ID + ":creative_fluid_storage_disk", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStoragePart.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStoragePart.java index effd1481e..1852aef65 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStoragePart.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemFluidStoragePart.java @@ -1,8 +1,15 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemFluidStoragePart extends ItemBase { public static final int TYPE_64K = 0; @@ -11,12 +18,29 @@ public class ItemFluidStoragePart extends ItemBase { public static final int TYPE_4096K = 3; public ItemFluidStoragePart() { - super("fluid_storage_part"); + super(new ItemInfo(RS.ID, "fluid_storage_part")); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "64k_fluid_storage_part"), + new ResourceLocation(RS.ID, "256k_fluid_storage_part"), + new ResourceLocation(RS.ID, "1024k_fluid_storage_part"), + new ResourceLocation(RS.ID, "4096k_fluid_storage_part") + ); + + modelRegistration.setModel(this, TYPE_64K, new ModelResourceLocation(RS.ID + ":64k_fluid_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_256K, new ModelResourceLocation(RS.ID + ":256k_fluid_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_1024K, new ModelResourceLocation(RS.ID + ":1024k_fluid_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_4096K, new ModelResourceLocation(RS.ID + ":4096k_fluid_storage_part", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemHollowCover.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemHollowCover.java index 7164b71b9..40eb06d12 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemHollowCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemHollowCover.java @@ -1,12 +1,24 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.Cover; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemHollowCover extends ItemCover { public ItemHollowCover() { - super("hollow_cover"); + super(new ItemInfo(RS.ID, "hollow_cover")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkCard.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkCard.java index fff16bf8d..485d0405d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkCard.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkCard.java @@ -1,7 +1,11 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSBlocks; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -12,6 +16,8 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -23,11 +29,17 @@ public class ItemNetworkCard extends ItemBase { private static final String NBT_DIMENSION = "Dimension"; public ItemNetworkCard() { - super("network_card"); + super(new ItemInfo(RS.ID, "network_card")); setMaxStackSize(1); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { Block block = world.getBlockState(pos).getBlock(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java index 912b9ec9f..a79815ca0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java @@ -3,6 +3,8 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; +import com.raoulvdberge.refinedstorage.item.info.IItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; @@ -15,6 +17,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -26,12 +30,18 @@ public abstract class ItemNetworkItem extends ItemEnergyItem implements INetwork private static final String NBT_CONTROLLER_Z = "ControllerZ"; private static final String NBT_DIMENSION_ID = "DimensionID"; - public ItemNetworkItem(String name, int energyCapacity) { - super(name, energyCapacity); + public ItemNetworkItem(IItemInfo info, int energyCapacity) { + super(info, energyCapacity); addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + + } + @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java index 318edd5fd..3a83336be 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemPattern.java @@ -7,8 +7,13 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContaine import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import com.raoulvdberge.refinedstorage.render.color.ItemColorPattern; +import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelPattern; import com.raoulvdberge.refinedstorage.util.RenderUtils; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; @@ -20,6 +25,8 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -38,7 +45,17 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider { public static final String NBT_PROCESSING = "Processing"; public ItemPattern() { - super("pattern"); + super(new ItemInfo(RS.ID, "pattern")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + + modelRegistration.addBakedModelOverride(info.getId(), BakedModelPattern::new); + + modelRegistration.addItemColor(this, new ItemColorPattern()); } public static CraftingPattern getPatternFromCache(World world, ItemStack stack) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemProcessor.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemProcessor.java index 044730d48..f19b1d18a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemProcessor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemProcessor.java @@ -1,8 +1,15 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemProcessor extends ItemBase { public static final int TYPE_CUT_BASIC = 0; @@ -14,12 +21,35 @@ public class ItemProcessor extends ItemBase { public static final int TYPE_CUT_SILICON = 6; public ItemProcessor() { - super("processor"); + super(new ItemInfo(RS.ID, "processor")); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "cut_basic_processor"), + new ResourceLocation(RS.ID, "cut_improved_processor"), + new ResourceLocation(RS.ID, "cut_advanced_processor"), + new ResourceLocation(RS.ID, "basic_processor"), + new ResourceLocation(RS.ID, "improved_processor"), + new ResourceLocation(RS.ID, "advanced_processor"), + new ResourceLocation(RS.ID, "cut_silicon") + ); + + modelRegistration.setModel(this, TYPE_CUT_BASIC, new ModelResourceLocation(RS.ID + ":cut_basic_processor", "inventory")); + modelRegistration.setModel(this, TYPE_CUT_IMPROVED, new ModelResourceLocation(RS.ID + ":cut_improved_processor", "inventory")); + modelRegistration.setModel(this, TYPE_CUT_ADVANCED, new ModelResourceLocation(RS.ID + ":cut_advanced_processor", "inventory")); + modelRegistration.setModel(this, TYPE_BASIC, new ModelResourceLocation(RS.ID + ":basic_processor", "inventory")); + modelRegistration.setModel(this, TYPE_IMPROVED, new ModelResourceLocation(RS.ID + ":improved_processor", "inventory")); + modelRegistration.setModel(this, TYPE_ADVANCED, new ModelResourceLocation(RS.ID + ":advanced_processor", "inventory")); + modelRegistration.setModel(this, TYPE_CUT_SILICON, new ModelResourceLocation(RS.ID + ":cut_silicon", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemQuartzEnrichedIron.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemQuartzEnrichedIron.java index 3f2bd0652..9572471f7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemQuartzEnrichedIron.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemQuartzEnrichedIron.java @@ -1,7 +1,20 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + public class ItemQuartzEnrichedIron extends ItemBase { public ItemQuartzEnrichedIron() { - super("quartz_enriched_iron"); + super(new ItemInfo(RS.ID, "quartz_enriched_iron")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSecurityCard.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSecurityCard.java index 9e2d41fc1..f2d87c6aa 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSecurityCard.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSecurityCard.java @@ -1,6 +1,10 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -11,6 +15,8 @@ import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -22,13 +28,19 @@ public class ItemSecurityCard extends ItemBase { private static final String NBT_PERMISSION = "Permission_%d"; public ItemSecurityCard() { - super("security_card"); + super(new ItemInfo(RS.ID, "security_card")); setMaxStackSize(1); addPropertyOverride(new ResourceLocation("active"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); + } + @Override public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSilicon.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSilicon.java index 9c64f9bb7..3fb890438 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSilicon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemSilicon.java @@ -1,7 +1,20 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + public class ItemSilicon extends ItemBase { public ItemSilicon() { - super("silicon"); + super(new ItemInfo(RS.ID, "silicon")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageDisk.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageDisk.java index e3578c7aa..25f02416a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageDisk.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageDisk.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.api.storage.StorageType; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; @@ -7,6 +8,9 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -15,11 +19,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; +import net.minecraft.util.*; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -35,13 +38,33 @@ public class ItemStorageDisk extends ItemBase implements IStorageDiskProvider { public static final int TYPE_CREATIVE = 4; public ItemStorageDisk() { - super("storage_disk"); + super(new ItemInfo(RS.ID, "storage_disk")); setMaxStackSize(1); setHasSubtypes(true); setMaxDamage(0); } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "1k_storage_disk"), + new ResourceLocation(RS.ID, "4k_storage_disk"), + new ResourceLocation(RS.ID, "16k_storage_disk"), + new ResourceLocation(RS.ID, "64k_storage_disk"), + new ResourceLocation(RS.ID, "creative_storage_disk") + ); + + modelRegistration.setModel(this, TYPE_1K, new ModelResourceLocation(RS.ID + ":1k_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_4K, new ModelResourceLocation(RS.ID + ":4k_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_16K, new ModelResourceLocation(RS.ID + ":16k_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_64K, new ModelResourceLocation(RS.ID + ":64k_storage_disk", "inventory")); + modelRegistration.setModel(this, TYPE_CREATIVE, new ModelResourceLocation(RS.ID + ":creative_storage_disk", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageHousing.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageHousing.java index da4bbb8f4..762e69fb0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageHousing.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStorageHousing.java @@ -1,7 +1,20 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + public class ItemStorageHousing extends ItemBase { public ItemStorageHousing() { - super("storage_housing"); + super(new ItemInfo(RS.ID, "storage_housing")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStoragePart.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStoragePart.java index b9031826a..1866b6d2a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStoragePart.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemStoragePart.java @@ -1,8 +1,15 @@ package com.raoulvdberge.refinedstorage.item; +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ItemStoragePart extends ItemBase { public static final int TYPE_1K = 0; @@ -11,12 +18,29 @@ public class ItemStoragePart extends ItemBase { public static final int TYPE_64K = 3; public ItemStoragePart() { - super("storage_part"); + super(new ItemInfo(RS.ID, "storage_part")); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "1k_storage_part"), + new ResourceLocation(RS.ID, "4k_storage_part"), + new ResourceLocation(RS.ID, "16k_storage_part"), + new ResourceLocation(RS.ID, "64k_storage_part") + ); + + modelRegistration.setModel(this, TYPE_1K, new ModelResourceLocation(RS.ID + ":1k_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_4K, new ModelResourceLocation(RS.ID + ":4k_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_16K, new ModelResourceLocation(RS.ID + ":16k_storage_part", "inventory")); + modelRegistration.setModel(this, TYPE_64K, new ModelResourceLocation(RS.ID + ":64k_storage_part", "inventory")); + } + @Override public void getSubItems(CreativeTabs tab, NonNullList items) { if (!isInCreativeTab(tab)) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java index 66b643171..d1b5750f6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java @@ -1,12 +1,18 @@ package com.raoulvdberge.refinedstorage.item; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nullable; import java.util.List; @@ -23,12 +29,38 @@ public class ItemUpgrade extends ItemBase { public static final int TYPE_FORTUNE_3 = 9; public ItemUpgrade() { - super("upgrade"); + super(new ItemInfo(RS.ID, "upgrade")); setHasSubtypes(true); setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModelVariants( + this, + new ResourceLocation(RS.ID, "upgrade"), + new ResourceLocation(RS.ID, "range_upgrade"), + new ResourceLocation(RS.ID, "speed_upgrade"), + new ResourceLocation(RS.ID, "stack_upgrade"), + new ResourceLocation(RS.ID, "interdimensional_upgrade"), + new ResourceLocation(RS.ID, "silk_touch_upgrade"), + new ResourceLocation(RS.ID, "fortune_upgrade") + ); + + modelRegistration.setModel(this, 0, new ModelResourceLocation(RS.ID + ":upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_RANGE, new ModelResourceLocation(RS.ID + ":range_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_SPEED, new ModelResourceLocation(RS.ID + ":speed_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_CRAFTING, new ModelResourceLocation(RS.ID + ":crafting_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_STACK, new ModelResourceLocation(RS.ID + ":stack_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_INTERDIMENSIONAL, new ModelResourceLocation(RS.ID + ":interdimensional_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_SILK_TOUCH, new ModelResourceLocation(RS.ID + ":silk_touch_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_FORTUNE_1, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_FORTUNE_2, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory")); + modelRegistration.setModel(this, TYPE_FORTUNE_3, new ModelResourceLocation(RS.ID + ":fortune_upgrade", "inventory")); + } + @Override public boolean hasEffect(ItemStack stack) { return stack.getMetadata() == TYPE_SILK_TOUCH || getFortuneLevel(stack) > 0; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java index ba0ecf258..e226e33b5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessCraftingMonitor.java @@ -6,9 +6,14 @@ import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import java.util.UUID; @@ -19,7 +24,13 @@ public class ItemWirelessCraftingMonitor extends ItemNetworkItem { public static final String NBT_TAB_PAGE = "TabPage"; public ItemWirelessCraftingMonitor() { - super("wireless_crafting_monitor", RS.INSTANCE.config.wirelessCraftingMonitorCapacity); + super(new ItemInfo(RS.ID, "wireless_crafting_monitor"), RS.INSTANCE.config.wirelessCraftingMonitorCapacity); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java index a813ec2e6..2e86b1f79 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java @@ -6,14 +6,25 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; public class ItemWirelessFluidGrid extends ItemNetworkItem { public ItemWirelessFluidGrid() { - super("wireless_fluid_grid", RS.INSTANCE.config.wirelessFluidGridCapacity); + super(new ItemInfo(RS.ID, "wireless_fluid_grid"), RS.INSTANCE.config.wirelessFluidGridCapacity); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java index 27062aed5..6c2689df5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessGrid.java @@ -6,18 +6,30 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; +import com.raoulvdberge.refinedstorage.item.info.IItemInfo; +import com.raoulvdberge.refinedstorage.item.info.ItemInfo; +import com.raoulvdberge.refinedstorage.render.IModelRegistration; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; public class ItemWirelessGrid extends ItemNetworkItem { - public ItemWirelessGrid(String name) { - super(name, RS.INSTANCE.config.wirelessGridCapacity); + public ItemWirelessGrid(IItemInfo info) { + super(info, RS.INSTANCE.config.wirelessGridCapacity); } public ItemWirelessGrid() { - super("wireless_grid", RS.INSTANCE.config.wirelessGridCapacity); + this(new ItemInfo(RS.ID, "wireless_grid")); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerModels(IModelRegistration modelRegistration) { + modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/CapabilityProviderEnergy.java b/src/main/java/com/raoulvdberge/refinedstorage/item/capprovider/CapabilityProviderEnergy.java similarity index 95% rename from src/main/java/com/raoulvdberge/refinedstorage/item/CapabilityProviderEnergy.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/capprovider/CapabilityProviderEnergy.java index 27a1a7e2c..7c846ea75 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/CapabilityProviderEnergy.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/capprovider/CapabilityProviderEnergy.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.capprovider; import com.raoulvdberge.refinedstorage.integration.forgeenergy.ItemEnergyForge; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/info/IItemInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/item/info/IItemInfo.java new file mode 100644 index 000000000..306e39117 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/info/IItemInfo.java @@ -0,0 +1,7 @@ +package com.raoulvdberge.refinedstorage.item.info; + +import net.minecraft.util.ResourceLocation; + +public interface IItemInfo { + ResourceLocation getId(); +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/info/ItemInfo.java b/src/main/java/com/raoulvdberge/refinedstorage/item/info/ItemInfo.java new file mode 100644 index 000000000..46a48c59d --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/info/ItemInfo.java @@ -0,0 +1,16 @@ +package com.raoulvdberge.refinedstorage.item.info; + +import net.minecraft.util.ResourceLocation; + +public class ItemInfo implements IItemInfo { + private final ResourceLocation id; + + public ItemInfo(String modId, String id) { + this.id = new ResourceLocation(modId, id); + } + + @Override + public ResourceLocation getId() { + return id; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockBase.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java old mode 100755 new mode 100644 similarity index 73% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockBase.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java index 9b7f6f6c5..926189b64 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockBase.java @@ -1,8 +1,7 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.block.BlockBase; import com.raoulvdberge.refinedstorage.tile.TileBase; -import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -13,14 +12,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class ItemBlockBase extends ItemBlock { - private BlockDirection direction; + private BlockBase block; - public ItemBlockBase(Block block, BlockDirection direction, boolean subtypes) { + public ItemBlockBase(BlockBase block, boolean subtypes) { super(block); - setRegistryName(block.getRegistryName()); + this.block = block; - this.direction = direction; + setRegistryName(block.getInfo().getId()); if (subtypes) { setMaxDamage(0); @@ -46,11 +45,11 @@ public class ItemBlockBase extends ItemBlock { public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ, IBlockState newState) { boolean result = super.placeBlockAt(stack, player, world, pos, side, hitX, hitY, hitZ, newState); - if (result && direction != null) { + if (result && block.getDirection() != null) { TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileBase) { - ((TileBase) tile).setDirection(direction.getFrom(side, pos, player)); + ((TileBase) tile).setDirection(block.getDirection().getFrom(side, pos, player)); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java old mode 100755 new mode 100644 similarity index 87% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockController.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java index 30dd85951..02faf5d19 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockController.java @@ -1,10 +1,9 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.block.BlockController; import com.raoulvdberge.refinedstorage.block.enums.ControllerType; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.tile.TileController; -import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -16,8 +15,8 @@ import javax.annotation.Nullable; import java.util.List; public class ItemBlockController extends ItemBlockBase { - public ItemBlockController(Block block, BlockDirection direction) { - super(block, direction, true); + public ItemBlockController(BlockController block) { + super(block, true); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java similarity index 91% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java index 3f2224f20..e23b4291b 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockEnergyItem.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockEnergyItem.java @@ -1,7 +1,7 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; -import net.minecraft.block.Block; +import com.raoulvdberge.refinedstorage.block.BlockBase; +import com.raoulvdberge.refinedstorage.item.capprovider.CapabilityProviderEnergy; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -23,8 +23,8 @@ public abstract class ItemBlockEnergyItem extends ItemBlockBase { private int energyCapacity; - public ItemBlockEnergyItem(Block block, BlockDirection direction, int energyCapacity) { - super(block, direction, true); + public ItemBlockEnergyItem(BlockBase block, int energyCapacity) { + super(block, true); this.energyCapacity = energyCapacity; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockFluidStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java old mode 100755 new mode 100644 similarity index 93% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockFluidStorage.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java index 475eb67d8..ad692114e --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockFluidStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockFluidStorage.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSItems; @@ -7,8 +7,9 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage; import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; -import net.minecraft.block.Block; +import com.raoulvdberge.refinedstorage.block.BlockFluidStorage; +import com.raoulvdberge.refinedstorage.item.ItemFluidStorageDisk; +import com.raoulvdberge.refinedstorage.item.ItemProcessor; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; @@ -25,8 +26,8 @@ import java.util.List; import java.util.UUID; public class ItemBlockFluidStorage extends ItemBlockBase { - public ItemBlockFluidStorage(Block block, BlockDirection direction) { - super(block, direction, true); + public ItemBlockFluidStorage(BlockFluidStorage block) { + super(block, true); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java similarity index 90% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockPortableGrid.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java index 9c2b113da..44992cc94 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockPortableGrid.java @@ -1,10 +1,10 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.apiimpl.API; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.block.BlockPortableGrid; +import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid; -import net.minecraft.block.Block; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -20,8 +20,8 @@ import javax.annotation.Nullable; import java.util.List; public class ItemBlockPortableGrid extends ItemBlockEnergyItem { - public ItemBlockPortableGrid(Block block, BlockDirection direction) { - super(block, direction, RS.INSTANCE.config.portableGridCapacity); + public ItemBlockPortableGrid(BlockPortableGrid block) { + super(block, RS.INSTANCE.config.portableGridCapacity); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java old mode 100755 new mode 100644 similarity index 93% rename from src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockStorage.java rename to src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java index 557b47648..45a481978 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemBlockStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/itemblock/ItemBlockStorage.java @@ -1,4 +1,4 @@ -package com.raoulvdberge.refinedstorage.item; +package com.raoulvdberge.refinedstorage.item.itemblock; import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSItems; @@ -7,8 +7,9 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage; import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper; -import com.raoulvdberge.refinedstorage.block.info.BlockDirection; -import net.minecraft.block.Block; +import com.raoulvdberge.refinedstorage.block.BlockStorage; +import com.raoulvdberge.refinedstorage.item.ItemProcessor; +import com.raoulvdberge.refinedstorage.item.ItemStorageDisk; import net.minecraft.client.resources.I18n; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; @@ -25,8 +26,8 @@ import java.util.List; import java.util.UUID; public class ItemBlockStorage extends ItemBlockBase { - public ItemBlockStorage(Block block, BlockDirection direction) { - super(block, direction, true); + public ItemBlockStorage(BlockStorage storage) { + super(storage, true); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java index 4925bbad6..bd17ff213 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingPreviewResponse.java @@ -2,12 +2,18 @@ package com.raoulvdberge.refinedstorage.network; import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElement; import com.raoulvdberge.refinedstorage.apiimpl.API; -import com.raoulvdberge.refinedstorage.proxy.ProxyClient; +import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; +import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart; import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.LinkedList; import java.util.List; @@ -54,8 +60,17 @@ public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHan } @Override + @SideOnly(Side.CLIENT) public IMessage onMessage(MessageGridCraftingPreviewResponse message, MessageContext ctx) { - ProxyClient.onReceiveCraftingPreviewResponse(message); + Minecraft.getMinecraft().addScheduledTask(() -> { + GuiScreen screen = Minecraft.getMinecraft().currentScreen; + + if (screen instanceof GuiCraftingStart) { + screen = ((GuiCraftingStart) screen).getParent(); + } + + FMLCommonHandler.instance().showGuiScreen(new GuiCraftingPreview(screen, message.stacks, message.hash, message.quantity)); + }); return null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStartResponse.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStartResponse.java index d44b6c717..a920395f3 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStartResponse.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageGridCraftingStartResponse.java @@ -1,10 +1,14 @@ package com.raoulvdberge.refinedstorage.network; -import com.raoulvdberge.refinedstorage.proxy.ProxyClient; +import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart; import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class MessageGridCraftingStartResponse implements IMessage, IMessageHandler { public MessageGridCraftingStartResponse() { @@ -21,8 +25,15 @@ public class MessageGridCraftingStartResponse implements IMessage, IMessageHandl } @Override + @SideOnly(Side.CLIENT) public IMessage onMessage(MessageGridCraftingStartResponse message, MessageContext ctx) { - ProxyClient.onReceiveCraftingStartResponse(); + Minecraft.getMinecraft().addScheduledTask(() -> { + GuiScreen screen = Minecraft.getMinecraft().currentScreen; + + if (screen instanceof GuiCraftingStart) { + ((GuiCraftingStart) screen).close(); + } + }); return null; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index bd47598ae..6717e653b 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -1,30 +1,21 @@ package com.raoulvdberge.refinedstorage.proxy; -import com.raoulvdberge.refinedstorage.RS; -import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSKeyBindings; -import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; import com.raoulvdberge.refinedstorage.block.BlockBase; -import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; -import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart; -import com.raoulvdberge.refinedstorage.item.*; -import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse; +import com.raoulvdberge.refinedstorage.item.ItemBase; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.collision.BlockHighlightListener; -import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelPattern; -import com.raoulvdberge.refinedstorage.render.model.loader.CustomModelLoaderCover; -import com.raoulvdberge.refinedstorage.render.tesr.TileEntitySpecialRendererStorageMonitor; -import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.IStateMapper; -import net.minecraft.client.renderer.color.ItemColors; +import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelRegistryEvent; @@ -33,26 +24,27 @@ import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.client.registry.ClientRegistry; -import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.apache.commons.lang3.tuple.Pair; import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.function.Supplier; public class ProxyClient extends ProxyCommon implements IModelRegistration { private Map> bakedModelOverrides = new HashMap<>(); + private List> itemColors = new LinkedList<>(); @Override public void preInit(FMLPreInitializationEvent e) { super.preInit(e); MinecraftForge.EVENT_BUS.register(new BlockHighlightListener()); - - ClientRegistry.bindTileEntitySpecialRenderer(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor()); } @Override @@ -61,169 +53,20 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration { RSKeyBindings.init(); - ItemColors itemColors = Minecraft.getMinecraft().getItemColors(); - - itemColors.registerItemColorHandler((stack, tintIndex) -> { - CraftingPattern pattern = ItemPattern.getPatternFromCache(Minecraft.getMinecraft().world, stack); - - if (BakedModelPattern.canDisplayOutput(stack, pattern)) { - int color = itemColors.colorMultiplier(pattern.getOutputs().get(0), tintIndex); - - if (color != -1) { - return color; - } - } - - return 0xFFFFFF; - }, RSItems.PATTERN); + itemColors.forEach(p -> Minecraft.getMinecraft().getItemColors().registerItemColorHandler(p.getRight(), p.getKey())); } @SubscribeEvent public void registerModels(ModelRegistryEvent e) { - ModelBakery.registerItemVariants(RSItems.STORAGE_DISK, - new ResourceLocation("refinedstorage:1k_storage_disk"), - new ResourceLocation("refinedstorage:4k_storage_disk"), - new ResourceLocation("refinedstorage:16k_storage_disk"), - new ResourceLocation("refinedstorage:64k_storage_disk"), - new ResourceLocation("refinedstorage:creative_storage_disk") - ); - - ModelBakery.registerItemVariants(RSItems.STORAGE_PART, - new ResourceLocation("refinedstorage:1k_storage_part"), - new ResourceLocation("refinedstorage:4k_storage_part"), - new ResourceLocation("refinedstorage:16k_storage_part"), - new ResourceLocation("refinedstorage:64k_storage_part") - ); - - ModelBakery.registerItemVariants(RSItems.FLUID_STORAGE_DISK, - new ResourceLocation("refinedstorage:64k_fluid_storage_disk"), - new ResourceLocation("refinedstorage:256k_fluid_storage_disk"), - new ResourceLocation("refinedstorage:1024k_fluid_storage_disk"), - new ResourceLocation("refinedstorage:4096k_fluid_storage_disk"), - new ResourceLocation("refinedstorage:creative_fluid_storage_disk") - ); - - ModelBakery.registerItemVariants(RSItems.FLUID_STORAGE_PART, - new ResourceLocation("refinedstorage:64k_fluid_storage_part"), - new ResourceLocation("refinedstorage:256k_fluid_storage_part"), - new ResourceLocation("refinedstorage:1024k_fluid_storage_part"), - new ResourceLocation("refinedstorage:4096k_fluid_storage_part") - ); - - ModelBakery.registerItemVariants(RSItems.PROCESSOR, - new ResourceLocation("refinedstorage:cut_basic_processor"), - new ResourceLocation("refinedstorage:cut_improved_processor"), - new ResourceLocation("refinedstorage:cut_advanced_processor"), - new ResourceLocation("refinedstorage:basic_processor"), - new ResourceLocation("refinedstorage:improved_processor"), - new ResourceLocation("refinedstorage:advanced_processor"), - new ResourceLocation("refinedstorage:cut_silicon") - ); - - ModelBakery.registerItemVariants(RSItems.CORE, - new ResourceLocation("refinedstorage:construction_core"), - new ResourceLocation("refinedstorage:destruction_core") - ); - - ModelBakery.registerItemVariants(RSItems.UPGRADE, - new ResourceLocation("refinedstorage:upgrade"), - new ResourceLocation("refinedstorage:range_upgrade"), - new ResourceLocation("refinedstorage:speed_upgrade"), - new ResourceLocation("refinedstorage:stack_upgrade"), - new ResourceLocation("refinedstorage:interdimensional_upgrade"), - new ResourceLocation("refinedstorage:silk_touch_upgrade"), - new ResourceLocation("refinedstorage:fortune_upgrade") - ); - - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_DISK, ItemStorageDisk.TYPE_1K, new ModelResourceLocation("refinedstorage:1k_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_DISK, ItemStorageDisk.TYPE_4K, new ModelResourceLocation("refinedstorage:4k_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_DISK, ItemStorageDisk.TYPE_16K, new ModelResourceLocation("refinedstorage:16k_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_DISK, ItemStorageDisk.TYPE_64K, new ModelResourceLocation("refinedstorage:64k_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_DISK, ItemStorageDisk.TYPE_CREATIVE, new ModelResourceLocation("refinedstorage:creative_storage_disk", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_PART, ItemStoragePart.TYPE_1K, new ModelResourceLocation("refinedstorage:1k_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_PART, ItemStoragePart.TYPE_4K, new ModelResourceLocation("refinedstorage:4k_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_PART, ItemStoragePart.TYPE_16K, new ModelResourceLocation("refinedstorage:16k_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_PART, ItemStoragePart.TYPE_64K, new ModelResourceLocation("refinedstorage:64k_storage_part", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_DISK, ItemFluidStorageDisk.TYPE_64K, new ModelResourceLocation("refinedstorage:64k_fluid_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_DISK, ItemFluidStorageDisk.TYPE_256K, new ModelResourceLocation("refinedstorage:256k_fluid_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_DISK, ItemFluidStorageDisk.TYPE_1024K, new ModelResourceLocation("refinedstorage:1024k_fluid_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_DISK, ItemFluidStorageDisk.TYPE_4096K, new ModelResourceLocation("refinedstorage:4096k_fluid_storage_disk", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_DISK, ItemFluidStorageDisk.TYPE_CREATIVE, new ModelResourceLocation("refinedstorage:creative_fluid_storage_disk", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_PART, ItemFluidStoragePart.TYPE_64K, new ModelResourceLocation("refinedstorage:64k_fluid_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_PART, ItemFluidStoragePart.TYPE_256K, new ModelResourceLocation("refinedstorage:256k_fluid_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_PART, ItemFluidStoragePart.TYPE_1024K, new ModelResourceLocation("refinedstorage:1024k_fluid_storage_part", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FLUID_STORAGE_PART, ItemFluidStoragePart.TYPE_4096K, new ModelResourceLocation("refinedstorage:4096k_fluid_storage_part", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_CUT_BASIC, new ModelResourceLocation("refinedstorage:cut_basic_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_CUT_IMPROVED, new ModelResourceLocation("refinedstorage:cut_improved_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_CUT_ADVANCED, new ModelResourceLocation("refinedstorage:cut_advanced_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_BASIC, new ModelResourceLocation("refinedstorage:basic_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_IMPROVED, new ModelResourceLocation("refinedstorage:improved_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_ADVANCED, new ModelResourceLocation("refinedstorage:advanced_processor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PROCESSOR, ItemProcessor.TYPE_CUT_SILICON, new ModelResourceLocation("refinedstorage:cut_silicon", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.SILICON, 0, new ModelResourceLocation("refinedstorage:silicon", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.QUARTZ_ENRICHED_IRON, 0, new ModelResourceLocation("refinedstorage:quartz_enriched_iron", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.CORE, ItemCore.TYPE_CONSTRUCTION, new ModelResourceLocation("refinedstorage:construction_core", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.CORE, ItemCore.TYPE_DESTRUCTION, new ModelResourceLocation("refinedstorage:destruction_core", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_GRID, 0, new ModelResourceLocation("refinedstorage:wireless_grid", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_FLUID_GRID, 0, new ModelResourceLocation("refinedstorage:wireless_fluid_grid", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_CRAFTING_MONITOR, 0, new ModelResourceLocation("refinedstorage:wireless_crafting_monitor", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.PATTERN, 0, new ModelResourceLocation("refinedstorage:pattern", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_HOUSING, 0, new ModelResourceLocation("refinedstorage:storage_housing", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.FILTER, 0, new ModelResourceLocation("refinedstorage:filter", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.NETWORK_CARD, 0, new ModelResourceLocation("refinedstorage:network_card", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.SECURITY_CARD, 0, new ModelResourceLocation("refinedstorage:security_card", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.CUTTING_TOOL, 0, new ModelResourceLocation("refinedstorage:cutting_tool", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, 0, new ModelResourceLocation("refinedstorage:upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_RANGE, new ModelResourceLocation("refinedstorage:range_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_SPEED, new ModelResourceLocation("refinedstorage:speed_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_CRAFTING, new ModelResourceLocation("refinedstorage:crafting_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_STACK, new ModelResourceLocation("refinedstorage:stack_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_INTERDIMENSIONAL, new ModelResourceLocation("refinedstorage:interdimensional_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_SILK_TOUCH, new ModelResourceLocation("refinedstorage:silk_touch_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_FORTUNE_1, new ModelResourceLocation("refinedstorage:fortune_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_FORTUNE_2, new ModelResourceLocation("refinedstorage:fortune_upgrade", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.UPGRADE, ItemUpgrade.TYPE_FORTUNE_3, new ModelResourceLocation("refinedstorage:fortune_upgrade", "inventory")); - - ModelLoader.setCustomModelResourceLocation(RSItems.COVER, 0, new ModelResourceLocation("refinedstorage:cover", "inventory")); - ModelLoader.setCustomModelResourceLocation(RSItems.HOLLOW_COVER, 0, new ModelResourceLocation("refinedstorage:hollow_cover", "inventory")); - - ModelLoaderRegistry.registerLoader(new CustomModelLoaderCover()); - - addBakedModelOverride(new ResourceLocation(RS.ID, "pattern"), BakedModelPattern::new); - for (BlockBase block : blocksToRegister) { block.registerModels(this); } - } - public static void onReceiveCraftingPreviewResponse(MessageGridCraftingPreviewResponse message) { - Minecraft.getMinecraft().addScheduledTask(() -> { - GuiScreen screen = Minecraft.getMinecraft().currentScreen; - - if (screen instanceof GuiCraftingStart) { - screen = ((GuiCraftingStart) screen).getParent(); + for (Item item : itemsToRegister) { + if (item instanceof ItemBase) { + ((ItemBase) item).registerModels(this); } - - FMLCommonHandler.instance().showGuiScreen(new GuiCraftingPreview(screen, message.stacks, message.hash, message.quantity)); - }); - } - - public static void onReceiveCraftingStartResponse() { - Minecraft.getMinecraft().addScheduledTask(() -> { - GuiScreen screen = Minecraft.getMinecraft().currentScreen; - - if (screen instanceof GuiCraftingStart) { - ((GuiCraftingStart) screen).close(); - } - }); + } } @SubscribeEvent @@ -244,7 +87,17 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration { @Override public void setModel(Block block, int meta, ModelResourceLocation resource) { - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), meta, resource); + setModel(Item.getItemFromBlock(block), meta, resource); + } + + @Override + public void setModel(Item item, int meta, ModelResourceLocation resource) { + ModelLoader.setCustomModelResourceLocation(item, meta, resource); + } + + @Override + public void setModelVariants(Item item, ResourceLocation... variants) { + ModelBakery.registerItemVariants(item, variants); } @Override @@ -261,4 +114,14 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration { public void setStateMapper(Block block, IStateMapper stateMapper) { ModelLoader.setCustomStateMapper(block, stateMapper); } + + @Override + public void setTesr(Class tile, TileEntitySpecialRenderer tesr) { + ClientRegistry.bindTileEntitySpecialRenderer(tile, tesr); + } + + @Override + public void addItemColor(Item item, IItemColor itemColor) { + itemColors.add(Pair.of(item, itemColor)); // ItemColors is only available in init. + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 00d995db0..6adb23ab5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -80,7 +80,7 @@ import java.util.LinkedList; import java.util.List; public class ProxyCommon { - private List itemsToRegister = new LinkedList<>(); + protected List itemsToRegister = new LinkedList<>(); protected List blocksToRegister = new LinkedList<>(); public void preInit(FMLPreInitializationEvent e) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java b/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java index 6bb00e91c..aba66de27 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/IModelRegistration.java @@ -5,6 +5,10 @@ import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.IStateMapper; +import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ICustomModelLoader; @@ -16,9 +20,18 @@ public interface IModelRegistration { void setModel(Block block, int meta, ModelResourceLocation resource); + void setModel(Item item, int meta, ModelResourceLocation resource); + + void setModelVariants(Item item, ResourceLocation... variants); + void setModelMeshDefinition(Block block, ItemMeshDefinition meshDefinition); + // Supplier needed to avoid server crash. void addModelLoader(Supplier modelLoader); void setStateMapper(Block block, IStateMapper stateMapper); + + void setTesr(Class tile, TileEntitySpecialRenderer tesr); + + void addItemColor(Item item, IItemColor itemColor); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/color/ItemColorPattern.java b/src/main/java/com/raoulvdberge/refinedstorage/render/color/ItemColorPattern.java new file mode 100644 index 000000000..8d2374127 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/color/ItemColorPattern.java @@ -0,0 +1,25 @@ +package com.raoulvdberge.refinedstorage.render.color; + +import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; +import com.raoulvdberge.refinedstorage.item.ItemPattern; +import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelPattern; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.item.ItemStack; + +public class ItemColorPattern implements IItemColor { + @Override + public int colorMultiplier(ItemStack stack, int tintIndex) { + CraftingPattern pattern = ItemPattern.getPatternFromCache(Minecraft.getMinecraft().world, stack); + + if (BakedModelPattern.canDisplayOutput(stack, pattern)) { + int color = Minecraft.getMinecraft().getItemColors().colorMultiplier(pattern.getOutputs().get(0), tintIndex); + + if (color != -1) { + return color; + } + } + + return 0xFFFFFF; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/meshdefinition/ItemMeshDefinitionPortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/render/meshdefinition/ItemMeshDefinitionPortableGrid.java index c45a38a6a..e6b33aeee 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/meshdefinition/ItemMeshDefinitionPortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/meshdefinition/ItemMeshDefinitionPortableGrid.java @@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; -import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import com.raoulvdberge.refinedstorage.util.StackUtils; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java index 1178ef6c2..ffda944cb 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/PortableGrid.java @@ -23,8 +23,8 @@ import com.raoulvdberge.refinedstorage.gui.GuiBase; import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter; -import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.network.MessageGridSettingsUpdate; import com.raoulvdberge.refinedstorage.util.StackUtils; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java index dc623069e..7dd493c7e 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/portable/TilePortableGrid.java @@ -31,8 +31,8 @@ import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile; -import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; +import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;