From 6d505961a3fb8bb9c55fba496a46f78fdbcee085 Mon Sep 17 00:00:00 2001 From: Christian Weeks Date: Wed, 22 Feb 2012 13:55:47 -0500 Subject: [PATCH] Version 2.5 - fix IC display on SMP, fix crystal chests on SMP --- IronChests2/build.xml | 2 +- .../mods/ironchest/client/ClientProxy.java | 31 +++++++++- .../cpw/mods/ironchest/BlockIronChest.java | 6 -- .../common/cpw/mods/ironchest/IProxy.java | 8 +++ .../cpw/mods/ironchest/ItemChestChanger.java | 2 + .../mods/ironchest/TileEntityIronChest.java | 58 ++++++++++++++++++- .../net/minecraft/src/mod_IronChest.java | 8 ++- .../mods/ironchest/server/ServerProxy.java | 23 ++++++++ 8 files changed, 124 insertions(+), 14 deletions(-) diff --git a/IronChests2/build.xml b/IronChests2/build.xml index d94599d..55d1585 100644 --- a/IronChests2/build.xml +++ b/IronChests2/build.xml @@ -13,7 +13,7 @@ - + diff --git a/IronChests2/client/cpw/mods/ironchest/client/ClientProxy.java b/IronChests2/client/cpw/mods/ironchest/client/ClientProxy.java index fddfe04..913fdd9 100644 --- a/IronChests2/client/cpw/mods/ironchest/client/ClientProxy.java +++ b/IronChests2/client/cpw/mods/ironchest/client/ClientProxy.java @@ -11,6 +11,8 @@ import net.minecraft.src.GuiScreen; import net.minecraft.src.ModLoader; import net.minecraft.src.ModLoaderMp; import net.minecraft.src.NBTTagCompound; +import net.minecraft.src.Packet; +import net.minecraft.src.TileEntity; import net.minecraft.src.forge.MinecraftForgeClient; import cpw.mods.ironchest.ChestChangerType; import cpw.mods.ironchest.IProxy; @@ -21,8 +23,8 @@ public class ClientProxy extends BaseModMp implements IProxy { @Override public void registerRenderInformation() { ChestItemRenderHelper.instance=new IronChestRenderHelper(); - MinecraftForgeClient.preloadTexture("cpw/mods/ironchest/sprites/block_textures.png"); - MinecraftForgeClient.preloadTexture("cpw/mods/ironchest/sprites/item_textures.png"); + MinecraftForgeClient.preloadTexture("/cpw/mods/ironchest/sprites/block_textures.png"); + MinecraftForgeClient.preloadTexture("/cpw/mods/ironchest/sprites/item_textures.png"); } @Override @@ -84,4 +86,29 @@ public class ClientProxy extends BaseModMp implements IProxy { } return null; } + + @Override + public void handleTileEntityPacket(int x, int y, int z, int type, int[] intData, float[] floatData, String[] stringData) { + TileEntity te=ModLoader.getMinecraftInstance().theWorld.getBlockTileEntity(x, y, z); + if (te!=null && te instanceof TileEntityIronChest) { + TileEntityIronChest icte=(TileEntityIronChest)te; + icte.handlePacketData(type,intData,floatData,stringData); + } + } + + @Override + public Packet getDescriptionPacket(TileEntityIronChest tile) { + // NOOP on client + return null; + } + + @Override + public void sendTileEntityUpdate(TileEntityIronChest tile) { + // NOOP on client + } + + @Override + public boolean isRemote() { + return ModLoader.getMinecraftInstance().theWorld.isRemote; + } } diff --git a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java index 23165b0..acc099e 100644 --- a/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java +++ b/IronChests2/common/cpw/mods/ironchest/BlockIronChest.java @@ -14,7 +14,6 @@ import net.minecraft.src.NBTTagCompound; import net.minecraft.src.TileEntity; import net.minecraft.src.World; import net.minecraft.src.mod_IronChest; -import net.minecraft.src.forge.IMultipassRender; import net.minecraft.src.forge.ITextureProvider; public class BlockIronChest extends BlockContainer implements ITextureProvider { @@ -182,9 +181,4 @@ public class BlockIronChest extends BlockContainer implements ITextureProvider { } } } - -/* @Override - public boolean canRenderInPass(int n) { - return n==0; - }*/ } \ No newline at end of file diff --git a/IronChests2/common/cpw/mods/ironchest/IProxy.java b/IronChests2/common/cpw/mods/ironchest/IProxy.java index 7a55e7a..909abca 100644 --- a/IronChests2/common/cpw/mods/ironchest/IProxy.java +++ b/IronChests2/common/cpw/mods/ironchest/IProxy.java @@ -5,6 +5,7 @@ import java.io.File; import net.minecraft.src.EntityItem; import net.minecraft.src.EntityPlayer; import net.minecraft.src.NBTTagCompound; +import net.minecraft.src.Packet; public interface IProxy { @@ -22,4 +23,11 @@ public interface IProxy { public abstract void registerGUI(int guiId); + public abstract void handleTileEntityPacket(int x, int y, int z, int type, int[] intData, float[] floatData, String[] stringData); + + public abstract Packet getDescriptionPacket(TileEntityIronChest tile); + + public abstract void sendTileEntityUpdate(TileEntityIronChest tile); + + public abstract boolean isRemote(); } diff --git a/IronChests2/common/cpw/mods/ironchest/ItemChestChanger.java b/IronChests2/common/cpw/mods/ironchest/ItemChestChanger.java index e0d9ffc..5cb8a99 100644 --- a/IronChests2/common/cpw/mods/ironchest/ItemChestChanger.java +++ b/IronChests2/common/cpw/mods/ironchest/ItemChestChanger.java @@ -5,6 +5,7 @@ import net.minecraft.src.Item; import net.minecraft.src.ItemStack; import net.minecraft.src.TileEntity; import net.minecraft.src.World; +import net.minecraft.src.mod_IronChest; import net.minecraft.src.forge.ITextureProvider; public class ItemChestChanger extends Item implements ITextureProvider { @@ -32,6 +33,7 @@ public class ItemChestChanger extends Item implements ITextureProvider { world.setBlockMetadataWithNotify(X, Y, Z, newchest.getType().ordinal()); world.notifyBlocksOfNeighborChange(X, Y, Z, world.getBlockId(X, Y, Z)); stack.stackSize=0; + mod_IronChest.proxy.sendTileEntityUpdate(newchest); return true; } else { return false; diff --git a/IronChests2/common/cpw/mods/ironchest/TileEntityIronChest.java b/IronChests2/common/cpw/mods/ironchest/TileEntityIronChest.java index e61484d..6fed2d8 100644 --- a/IronChests2/common/cpw/mods/ironchest/TileEntityIronChest.java +++ b/IronChests2/common/cpw/mods/ironchest/TileEntityIronChest.java @@ -8,6 +8,7 @@ import net.minecraft.src.IInventory; import net.minecraft.src.ItemStack; import net.minecraft.src.NBTTagCompound; import net.minecraft.src.NBTTagList; +import net.minecraft.src.Packet; import net.minecraft.src.TileEntity; import net.minecraft.src.mod_IronChest; @@ -21,6 +22,7 @@ public class TileEntityIronChest extends TileEntity implements IInventory { private ItemStack[] topStacks; private byte facing; private boolean inventoryTouched; + private boolean hadStuff; public TileEntityIronChest() { this(IronChestType.IRON); @@ -66,7 +68,7 @@ public class TileEntityIronChest extends TileEntity implements IInventory { } protected void sortTopStacks() { - if (!type.isTransparent()) { + if (!type.isTransparent() || mod_IronChest.proxy.isRemote()) { return; } ItemStack[] tempCopy=new ItemStack[getSizeInventory()]; @@ -85,12 +87,15 @@ public class TileEntityIronChest extends TileEntity implements IInventory { hasStuff=true; } } - if (!hasStuff) { + if (!hasStuff && hadStuff) { + hadStuff=false; for (int i=0; i() { @Override public int compare(ItemStack o1, ItemStack o2) { @@ -115,7 +120,7 @@ public class TileEntityIronChest extends TileEntity implements IInventory { for (int i=p; i