diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index 19461d667..1329c1aab 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -3,7 +3,6 @@ package refinedstorage.gui; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; @@ -13,6 +12,7 @@ import refinedstorage.storage.IStorageGui; import refinedstorage.tile.*; import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.WirelessGrid; +import refinedstorage.util.HandUtils; public class GuiHandler implements IGuiHandler { private Container getContainer(int ID, EntityPlayer player, TileEntity tile) { @@ -56,9 +56,7 @@ public class GuiHandler implements IGuiHandler { } private WirelessGrid getWirelessGrid(World world, EntityPlayer player, int hand) { - EnumHand realHand = hand == 0 ? EnumHand.MAIN_HAND : EnumHand.OFF_HAND; - - return new WirelessGrid(player.getHeldItem(realHand), realHand, world); + return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand), world); } private ContainerGrid getWirelessGridContainer(World world, EntityPlayer player, int hand) { diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridSettingsUpdate.java b/src/main/java/refinedstorage/network/MessageWirelessGridSettingsUpdate.java index 88c8eab9a..5db048608 100755 --- a/src/main/java/refinedstorage/network/MessageWirelessGridSettingsUpdate.java +++ b/src/main/java/refinedstorage/network/MessageWirelessGridSettingsUpdate.java @@ -3,11 +3,11 @@ package refinedstorage.network; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumHand; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import refinedstorage.RefinedStorageItems; import refinedstorage.item.ItemWirelessGrid; import refinedstorage.tile.grid.TileGrid; +import refinedstorage.util.HandUtils; public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { private int hand; @@ -43,7 +43,7 @@ public class MessageWirelessGridSettingsUpdate extends MessageHandlerPlayerToSer @Override public void handle(MessageWirelessGridSettingsUpdate message, EntityPlayerMP player) { - ItemStack held = player.getHeldItem(hand == 1 ? EnumHand.OFF_HAND : EnumHand.MAIN_HAND); + ItemStack held = player.getHeldItem(HandUtils.getHandById(message.hand)); if (held != null && held.getItem() == RefinedStorageItems.WIRELESS_GRID && held.getTagCompound() != null) { if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 12e15600d..f56f288e2 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -18,19 +18,15 @@ import refinedstorage.block.EnumControllerType; import refinedstorage.storage.IStorage; import refinedstorage.storage.IStorageProvider; import refinedstorage.storage.StorageItem; +import refinedstorage.tile.grid.WirelessGridConsumer; import refinedstorage.tile.settings.IRedstoneModeSetting; import refinedstorage.tile.settings.RedstoneMode; +import refinedstorage.util.HandUtils; import refinedstorage.util.InventoryUtils; import java.util.*; public class TileController extends TileBase implements IEnergyReceiver, INetworkTile, IRedstoneModeSetting { - public class WirelessGridConsumer { - public EntityPlayer player; - public EnumHand hand; - public ItemStack wirelessGrid; - } - private List items = new ArrayList(); private List storages = new ArrayList(); private List wirelessGridConsumers = new ArrayList(); @@ -120,12 +116,13 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor wirelessGridConsumersMarkedForRemoval.clear(); Iterator it = wirelessGridConsumers.iterator(); + while (it.hasNext()) { WirelessGridConsumer consumer = it.next(); - if (!InventoryUtils.compareStack(consumer.wirelessGrid, consumer.player.getHeldItem(consumer.hand))) { - onCloseWirelessGrid(consumer.player); - consumer.player.closeScreen(); + if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { + onCloseWirelessGrid(consumer.getPlayer()); + consumer.getPlayer().closeScreen(); } } @@ -271,13 +268,9 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } public void onOpenWirelessGrid(EntityPlayer player, EnumHand hand) { - WirelessGridConsumer consumer = new WirelessGridConsumer(); - consumer.hand = hand; - consumer.player = player; - consumer.wirelessGrid = player.getHeldItem(hand); - wirelessGridConsumers.add(consumer); + wirelessGridConsumers.add(new WirelessGridConsumer(player, hand, player.getHeldItem(hand))); - player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, hand == EnumHand.OFF_HAND ? 1 : 0, 0, 0); + player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, HandUtils.getIdFromHand(hand), 0, 0); } public void onCloseWirelessGrid(EntityPlayer player) { @@ -290,12 +283,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor public WirelessGridConsumer getWirelessGridConsumer(EntityPlayer player) { Iterator it = wirelessGridConsumers.iterator(); + while (it.hasNext()) { WirelessGridConsumer consumer = it.next(); - if (consumer.player == player) { + + if (consumer.getPlayer() == player) { return consumer; } } + return null; } diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 7df40e3d7..b23556cf9 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -81,7 +81,9 @@ public class WirelessGrid implements IGrid { @Override public boolean isConnected() { - return getController() instanceof TileController && getController().isActive(); + // Since getController().isActive() doesn't do anything clientside + // we just check if the energy usage is above 0. + return getController() instanceof TileController && getController().getEnergyUsage() > 0; } @Override diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGridConsumer.java b/src/main/java/refinedstorage/tile/grid/WirelessGridConsumer.java new file mode 100755 index 000000000..d9cad6354 --- /dev/null +++ b/src/main/java/refinedstorage/tile/grid/WirelessGridConsumer.java @@ -0,0 +1,29 @@ +package refinedstorage.tile.grid; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; + +public class WirelessGridConsumer { + private EntityPlayer player; + private EnumHand hand; + private ItemStack wirelessGrid; + + public WirelessGridConsumer(EntityPlayer player, EnumHand hand, ItemStack wirelessGrid) { + this.player = player; + this.hand = hand; + this.wirelessGrid = wirelessGrid; + } + + public ItemStack getWirelessGrid() { + return wirelessGrid; + } + + public EnumHand getHand() { + return hand; + } + + public EntityPlayer getPlayer() { + return player; + } +} \ No newline at end of file diff --git a/src/main/java/refinedstorage/util/HandUtils.java b/src/main/java/refinedstorage/util/HandUtils.java new file mode 100755 index 000000000..27a2b9f13 --- /dev/null +++ b/src/main/java/refinedstorage/util/HandUtils.java @@ -0,0 +1,27 @@ +package refinedstorage.util; + +import net.minecraft.util.EnumHand; + +public class HandUtils { + public static EnumHand getHandById(int id) { + switch (id) { + case 0: + return EnumHand.MAIN_HAND; + case 1: + return EnumHand.OFF_HAND; + } + + return EnumHand.MAIN_HAND; + } + + public static int getIdFromHand(EnumHand hand) { + switch (hand) { + case MAIN_HAND: + return 0; + case OFF_HAND: + return 1; + } + + return 0; + } +}