Register item models in the item class itself.

This commit is contained in:
raoulvdberge
2018-07-10 00:06:52 +02:00
parent fa7dbe1bad
commit 7caecce978
50 changed files with 579 additions and 279 deletions

View File

@@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor; import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode; import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy; 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 com.raoulvdberge.refinedstorage.tile.TileController;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;

View File

@@ -3,7 +3,7 @@ package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.IBlockInfo; 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.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.util.WorldUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils;
@@ -64,7 +64,7 @@ public abstract class BlockBase extends Block {
} }
public Item createItem() { public Item createItem() {
return new ItemBlockBase(this, getDirection(), false); return new ItemBlockBase(this, false);
} }
@Override @Override

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType; import com.raoulvdberge.refinedstorage.block.enums.ControllerEnergyType;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType; import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; 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.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.tile.TileController; import com.raoulvdberge.refinedstorage.tile.TileController;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
@@ -117,6 +117,6 @@ public class BlockController extends BlockNodeProxy {
@Override @Override
public Item createItem() { public Item createItem() {
return new ItemBlockController(this, getDirection()); return new ItemBlockController(this);
} }
} }

View File

@@ -1,11 +1,10 @@
package com.raoulvdberge.refinedstorage.block; package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType; import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; 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.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.tile.TileFluidStorage; import com.raoulvdberge.refinedstorage.tile.TileFluidStorage;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
@@ -75,7 +74,7 @@ public class BlockFluidStorage extends BlockNode {
@Override @Override
public Item createItem() { public Item createItem() {
return new ItemBlockFluidStorage(this, getDirection()); return new ItemBlockFluidStorage(this);
} }
@Override @Override
@@ -98,7 +97,7 @@ public class BlockFluidStorage extends BlockNode {
public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
TileFluidStorage storage = (TileFluidStorage) world.getTileEntity(pos); 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.setTagCompound(new NBTTagCompound());
stack.getTagCompound().setUniqueId(NetworkNodeFluidStorage.NBT_ID, storage.getNode().getStorageId()); stack.getTagCompound().setUniqueId(NetworkNodeFluidStorage.NBT_ID, storage.getNode().getStorageId());

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType; import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; 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.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM; import com.raoulvdberge.refinedstorage.render.statemapper.StateMapperCTM;
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
@@ -85,6 +85,6 @@ public class BlockGrid extends BlockNode {
@Override @Override
public Item createItem() { public Item createItem() {
return new ItemBlockBase(this, getDirection(), true); return new ItemBlockBase(this, true);
} }
} }

View File

@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.block.enums.PortableGridDiskState;
import com.raoulvdberge.refinedstorage.block.enums.PortableGridType; import com.raoulvdberge.refinedstorage.block.enums.PortableGridType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; 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.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid; import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid;
import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid; import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid;
@@ -57,7 +57,7 @@ public class BlockPortableGrid extends BlockBase {
@Override @Override
public Item createItem() { public Item createItem() {
return new ItemBlockPortableGrid(this, getDirection()); return new ItemBlockPortableGrid(this);
} }
@Override @Override

View File

@@ -1,11 +1,10 @@
package com.raoulvdberge.refinedstorage.block; package com.raoulvdberge.refinedstorage.block;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSGui; import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType; import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; 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.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.tile.TileStorage; import com.raoulvdberge.refinedstorage.tile.TileStorage;
import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyEnum;
@@ -75,7 +74,7 @@ public class BlockStorage extends BlockNode {
@Override @Override
public Item createItem() { public Item createItem() {
return new ItemBlockStorage(this, getDirection()); return new ItemBlockStorage(this);
} }
@Override @Override
@@ -98,7 +97,7 @@ public class BlockStorage extends BlockNode {
public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { public void getDrops(NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
TileStorage storage = (TileStorage) world.getTileEntity(pos); 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.setTagCompound(new NBTTagCompound());
stack.getTagCompound().setUniqueId(NetworkNodeStorage.NBT_ID, storage.getNode().getStorageId()); stack.getTagCompound().setUniqueId(NetworkNodeStorage.NBT_ID, storage.getNode().getStorageId());

View File

@@ -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.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.tesr.TileEntitySpecialRendererStorageMonitor;
import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor; import com.raoulvdberge.refinedstorage.tile.TileStorageMonitor;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.model.ModelResourceLocation;
@@ -30,6 +31,8 @@ public class BlockStorageMonitor extends BlockNode {
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) { public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north")); modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "connected=false,direction=north"));
modelRegistration.setTesr(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor());
} }
@Override @Override

View File

@@ -12,8 +12,7 @@ public class BlockInfo implements IBlockInfo {
private final Material material; private final Material material;
private final SoundType soundType; private final SoundType soundType;
private final float hardness; private final float hardness;
private final String id; private final ResourceLocation id;
private final String modId;
private final Object modObject; private final Object modObject;
@Nullable @Nullable
private final Supplier<TileBase> tileSupplier; private final Supplier<TileBase> tileSupplier;
@@ -22,8 +21,7 @@ public class BlockInfo implements IBlockInfo {
this.material = material; this.material = material;
this.soundType = soundType; this.soundType = soundType;
this.hardness = hardness; this.hardness = hardness;
this.id = id; this.id = new ResourceLocation(modId, id);
this.modId = modId;
this.modObject = modObject; this.modObject = modObject;
this.tileSupplier = tileSupplier; this.tileSupplier = tileSupplier;
} }
@@ -40,7 +38,7 @@ public class BlockInfo implements IBlockInfo {
@Override @Override
public ResourceLocation getId() { public ResourceLocation getId() {
return new ResourceLocation(modId, id); return id;
} }
@Override @Override

View File

@@ -1,26 +1,30 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS; 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.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public abstract class ItemBase extends Item { public abstract class ItemBase extends Item {
private final String name; protected final IItemInfo info;
public ItemBase(String name) { public ItemBase(IItemInfo info) {
this.name = name; this.info = info;
setRegistryName(getDomain(), name); setRegistryName(info.getId());
setCreativeTab(RS.INSTANCE.tab); setCreativeTab(RS.INSTANCE.tab);
} }
protected String getDomain() { @SideOnly(Side.CLIENT)
return RS.ID; public void registerModels(IModelRegistration modelRegistration) {
} }
@Override @Override
public String getUnlocalizedName() { public String getUnlocalizedName() {
return "item." + getDomain() + ":" + name; return "item." + info.getId().toString();
} }
@Override @Override

View File

@@ -1,20 +1,36 @@
package com.raoulvdberge.refinedstorage.item; 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.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; 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 class ItemCore extends ItemBase {
public static final int TYPE_CONSTRUCTION = 0; public static final int TYPE_CONSTRUCTION = 0;
public static final int TYPE_DESTRUCTION = 1; public static final int TYPE_DESTRUCTION = 1;
public ItemCore() { public ItemCore() {
super("core"); super(new ItemInfo(RS.ID, "core"));
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -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.Cover;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType; 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.tile.TileNode;
import com.raoulvdberge.refinedstorage.util.WorldUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -24,6 +29,8 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -32,14 +39,22 @@ import java.util.List;
public class ItemCover extends ItemBase { public class ItemCover extends ItemBase {
private static final String NBT_ITEM = "Item"; private static final String NBT_ITEM = "Item";
public ItemCover(String name) { public ItemCover(IItemInfo info) {
super(name); super(info);
setCreativeTab(RS.INSTANCE.coversTab); setCreativeTab(RS.INSTANCE.coversTab);
} }
public ItemCover() { 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) { public static void setItem(ItemStack cover, ItemStack item) {

View File

@@ -1,15 +1,27 @@
package com.raoulvdberge.refinedstorage.item; 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.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemCuttingTool extends ItemBase { public class ItemCuttingTool extends ItemBase {
public ItemCuttingTool() { public ItemCuttingTool() {
super("cutting_tool"); super(new ItemInfo(RS.ID, "cutting_tool"));
setMaxDamage(50 - 1); setMaxDamage(50 - 1);
setMaxStackSize(1); setMaxStackSize(1);
} }
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
}
@Override @Override
public boolean isRepairable() { public boolean isRepairable() {
return false; return false;

View File

@@ -1,5 +1,7 @@
package com.raoulvdberge.refinedstorage.item; 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.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@@ -21,8 +23,8 @@ public abstract class ItemEnergyItem extends ItemBase {
private int energyCapacity; private int energyCapacity;
public ItemEnergyItem(String name, int energyCapacity) { public ItemEnergyItem(IItemInfo info, int energyCapacity) {
super(name); super(info);
this.energyCapacity = energyCapacity; this.energyCapacity = energyCapacity;

View File

@@ -6,7 +6,10 @@ import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.util.IComparer; import com.raoulvdberge.refinedstorage.api.util.IComparer;
import com.raoulvdberge.refinedstorage.api.util.IFilter; import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilterItems; 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 com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -17,6 +20,8 @@ import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -29,11 +34,17 @@ public class ItemFilter extends ItemBase {
private static final String NBT_ICON = "Icon"; private static final String NBT_ICON = "Icon";
public ItemFilter() { public ItemFilter() {
super("filter"); super(new ItemInfo(RS.ID, "filter"));
setMaxStackSize(1); setMaxStackSize(1);
} }
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
}
@Override @Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) { public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
ItemStack stack = player.getHeldItem(hand); ItemStack stack = player.getHeldItem(hand);

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.storage.StorageType; import com.raoulvdberge.refinedstorage.api.storage.StorageType;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; 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.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.enums.FluidStorageType; 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.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@@ -15,11 +19,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult; import net.minecraft.util.*;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -35,13 +38,32 @@ public class ItemFluidStorageDisk extends ItemBase implements IStorageDiskProvid
public static final int TYPE_CREATIVE = 4; public static final int TYPE_CREATIVE = 4;
public ItemFluidStorageDisk() { public ItemFluidStorageDisk() {
super("fluid_storage_disk"); super(new ItemInfo(RS.ID, "fluid_storage_disk"));
setMaxStackSize(1); setMaxStackSize(1);
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -1,8 +1,15 @@
package com.raoulvdberge.refinedstorage.item; 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.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; 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 class ItemFluidStoragePart extends ItemBase {
public static final int TYPE_64K = 0; public static final int TYPE_64K = 0;
@@ -11,12 +18,29 @@ public class ItemFluidStoragePart extends ItemBase {
public static final int TYPE_4096K = 3; public static final int TYPE_4096K = 3;
public ItemFluidStoragePart() { public ItemFluidStoragePart() {
super("fluid_storage_part"); super(new ItemInfo(RS.ID, "fluid_storage_part"));
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -1,12 +1,24 @@
package com.raoulvdberge.refinedstorage.item; 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.Cover;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverType; 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.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemHollowCover extends ItemCover { public class ItemHollowCover extends ItemCover {
public ItemHollowCover() { 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 @Override

View File

@@ -1,7 +1,11 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSBlocks; 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.block.Block;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -12,6 +16,8 @@ import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -23,11 +29,17 @@ public class ItemNetworkCard extends ItemBase {
private static final String NBT_DIMENSION = "Dimension"; private static final String NBT_DIMENSION = "Dimension";
public ItemNetworkCard() { public ItemNetworkCard() {
super("network_card"); super(new ItemInfo(RS.ID, "network_card"));
setMaxStackSize(1); setMaxStackSize(1);
} }
@Override
@SideOnly(Side.CLIENT)
public void registerModels(IModelRegistration modelRegistration) {
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
}
@Override @Override
public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { 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(); Block block = world.getBlockState(pos).getBlock();

View File

@@ -3,6 +3,8 @@ package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider; 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.block.Block;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; 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.util.text.TextComponentTranslation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; 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_CONTROLLER_Z = "ControllerZ";
private static final String NBT_DIMENSION_ID = "DimensionID"; private static final String NBT_DIMENSION_ID = "DimensionID";
public ItemNetworkItem(String name, int energyCapacity) { public ItemNetworkItem(IItemInfo info, int energyCapacity) {
super(name, energyCapacity); super(info, energyCapacity);
addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); 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 @Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) { public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
ItemStack stack = player.getHeldItem(hand); ItemStack stack = player.getHeldItem(hand);

View File

@@ -7,8 +7,13 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContaine
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern; 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 com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@@ -20,6 +25,8 @@ import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -38,7 +45,17 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
public static final String NBT_PROCESSING = "Processing"; public static final String NBT_PROCESSING = "Processing";
public ItemPattern() { 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) { public static CraftingPattern getPatternFromCache(World world, ItemStack stack) {

View File

@@ -1,8 +1,15 @@
package com.raoulvdberge.refinedstorage.item; 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.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; 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 class ItemProcessor extends ItemBase {
public static final int TYPE_CUT_BASIC = 0; 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 static final int TYPE_CUT_SILICON = 6;
public ItemProcessor() { public ItemProcessor() {
super("processor"); super(new ItemInfo(RS.ID, "processor"));
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -1,7 +1,20 @@
package com.raoulvdberge.refinedstorage.item; 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 class ItemQuartzEnrichedIron extends ItemBase {
public ItemQuartzEnrichedIron() { 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"));
} }
} }

View File

@@ -1,6 +1,10 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.security.Permission; 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.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -11,6 +15,8 @@ import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -22,13 +28,19 @@ public class ItemSecurityCard extends ItemBase {
private static final String NBT_PERMISSION = "Permission_%d"; private static final String NBT_PERMISSION = "Permission_%d";
public ItemSecurityCard() { public ItemSecurityCard() {
super("security_card"); super(new ItemInfo(RS.ID, "security_card"));
setMaxStackSize(1); setMaxStackSize(1);
addPropertyOverride(new ResourceLocation("active"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f); 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 @Override
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) { public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
ItemStack stack = player.getHeldItem(hand); ItemStack stack = player.getHeldItem(hand);

View File

@@ -1,7 +1,20 @@
package com.raoulvdberge.refinedstorage.item; 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 class ItemSilicon extends ItemBase {
public ItemSilicon() { 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"));
} }
} }

View File

@@ -1,5 +1,6 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.storage.StorageType; import com.raoulvdberge.refinedstorage.api.storage.StorageType;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; 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.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.block.enums.ItemStorageType; 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.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@@ -15,11 +19,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryHelper; import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult; import net.minecraft.util.*;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -35,13 +38,33 @@ public class ItemStorageDisk extends ItemBase implements IStorageDiskProvider {
public static final int TYPE_CREATIVE = 4; public static final int TYPE_CREATIVE = 4;
public ItemStorageDisk() { public ItemStorageDisk() {
super("storage_disk"); super(new ItemInfo(RS.ID, "storage_disk"));
setMaxStackSize(1); setMaxStackSize(1);
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -1,7 +1,20 @@
package com.raoulvdberge.refinedstorage.item; 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 class ItemStorageHousing extends ItemBase {
public ItemStorageHousing() { 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"));
} }
} }

View File

@@ -1,8 +1,15 @@
package com.raoulvdberge.refinedstorage.item; 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.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; 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 class ItemStoragePart extends ItemBase {
public static final int TYPE_1K = 0; public static final int TYPE_1K = 0;
@@ -11,12 +18,29 @@ public class ItemStoragePart extends ItemBase {
public static final int TYPE_64K = 3; public static final int TYPE_64K = 3;
public ItemStoragePart() { public ItemStoragePart() {
super("storage_part"); super(new ItemInfo(RS.ID, "storage_part"));
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) { public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> items) {
if (!isInCreativeTab(tab)) { if (!isInCreativeTab(tab)) {

View File

@@ -1,12 +1,18 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item;
import com.raoulvdberge.refinedstorage.RS; 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.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList; import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.List; import java.util.List;
@@ -23,12 +29,38 @@ public class ItemUpgrade extends ItemBase {
public static final int TYPE_FORTUNE_3 = 9; public static final int TYPE_FORTUNE_3 = 9;
public ItemUpgrade() { public ItemUpgrade() {
super("upgrade"); super(new ItemInfo(RS.ID, "upgrade"));
setHasSubtypes(true); setHasSubtypes(true);
setMaxDamage(0); 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 @Override
public boolean hasEffect(ItemStack stack) { public boolean hasEffect(ItemStack stack) {
return stack.getMetadata() == TYPE_SILK_TOUCH || getFortuneLevel(stack) > 0; return stack.getMetadata() == TYPE_SILK_TOUCH || getFortuneLevel(stack) > 0;

View File

@@ -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.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor; 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.util.UUID; import java.util.UUID;
@@ -19,7 +24,13 @@ public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
public static final String NBT_TAB_PAGE = "TabPage"; public static final String NBT_TAB_PAGE = "TabPage";
public ItemWirelessCraftingMonitor() { 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 @Override

View File

@@ -6,14 +6,25 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ItemWirelessFluidGrid extends ItemNetworkItem { public class ItemWirelessFluidGrid extends ItemNetworkItem {
public ItemWirelessFluidGrid() { 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 @Override

View File

@@ -6,18 +6,30 @@ import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid; 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ItemWirelessGrid extends ItemNetworkItem { public class ItemWirelessGrid extends ItemNetworkItem {
public ItemWirelessGrid(String name) { public ItemWirelessGrid(IItemInfo info) {
super(name, RS.INSTANCE.config.wirelessGridCapacity); super(info, RS.INSTANCE.config.wirelessGridCapacity);
} }
public ItemWirelessGrid() { 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 @Override

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item.capprovider;
import com.raoulvdberge.refinedstorage.integration.forgeenergy.ItemEnergyForge; import com.raoulvdberge.refinedstorage.integration.forgeenergy.ItemEnergyForge;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;

View File

@@ -0,0 +1,7 @@
package com.raoulvdberge.refinedstorage.item.info;
import net.minecraft.util.ResourceLocation;
public interface IItemInfo {
ResourceLocation getId();
}

View File

@@ -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;
}
}

View File

@@ -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 com.raoulvdberge.refinedstorage.tile.TileBase;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
@@ -13,14 +12,14 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ItemBlockBase extends ItemBlock { 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); super(block);
setRegistryName(block.getRegistryName()); this.block = block;
this.direction = direction; setRegistryName(block.getInfo().getId());
if (subtypes) { if (subtypes) {
setMaxDamage(0); 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) { 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); 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); TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileBase) { if (tile instanceof TileBase) {
((TileBase) tile).setDirection(direction.getFrom(side, pos, player)); ((TileBase) tile).setDirection(block.getDirection().getFrom(side, pos, player));
} }
} }

View File

@@ -1,10 +1,9 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item.itemblock;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.block.BlockController;
import com.raoulvdberge.refinedstorage.block.enums.ControllerType; import com.raoulvdberge.refinedstorage.block.enums.ControllerType;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.tile.TileController; import com.raoulvdberge.refinedstorage.tile.TileController;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -16,8 +15,8 @@ import javax.annotation.Nullable;
import java.util.List; import java.util.List;
public class ItemBlockController extends ItemBlockBase { public class ItemBlockController extends ItemBlockBase {
public ItemBlockController(Block block, BlockDirection direction) { public ItemBlockController(BlockController block) {
super(block, direction, true); super(block, true);
} }
@Override @Override

View File

@@ -1,7 +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 net.minecraft.block.Block; import com.raoulvdberge.refinedstorage.item.capprovider.CapabilityProviderEnergy;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@@ -23,8 +23,8 @@ public abstract class ItemBlockEnergyItem extends ItemBlockBase {
private int energyCapacity; private int energyCapacity;
public ItemBlockEnergyItem(Block block, BlockDirection direction, int energyCapacity) { public ItemBlockEnergyItem(BlockBase block, int energyCapacity) {
super(block, direction, true); super(block, true);
this.energyCapacity = energyCapacity; this.energyCapacity = energyCapacity;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item.itemblock;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems; 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.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeFluidStorage;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper; import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.BlockFluidStorage;
import net.minecraft.block.Block; import com.raoulvdberge.refinedstorage.item.ItemFluidStorageDisk;
import com.raoulvdberge.refinedstorage.item.ItemProcessor;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@@ -25,8 +26,8 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
public class ItemBlockFluidStorage extends ItemBlockBase { public class ItemBlockFluidStorage extends ItemBlockBase {
public ItemBlockFluidStorage(Block block, BlockDirection direction) { public ItemBlockFluidStorage(BlockFluidStorage block) {
super(block, direction, true); super(block, true);
} }
@Override @Override

View File

@@ -1,10 +1,10 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item.itemblock;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.apiimpl.API; 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 com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@@ -20,8 +20,8 @@ import javax.annotation.Nullable;
import java.util.List; import java.util.List;
public class ItemBlockPortableGrid extends ItemBlockEnergyItem { public class ItemBlockPortableGrid extends ItemBlockEnergyItem {
public ItemBlockPortableGrid(Block block, BlockDirection direction) { public ItemBlockPortableGrid(BlockPortableGrid block) {
super(block, direction, RS.INSTANCE.config.portableGridCapacity); super(block, RS.INSTANCE.config.portableGridCapacity);
} }
@Override @Override

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.item; package com.raoulvdberge.refinedstorage.item.itemblock;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems; 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.API;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage; import com.raoulvdberge.refinedstorage.apiimpl.network.node.storage.NetworkNodeStorage;
import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper; import com.raoulvdberge.refinedstorage.apiimpl.util.OneSixMigrationHelper;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection; import com.raoulvdberge.refinedstorage.block.BlockStorage;
import net.minecraft.block.Block; import com.raoulvdberge.refinedstorage.item.ItemProcessor;
import com.raoulvdberge.refinedstorage.item.ItemStorageDisk;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@@ -25,8 +26,8 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
public class ItemBlockStorage extends ItemBlockBase { public class ItemBlockStorage extends ItemBlockBase {
public ItemBlockStorage(Block block, BlockDirection direction) { public ItemBlockStorage(BlockStorage storage) {
super(block, direction, true); super(storage, true);
} }
@Override @Override

View File

@@ -2,12 +2,18 @@ package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElement; import com.raoulvdberge.refinedstorage.api.autocrafting.preview.ICraftingPreviewElement;
import com.raoulvdberge.refinedstorage.apiimpl.API; 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 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.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 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.LinkedList;
import java.util.List; import java.util.List;
@@ -54,8 +60,17 @@ public class MessageGridCraftingPreviewResponse implements IMessage, IMessageHan
} }
@Override @Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(MessageGridCraftingPreviewResponse message, MessageContext ctx) { 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; return null;
} }

View File

@@ -1,10 +1,14 @@
package com.raoulvdberge.refinedstorage.network; package com.raoulvdberge.refinedstorage.network;
import com.raoulvdberge.refinedstorage.proxy.ProxyClient; import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart;
import io.netty.buffer.ByteBuf; 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.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; 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<MessageGridCraftingStartResponse, IMessage> { public class MessageGridCraftingStartResponse implements IMessage, IMessageHandler<MessageGridCraftingStartResponse, IMessage> {
public MessageGridCraftingStartResponse() { public MessageGridCraftingStartResponse() {
@@ -21,8 +25,15 @@ public class MessageGridCraftingStartResponse implements IMessage, IMessageHandl
} }
@Override @Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(MessageGridCraftingStartResponse message, MessageContext ctx) { 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; return null;
} }

View File

@@ -1,30 +1,21 @@
package com.raoulvdberge.refinedstorage.proxy; package com.raoulvdberge.refinedstorage.proxy;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.RSKeyBindings; import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingPattern;
import com.raoulvdberge.refinedstorage.block.BlockBase; import com.raoulvdberge.refinedstorage.block.BlockBase;
import com.raoulvdberge.refinedstorage.gui.GuiCraftingPreview; import com.raoulvdberge.refinedstorage.item.ItemBase;
import com.raoulvdberge.refinedstorage.gui.grid.GuiCraftingStart;
import com.raoulvdberge.refinedstorage.item.*;
import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.BlockHighlightListener; 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.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.IStateMapper; 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.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.event.ModelRegistryEvent; 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.client.model.ModelLoaderRegistry;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.ClientRegistry; 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.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.apache.commons.lang3.tuple.Pair;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier; import java.util.function.Supplier;
public class ProxyClient extends ProxyCommon implements IModelRegistration { public class ProxyClient extends ProxyCommon implements IModelRegistration {
private Map<ResourceLocation, Function<IBakedModel, IBakedModel>> bakedModelOverrides = new HashMap<>(); private Map<ResourceLocation, Function<IBakedModel, IBakedModel>> bakedModelOverrides = new HashMap<>();
private List<Pair<Item, IItemColor>> itemColors = new LinkedList<>();
@Override @Override
public void preInit(FMLPreInitializationEvent e) { public void preInit(FMLPreInitializationEvent e) {
super.preInit(e); super.preInit(e);
MinecraftForge.EVENT_BUS.register(new BlockHighlightListener()); MinecraftForge.EVENT_BUS.register(new BlockHighlightListener());
ClientRegistry.bindTileEntitySpecialRenderer(TileStorageMonitor.class, new TileEntitySpecialRendererStorageMonitor());
} }
@Override @Override
@@ -61,169 +53,20 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration {
RSKeyBindings.init(); RSKeyBindings.init();
ItemColors itemColors = Minecraft.getMinecraft().getItemColors(); itemColors.forEach(p -> Minecraft.getMinecraft().getItemColors().registerItemColorHandler(p.getRight(), p.getKey()));
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);
} }
@SubscribeEvent @SubscribeEvent
public void registerModels(ModelRegistryEvent e) { 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) { for (BlockBase block : blocksToRegister) {
block.registerModels(this); block.registerModels(this);
} }
}
public static void onReceiveCraftingPreviewResponse(MessageGridCraftingPreviewResponse message) { for (Item item : itemsToRegister) {
Minecraft.getMinecraft().addScheduledTask(() -> { if (item instanceof ItemBase) {
GuiScreen screen = Minecraft.getMinecraft().currentScreen; ((ItemBase) item).registerModels(this);
if (screen instanceof GuiCraftingStart) {
screen = ((GuiCraftingStart) screen).getParent();
} }
}
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 @SubscribeEvent
@@ -244,7 +87,17 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration {
@Override @Override
public void setModel(Block block, int meta, ModelResourceLocation resource) { 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 @Override
@@ -261,4 +114,14 @@ public class ProxyClient extends ProxyCommon implements IModelRegistration {
public void setStateMapper(Block block, IStateMapper stateMapper) { public void setStateMapper(Block block, IStateMapper stateMapper) {
ModelLoader.setCustomStateMapper(block, stateMapper); ModelLoader.setCustomStateMapper(block, stateMapper);
} }
@Override
public void setTesr(Class<? extends TileEntity> 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.
}
} }

View File

@@ -80,7 +80,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
public class ProxyCommon { public class ProxyCommon {
private List<Item> itemsToRegister = new LinkedList<>(); protected List<Item> itemsToRegister = new LinkedList<>();
protected List<BlockBase> blocksToRegister = new LinkedList<>(); protected List<BlockBase> blocksToRegister = new LinkedList<>();
public void preInit(FMLPreInitializationEvent e) { public void preInit(FMLPreInitializationEvent e) {

View File

@@ -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.IBakedModel;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.IStateMapper; 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.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.ICustomModelLoader; import net.minecraftforge.client.model.ICustomModelLoader;
@@ -16,9 +20,18 @@ public interface IModelRegistration {
void setModel(Block block, int meta, ModelResourceLocation resource); 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); void setModelMeshDefinition(Block block, ItemMeshDefinition meshDefinition);
// Supplier needed to avoid server crash.
void addModelLoader(Supplier<ICustomModelLoader> modelLoader); void addModelLoader(Supplier<ICustomModelLoader> modelLoader);
void setStateMapper(Block block, IStateMapper stateMapper); void setStateMapper(Block block, IStateMapper stateMapper);
void setTesr(Class<? extends TileEntity> tile, TileEntitySpecialRenderer tesr);
void addItemColor(Item item, IItemColor itemColor);
} }

View File

@@ -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;
}
}

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskSyncData;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; 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.IPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;

View File

@@ -23,8 +23,8 @@ import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.network.MessageGridSettingsUpdate; import com.raoulvdberge.refinedstorage.network.MessageGridSettingsUpdate;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;

View File

@@ -31,8 +31,8 @@ import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile;
import com.raoulvdberge.refinedstorage.item.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.tile.TileBase; import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;