From 843b2cd9c51d216fe0c7c3c42ec9327cbb502c58 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Mon, 28 Jul 2014 21:51:52 -0500 Subject: [PATCH] Fixed Crafting for real, attempt 2. --- container/ContainerOpenContext.java | 15 +++++++++++++++ .../implementations/ContainerCraftConfirm.java | 2 +- core/sync/GuiBridge.java | 10 +++++----- core/sync/packets/PacketCraftRequest.java | 2 +- core/sync/packets/PacketInventoryAction.java | 2 +- core/sync/packets/PacketSwitchGuis.java | 2 +- util/Platform.java | 4 ---- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/container/ContainerOpenContext.java b/container/ContainerOpenContext.java index 1f58c6452..f3af09486 100644 --- a/container/ContainerOpenContext.java +++ b/container/ContainerOpenContext.java @@ -1,7 +1,9 @@ package appeng.container; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; public class ContainerOpenContext { @@ -9,5 +11,18 @@ public class ContainerOpenContext public World w; public int x, y, z; public ForgeDirection side; + final public boolean isItem; + + public ContainerOpenContext(Object myItem) { + boolean isWorld = myItem instanceof IPart || myItem instanceof TileEntity; + isItem = !isWorld; + } + + public TileEntity getTile() + { + if ( isItem ) + return null; + return w.getTileEntity( x, y, z ); + } } diff --git a/container/implementations/ContainerCraftConfirm.java b/container/implementations/ContainerCraftConfirm.java index b55e4de72..f60348fe2 100644 --- a/container/implementations/ContainerCraftConfirm.java +++ b/container/implementations/ContainerCraftConfirm.java @@ -336,7 +336,7 @@ public class ContainerCraftConfirm extends AEBaseContainer // :( } - TileEntity te = openContext.w.getTileEntity( openContext.x, openContext.y, openContext.z ); + TileEntity te = openContext.getTile(); Platform.openGUI( invPlayer.player, te, openContext.side, OriginalGui ); } } diff --git a/core/sync/GuiBridge.java b/core/sync/GuiBridge.java index 467307ce4..89e1cd7b6 100644 --- a/core/sync/GuiBridge.java +++ b/core/sync/GuiBridge.java @@ -284,12 +284,12 @@ public enum GuiBridge implements IGuiHandler return null; } - private Object updateGui(Object newContainer, World w, int x, int y, int z, ForgeDirection side) + private Object updateGui(Object newContainer, World w, int x, int y, int z, ForgeDirection side, Object myItem) { if ( newContainer instanceof AEBaseContainer ) { AEBaseContainer bc = (AEBaseContainer) newContainer; - bc.openContext = new ContainerOpenContext(); + bc.openContext = new ContainerOpenContext( myItem ); bc.openContext.w = w; bc.openContext.x = x; bc.openContext.y = y; @@ -311,7 +311,7 @@ public enum GuiBridge implements IGuiHandler ItemStack it = player.inventory.getCurrentItem(); Object myItem = getGuiObject( it, player, w, x, y, z ); if ( myItem != null && ID.CorrectTileOrPart( myItem ) ) - return updateGui( ID.ConstructContainer( player.inventory, side, myItem ), w, x, y, z, side ); + return updateGui( ID.ConstructContainer( player.inventory, side, myItem ), w, x, y, z, side, myItem ); } if ( ID.type.isTile() ) @@ -322,12 +322,12 @@ public enum GuiBridge implements IGuiHandler ((IPartHost) TE).getPart( side ); IPart part = ((IPartHost) TE).getPart( side ); if ( ID.CorrectTileOrPart( part ) ) - return updateGui( ID.ConstructContainer( player.inventory, side, part ), w, x, y, z, side ); + return updateGui( ID.ConstructContainer( player.inventory, side, part ), w, x, y, z, side, part ); } else { if ( ID.CorrectTileOrPart( TE ) ) - return updateGui( ID.ConstructContainer( player.inventory, side, TE ), w, x, y, z, side ); + return updateGui( ID.ConstructContainer( player.inventory, side, TE ), w, x, y, z, side, TE ); } } diff --git a/core/sync/packets/PacketCraftRequest.java b/core/sync/packets/PacketCraftRequest.java index f53da5c7b..a1c2d6809 100644 --- a/core/sync/packets/PacketCraftRequest.java +++ b/core/sync/packets/PacketCraftRequest.java @@ -67,7 +67,7 @@ public class PacketCraftRequest extends AppEngPacket ContainerOpenContext context = cca.openContext; if ( context != null ) { - TileEntity te = context.w.getTileEntity( context.x, context.y, context.z ); + TileEntity te = context.getTile(); Platform.openGUI( player, te, cca.openContext.side, GuiBridge.GUI_CRAFTING_CONFIRM ); if ( player.openContainer instanceof ContainerCraftConfirm ) diff --git a/core/sync/packets/PacketInventoryAction.java b/core/sync/packets/PacketInventoryAction.java index 47a2d5d79..132de9d0c 100644 --- a/core/sync/packets/PacketInventoryAction.java +++ b/core/sync/packets/PacketInventoryAction.java @@ -52,7 +52,7 @@ public class PacketInventoryAction extends AppEngPacket ContainerOpenContext context = aebc.openContext; if ( context != null ) { - TileEntity te = context.w.getTileEntity( context.x, context.y, context.z ); + TileEntity te = context.getTile(); Platform.openGUI( sender, te, aebc.openContext.side, GuiBridge.GUI_CRAFTING_AMOUNT ); if ( sender.openContainer instanceof ContainerCraftAmount ) diff --git a/core/sync/packets/PacketSwitchGuis.java b/core/sync/packets/PacketSwitchGuis.java index f96290749..9a6d03ff2 100644 --- a/core/sync/packets/PacketSwitchGuis.java +++ b/core/sync/packets/PacketSwitchGuis.java @@ -36,7 +36,7 @@ public class PacketSwitchGuis extends AppEngPacket ContainerOpenContext context = bc.openContext; if ( context != null ) { - TileEntity te = context.w.getTileEntity( context.x, context.y, context.z ); + TileEntity te = context.getTile(); Platform.openGUI( player, te, context.side, newGui ); } } diff --git a/util/Platform.java b/util/Platform.java index 056dee6a4..a451060e5 100644 --- a/util/Platform.java +++ b/util/Platform.java @@ -299,10 +299,6 @@ public class Platform z = tile.zCoord; } - // valid tile? - if ( !type.CorrectTileOrPart( tile ) ) - tile = null; - if ( (type.getType().isItem() && tile == null) || type.hasPermissions( tile, x, y, z, side, p ) ) { if ( tile == null )