diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index 1df2c922e..e1cd09027 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -8,6 +8,7 @@ import refinedstorage.block.EnumGridType; import refinedstorage.container.slot.SlotGridCraftingResult; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; +import refinedstorage.tile.grid.WirelessGrid; import java.util.ArrayList; import java.util.List; @@ -79,9 +80,8 @@ public class ContainerGrid extends ContainerBase { public void onContainerClosed(EntityPlayer player) { super.onContainerClosed(player); - // @TODO: Fix - /*if (grid instanceof WirelessGrid && ((WirelessGrid) grid).getBoundTile() instanceof TileController) { - grid.getController().onCloseWirelessGrid(player); - }*/ + if (!player.worldObj.isRemote && grid instanceof WirelessGrid) { + ((WirelessGrid) grid).onClose(player); + } } } diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index abbeb0fe8..200292ee9 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -15,9 +15,9 @@ import refinedstorage.gui.sidebutton.SideButtonGridSortingDirection; import refinedstorage.gui.sidebutton.SideButtonGridSortingType; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.jei.PluginRefinedStorage; +import refinedstorage.network.GridPullFlags; import refinedstorage.network.MessageGridCraftingClear; import refinedstorage.network.MessageGridCraftingPush; -import refinedstorage.network.MessageGridStoragePull; import refinedstorage.storage.ItemGroup; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; @@ -260,15 +260,15 @@ public class GuiGrid extends GuiBase { int flags = 0; if (clickedButton == 1) { - flags |= MessageGridStoragePull.PULL_HALF; + flags |= GridPullFlags.PULL_HALF; } if (GuiScreen.isShiftKeyDown()) { - flags |= MessageGridStoragePull.PULL_SHIFT; + flags |= GridPullFlags.PULL_SHIFT; } if (clickedButton == 2) { - flags |= MessageGridStoragePull.PULL_ONE; + flags |= GridPullFlags.PULL_ONE; } grid.onItemPull(hoveringItemId, flags); diff --git a/src/main/java/refinedstorage/gui/GuiHandler.java b/src/main/java/refinedstorage/gui/GuiHandler.java index 1329c1aab..553dad20a 100755 --- a/src/main/java/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/refinedstorage/gui/GuiHandler.java @@ -49,24 +49,24 @@ public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID == RefinedStorageGui.WIRELESS_GRID) { - return getWirelessGridContainer(world, player, x); + return getWirelessGridContainer(player, x); } return getContainer(ID, player, world.getTileEntity(new BlockPos(x, y, z))); } - private WirelessGrid getWirelessGrid(World world, EntityPlayer player, int hand) { - return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand), world); + private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) { + return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand)); } - private ContainerGrid getWirelessGridContainer(World world, EntityPlayer player, int hand) { - WirelessGrid wirelessGrid = getWirelessGrid(world, player, hand); + private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) { + WirelessGrid wirelessGrid = getWirelessGrid(player, hand); return new ContainerGrid(player, wirelessGrid); } - private GuiGrid getWirelessGridGui(World world, EntityPlayer player, int hand) { - WirelessGrid wirelessGrid = getWirelessGrid(world, player, hand); + private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) { + WirelessGrid wirelessGrid = getWirelessGrid(player, hand); return new GuiGrid(new ContainerGrid(player, wirelessGrid), wirelessGrid); } @@ -81,7 +81,7 @@ public class GuiHandler implements IGuiHandler { case RefinedStorageGui.GRID: return new GuiGrid((ContainerGrid) getContainer(ID, player, tile), (TileGrid) tile); case RefinedStorageGui.WIRELESS_GRID: - return getWirelessGridGui(world, player, x); + return getWirelessGridGui(player, x); case RefinedStorageGui.DISK_DRIVE: return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (IStorageGui) tile, "gui/disk_drive.png"); case RefinedStorageGui.IMPORTER: diff --git a/src/main/java/refinedstorage/network/GridPullFlags.java b/src/main/java/refinedstorage/network/GridPullFlags.java new file mode 100755 index 000000000..e90cc91bd --- /dev/null +++ b/src/main/java/refinedstorage/network/GridPullFlags.java @@ -0,0 +1,19 @@ +package refinedstorage.network; + +public class GridPullFlags { + public static final int PULL_HALF = 1; + public static final int PULL_ONE = 2; + public static final int PULL_SHIFT = 4; + + public static boolean isPullingHalf(int flags) { + return (flags & PULL_HALF) == PULL_HALF; + } + + public static boolean isPullingOne(int flags) { + return (flags & PULL_ONE) == PULL_ONE; + } + + public static boolean isPullingWithShift(int flags) { + return (flags & PULL_SHIFT) == PULL_SHIFT; + } +} diff --git a/src/main/java/refinedstorage/network/MessageGridStoragePull.java b/src/main/java/refinedstorage/network/MessageGridStoragePull.java index 3fed3fd24..629ab070f 100755 --- a/src/main/java/refinedstorage/network/MessageGridStoragePull.java +++ b/src/main/java/refinedstorage/network/MessageGridStoragePull.java @@ -2,20 +2,13 @@ package refinedstorage.network; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.item.ItemWirelessGrid; -import refinedstorage.storage.ItemGroup; import refinedstorage.tile.TileController; import refinedstorage.tile.grid.TileGrid; public class MessageGridStoragePull extends MessageHandlerPlayerToServer implements IMessage { - public static final int PULL_HALF = 1; - public static final int PULL_ONE = 2; - public static final int PULL_SHIFT = 4; - private int gridX; private int gridY; private int gridZ; @@ -51,18 +44,6 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer 1) { - quantity = group.getQuantity() / 2; - - if (quantity > 32) { - quantity = 32; - } - } else if (message.isPullingOne()) { - quantity = 1; - } else if (message.isPullingWithShift()) { - // NO OP, the quantity already set (64) is needed for shift - } - - if (quantity > group.getType().getItemStackLimit(group.toItemStack())) { - quantity = group.getType().getItemStackLimit(group.toItemStack()); - } - - ItemStack took = controller.take(group.copy(quantity).toItemStack()); - - if (took != null) { - if (message.isPullingWithShift()) { - if (!player.inventory.addItemStackToInventory(took.copy())) { - controller.push(took); - } - } else { - player.inventory.setItemStack(took); - player.updateHeldItem(); - } - - controller.drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PULL); - } + controller.handleStoragePull(message.id, message.flags, player); } } } diff --git a/src/main/java/refinedstorage/network/MessageGridStoragePush.java b/src/main/java/refinedstorage/network/MessageGridStoragePush.java index 93780584a..bd98b86c6 100755 --- a/src/main/java/refinedstorage/network/MessageGridStoragePush.java +++ b/src/main/java/refinedstorage/network/MessageGridStoragePush.java @@ -2,12 +2,9 @@ package refinedstorage.network; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.item.ItemWirelessGrid; -import refinedstorage.tile.TileController; import refinedstorage.tile.grid.TileGrid; public class MessageGridStoragePush extends MessageHandlerPlayerToServer implements IMessage { @@ -51,43 +48,7 @@ public class MessageGridStoragePush extends MessageHandlerPlayerToServer { +public class MessageTileContainerUpdate implements IMessage, IMessageHandler { private TileEntity tile; private int x; private int y; private int z; - public MessageContainerUpdate() { + public MessageTileContainerUpdate() { } - public MessageContainerUpdate(TileEntity tile) { + public MessageTileContainerUpdate(TileEntity tile) { this.tile = tile; } @@ -49,7 +49,7 @@ public class MessageContainerUpdate implements IMessage, IMessageHandler { + private List itemGroups; + + public MessageWirelessGridItems() { + } + + public MessageWirelessGridItems(List itemGroups) { + this.itemGroups = itemGroups; + } + + @Override + public void fromBytes(ByteBuf buf) { + int size = buf.readInt(); + + WirelessGrid.ITEM_GROUPS.clear(); + + WirelessGrid.LAST_ITEM_GROUP_UPDATE = System.currentTimeMillis(); + + for (int i = 0; i < size; ++i) { + WirelessGrid.ITEM_GROUPS.add(new ItemGroup(buf)); + } + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(itemGroups.size()); + + for (ItemGroup group : itemGroups) { + group.toBytes(buf, itemGroups.indexOf(group)); + } + } + + @Override + public IMessage onMessage(MessageWirelessGridItems message, MessageContext ctx) { + return null; + } +} diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java b/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java new file mode 100755 index 000000000..5892062cc --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java @@ -0,0 +1,58 @@ +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.tile.TileController; + +public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer implements IMessage { + private int controllerX; + private int controllerY; + private int controllerZ; + private int id; + private int flags; + + public MessageWirelessGridStoragePull() { + } + + public MessageWirelessGridStoragePull(int controllerX, int controllerY, int controllerZ, int id, int flags) { + this.controllerX = controllerX; + this.controllerY = controllerY; + this.controllerZ = controllerZ; + this.id = id; + this.flags = flags; + } + + @Override + public void fromBytes(ByteBuf buf) { + controllerX = buf.readInt(); + controllerY = buf.readInt(); + controllerZ = buf.readInt(); + id = buf.readInt(); + flags = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(controllerX); + buf.writeInt(controllerY); + buf.writeInt(controllerZ); + buf.writeInt(id); + buf.writeInt(flags); + } + + @Override + public void handle(MessageWirelessGridStoragePull message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); + + if (tile instanceof TileController && ((TileController) tile).isActive()) { + TileController controller = (TileController) tile; + + if (message.id < controller.getItemGroups().size()) { + controller.handleStoragePull(message.id, message.flags, player); + } + } + } +} diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridStoragePush.java b/src/main/java/refinedstorage/network/MessageWirelessGridStoragePush.java new file mode 100755 index 000000000..59b4212d7 --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageWirelessGridStoragePush.java @@ -0,0 +1,54 @@ +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.tile.TileController; + +public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer implements IMessage { + private int controllerX; + private int controllerY; + private int controllerZ; + private int playerSlot; + private boolean one; + + public MessageWirelessGridStoragePush() { + } + + public MessageWirelessGridStoragePush(int controllerX, int controllerY, int controllerZ, int playerSlot, boolean one) { + this.controllerX = controllerX; + this.controllerY = controllerY; + this.controllerZ = controllerZ; + this.playerSlot = playerSlot; + this.one = one; + } + + @Override + public void fromBytes(ByteBuf buf) { + controllerX = buf.readInt(); + controllerY = buf.readInt(); + controllerZ = buf.readInt(); + playerSlot = buf.readInt(); + one = buf.readBoolean(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(controllerX); + buf.writeInt(controllerY); + buf.writeInt(controllerZ); + buf.writeInt(playerSlot); + buf.writeBoolean(one); + } + + @Override + public void handle(MessageWirelessGridStoragePush message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ)); + + if (tile instanceof TileController && ((TileController) tile).isActive()) { + ((TileController) tile).handleStoragePush(message.playerSlot, message.one, player); + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 464af4fb7..d9ddd73d4 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -34,6 +34,7 @@ import static refinedstorage.RefinedStorage.ID; public class CommonProxy { public void preInit(FMLPreInitializationEvent e) { RefinedStorage.NETWORK.registerMessage(MessageTileUpdate.class, MessageTileUpdate.class, 0, Side.CLIENT); + RefinedStorage.NETWORK.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, 15, Side.CLIENT); RefinedStorage.NETWORK.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, 1, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridStoragePush.class, MessageGridStoragePush.class, 2, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridStoragePull.class, MessageGridStoragePull.class, 3, Side.SERVER); @@ -47,7 +48,9 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageGridCraftingPush.class, MessageGridCraftingPush.class, 12, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, 13, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, 14, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageContainerUpdate.class, MessageContainerUpdate.class, 15, Side.CLIENT); + RefinedStorage.NETWORK.registerMessage(MessageWirelessGridItems.class, MessageWirelessGridItems.class, 16, Side.CLIENT); + RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePush.class, MessageWirelessGridStoragePush.class, 17, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePull.class, MessageWirelessGridStoragePull.class, 18, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler()); diff --git a/src/main/java/refinedstorage/tile/TileBase.java b/src/main/java/refinedstorage/tile/TileBase.java index 8fec151f6..fb8f4c042 100755 --- a/src/main/java/refinedstorage/tile/TileBase.java +++ b/src/main/java/refinedstorage/tile/TileBase.java @@ -15,7 +15,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint; import refinedstorage.RefinedStorage; -import refinedstorage.network.MessageContainerUpdate; +import refinedstorage.network.MessageTileContainerUpdate; import refinedstorage.network.MessageTileUpdate; public abstract class TileBase extends TileEntity implements ITickable { @@ -39,7 +39,7 @@ public abstract class TileBase extends TileEntity implements ITickable { for (EntityPlayer player : worldObj.playerEntities) { if (((INetworkTile) this).getContainer() == player.openContainer.getClass()) { - RefinedStorage.NETWORK.sendTo(new MessageContainerUpdate(this), (EntityPlayerMP) player); + RefinedStorage.NETWORK.sendTo(new MessageTileContainerUpdate(this), (EntityPlayerMP) player); } } } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 52c587ed8..e2c583370 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -4,6 +4,7 @@ import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyReceiver; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -21,6 +22,8 @@ import refinedstorage.block.BlockController; import refinedstorage.block.EnumControllerType; import refinedstorage.container.ContainerController; import refinedstorage.item.ItemWirelessGrid; +import refinedstorage.network.GridPullFlags; +import refinedstorage.network.MessageWirelessGridItems; import refinedstorage.storage.IStorage; import refinedstorage.storage.IStorageProvider; import refinedstorage.storage.ItemGroup; @@ -132,6 +135,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) { onCloseWirelessGrid(consumer.getPlayer()); consumer.getPlayer().closeScreen(); + } else { + RefinedStorage.NETWORK.sendTo(new MessageWirelessGridItems(itemGroups), (EntityPlayerMP) consumer.getPlayer()); } } @@ -458,4 +463,79 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor public Class getContainer() { return ContainerController.class; } + + public void handleStoragePull(int id, int flags, EntityPlayerMP player) { + ItemGroup group = itemGroups.get(id); + + int quantity = 64; + + if (GridPullFlags.isPullingHalf(flags) && group.getQuantity() > 1) { + quantity = group.getQuantity() / 2; + + if (quantity > 32) { + quantity = 32; + } + } else if (GridPullFlags.isPullingOne(flags)) { + quantity = 1; + } else if (GridPullFlags.isPullingWithShift(flags)) { + // NO OP, the quantity already set (64) is needed for shift + } + + if (quantity > group.getType().getItemStackLimit(group.toItemStack())) { + quantity = group.getType().getItemStackLimit(group.toItemStack()); + } + + ItemStack took = take(group.copy(quantity).toItemStack()); + + if (took != null) { + if (GridPullFlags.isPullingWithShift(flags)) { + if (!player.inventory.addItemStackToInventory(took.copy())) { + push(took); + } + } else { + player.inventory.setItemStack(took); + player.updateHeldItem(); + } + + drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PULL); + } + } + + public void handleStoragePush(int playerSlot, boolean one, EntityPlayerMP player) { + ItemStack stack; + + if (playerSlot == -1) { + stack = player.inventory.getItemStack().copy(); + + if (one) { + stack.stackSize = 1; + } + } else { + stack = player.inventory.getStackInSlot(playerSlot); + } + + if (stack != null) { + boolean success = push(stack); + + if (success) { + if (playerSlot == -1) { + if (one) { + player.inventory.getItemStack().stackSize--; + + if (player.inventory.getItemStack().stackSize == 0) { + player.inventory.setItemStack(null); + } + } else { + player.inventory.setItemStack(null); + } + + player.updateHeldItem(); + } else { + player.inventory.setInventorySlotContents(playerSlot, null); + } + } + + drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PUSH); + } + } } diff --git a/src/main/java/refinedstorage/tile/TileMachine.java b/src/main/java/refinedstorage/tile/TileMachine.java index 6d1099d76..54f29104e 100755 --- a/src/main/java/refinedstorage/tile/TileMachine.java +++ b/src/main/java/refinedstorage/tile/TileMachine.java @@ -87,7 +87,6 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed connected = buf.readBoolean(); if (lastConnected != connected) { - // @TODO: Am I using the correct flags? worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 2 | 4); } } diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index f152d77b7..f52b845d8 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -1,31 +1,37 @@ package refinedstorage.tile.grid; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumHand; -import net.minecraft.world.World; +import net.minecraft.util.math.BlockPos; import refinedstorage.RefinedStorage; import refinedstorage.block.EnumGridType; import refinedstorage.item.ItemWirelessGrid; import refinedstorage.network.MessageWirelessGridSettingsUpdate; +import refinedstorage.network.MessageWirelessGridStoragePull; +import refinedstorage.network.MessageWirelessGridStoragePush; import refinedstorage.storage.ItemGroup; +import refinedstorage.tile.TileController; import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.util.HandUtils; +import java.util.ArrayList; import java.util.List; -// @TODO: Fix this as well public class WirelessGrid implements IGrid { + public static long LAST_ITEM_GROUP_UPDATE = 0; + public static List ITEM_GROUPS = new ArrayList(); + private ItemStack stack; private EnumHand hand; - private World world; private int sortingType; private int sortingDirection; private int searchBoxMode; - public WirelessGrid(ItemStack stack, EnumHand hand, World world) { + public WirelessGrid(ItemStack stack, EnumHand hand) { this.stack = stack; this.hand = hand; - this.world = world; this.sortingType = ItemWirelessGrid.getSortingType(stack); this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack); this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack); @@ -38,17 +44,25 @@ public class WirelessGrid implements IGrid { @Override public List getItemGroups() { - return null; + return ITEM_GROUPS; } @Override public void onItemPush(int playerSlot, boolean one) { - + RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePush(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), playerSlot, one)); } @Override public void onItemPull(int id, int flags) { + RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePull(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), id, flags)); + } + public void onClose(EntityPlayer player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack))); + + if (tile instanceof TileController) { + ((TileController) tile).onCloseWirelessGrid(player); + } } @Override @@ -94,6 +108,6 @@ public class WirelessGrid implements IGrid { @Override public boolean isConnected() { - return false; + return System.currentTimeMillis() - LAST_ITEM_GROUP_UPDATE < 1000; } }