Inventory rendering now works correctly

This commit is contained in:
Adubbz 2014-09-27 11:31:58 +10:00
parent e53f48b08f
commit a84311f0d3
8 changed files with 99 additions and 22 deletions

View File

@ -64,7 +64,7 @@ public enum ChestChangerType {
{ {
item = new ItemChestChanger(this); item = new ItemChestChanger(this);
GameRegistry.registerItem(item, itemName); GameRegistry.registerItem(item, itemName);
ModelHelper.loadInventoryModel(item, "ironchest:" + itemName); ModelHelper.registerItem(item, "ironchest:" + itemName);
return item; return item;
} }

View File

@ -19,6 +19,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.RegistrySimple;
import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@ -50,6 +51,8 @@ public class IronChest
PacketHandler.INSTANCE.ordinal(); PacketHandler.INSTANCE.ordinal();
} }
private static boolean run = false;
@EventHandler @EventHandler
public void load(FMLInitializationEvent evt) public void load(FMLInitializationEvent evt)
{ {
@ -57,9 +60,9 @@ public class IronChest
//Minecraft.getRenderItem() returns null before this stage //Minecraft.getRenderItem() returns null before this stage
ChestChangerType.buildItems(); ChestChangerType.buildItems();
ironChestBlock = new BlockIronChest(); ironChestBlock = new BlockIronChest();
GameRegistry.registerBlock(ironChestBlock, ItemIronChest.class, "BlockIronChest"); RegistryHelper.registerBlock(ironChestBlock, ItemIronChest.class, "BlockIronChest");
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getBlockModelShapes().func_178123_a(ironChestBlock); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getBlockModelShapes().func_178123_a(ironChestBlock);
ModelHelper.loadInventoryModel(ironChestBlock, "ironchest:BlockIronChest");
for (IronChestType typ : IronChestType.values()) for (IronChestType typ : IronChestType.values())
{ {

View File

@ -0,0 +1,58 @@
/*******************************************************************************
* Copyright (c) 2012 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
package cpw.mods.ironchest;
import java.lang.reflect.Constructor;
import java.util.Iterator;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderException;
import net.minecraftforge.fml.common.LoaderState;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.common.registry.GameData;
import net.minecraftforge.fml.common.registry.GameRegistry;
import org.apache.logging.log4j.Level;
import com.google.common.collect.ObjectArrays;
public class RegistryHelper
{
/**
* A temporary workaround whilst GameRegistry hasn't been fully updated to support 1.8
*/
public static Block registerBlock(Block block, Class<? extends ItemBlock> itemclass, String name, Object... itemCtorArgs)
{
block = GameRegistry.registerBlock(block, itemclass, name, itemCtorArgs);
Item associatedItem = GameRegistry.findItem("ironchest", name);
Map itemBlockMap = (Map)ObfuscationReflectionHelper.getPrivateValue(Item.class, null, "field_179220_a");
if (!itemBlockMap.containsKey(block)) itemBlockMap.put(block, associatedItem);
Iterator iterator = block.getBlockState().getValidStates().iterator();
while (iterator.hasNext())
{
IBlockState iblockstate = (IBlockState)iterator.next();
int id = Block.blockRegistry.getIDForObject(block) << 4 | block.getMetaFromBlockState(iblockstate);
Block.field_176229_d.func_148746_a(iblockstate, id);
}
return block;
}
}

View File

@ -208,13 +208,13 @@ public class TileEntityIronChest extends TileEntityLockable implements IUpdatePl
} }
@Override @Override
public String getName() public String getCommandSenderName()
{ {
return this.hasCustomName() ? this.customName : type.name(); return this.hasName() ? this.customName : type.name();
} }
@Override @Override
public boolean hasCustomName() public boolean hasName()
{ {
return this.customName != null && this.customName.length() > 0; return this.customName != null && this.customName.length() > 0;
} }
@ -271,7 +271,7 @@ public class TileEntityIronChest extends TileEntityLockable implements IUpdatePl
nbttagcompound.setTag("Items", nbttaglist); nbttagcompound.setTag("Items", nbttaglist);
nbttagcompound.setByte("facing", (byte)facing); nbttagcompound.setByte("facing", (byte)facing);
if (this.hasCustomName()) if (this.hasName())
{ {
nbttagcompound.setString("CustomName", this.customName); nbttagcompound.setString("CustomName", this.customName);
} }

View File

@ -20,6 +20,7 @@ import net.minecraft.world.World;
import net.minecraftforge.fml.client.FMLClientHandler; import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
import cpw.mods.ironchest.CommonProxy; import cpw.mods.ironchest.CommonProxy;
import cpw.mods.ironchest.IronChest;
import cpw.mods.ironchest.IronChestType; import cpw.mods.ironchest.IronChestType;
import cpw.mods.ironchest.TileEntityIronChest; import cpw.mods.ironchest.TileEntityIronChest;
@ -28,6 +29,14 @@ public class ClientProxy extends CommonProxy
@Override @Override
public void registerRenderInformation() public void registerRenderInformation()
{ {
for (IronChestType chestType : IronChestType.values())
{
if (chestType != IronChestType.WOOD)
{
ModelHelper.registerBlock(IronChest.ironChestBlock, chestType.ordinal(), "ironchest:BlockIronChest");
}
}
TileEntityRendererChestHelper.instance = new IronChestRenderHelper(); TileEntityRendererChestHelper.instance = new IronChestRenderHelper();
} }

View File

@ -36,7 +36,7 @@ public class IronChestRenderHelper extends TileEntityRendererChestHelper
} }
@Override @Override
public void renderChest(ItemStack itemStack) public void renderByItem(ItemStack itemStack)
{ {
Block block = Block.getBlockFromItem(itemStack.getItem()); Block block = Block.getBlockFromItem(itemStack.getItem());
@ -46,7 +46,7 @@ public class IronChestRenderHelper extends TileEntityRendererChestHelper
} }
else else
{ {
super.renderChest(itemStack); super.renderByItem(itemStack);
} }
} }
} }

View File

@ -1,7 +1,18 @@
/*******************************************************************************
* Copyright (c) 2012 cpw.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* cpw - initial API and implementation
******************************************************************************/
package cpw.mods.ironchest.client; package cpw.mods.ironchest.client;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemModelMesher;
import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
@ -10,23 +21,24 @@ import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class ModelHelper public class ModelHelper
{ {
public static void loadInventoryModel(Item item, int metadata, String itemName) public static void registerItem(Item item, int metadata, String itemName)
{ {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().loadItemModel(item, metadata, new ModelResourceLocation(itemName, "inventory")); ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
mesher.register(item, metadata, new ModelResourceLocation(itemName, "inventory"));
} }
public static void loadInventoryModel(Block block, int metadata, String blockName) public static void registerBlock(Block block, int metadata, String blockName)
{ {
loadInventoryModel(Item.getItemFromBlock(block), metadata, blockName); registerItem(Item.getItemFromBlock(block), metadata, blockName);
} }
public static void loadInventoryModel(Block block, String blockName) public static void registerBlock(Block block, String blockName)
{ {
loadInventoryModel(block, 0, blockName); registerBlock(block, 0, blockName);
} }
public static void loadInventoryModel(Item item, String itemName) public static void registerItem(Item item, String itemName)
{ {
loadInventoryModel(item, 0, itemName); registerItem(item, 0, itemName);
} }
} }

View File

@ -1,5 +0,0 @@
{
"variants": {
"normal": { "model": "ironchest:BlockIronChest" }
}
}