diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b2eeebef..fcabbc699 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ When updating to this version, you'll have to break and replace your controller. **Bugfixes** - Fixed controller not working after leaving chunk - Fixed machines not working when leaving chunk +- Fixed getting wrong items back in grid +- Fixed wrong item getting crafted - Rewrote storage networks: they are now saved to disk, so big systems won't lag when rejoining a chunk ### 0.7.16 diff --git a/src/main/java/refinedstorage/api/network/NetworkMaster.java b/src/main/java/refinedstorage/api/network/NetworkMaster.java index 30b16087f..18370c290 100755 --- a/src/main/java/refinedstorage/api/network/NetworkMaster.java +++ b/src/main/java/refinedstorage/api/network/NetworkMaster.java @@ -486,7 +486,7 @@ public class NetworkMaster { public void syncItemsWithClients() { for (EntityPlayer player : world.playerEntities) { - if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getControllerPos())) { + if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition())) { syncItemsWithClient((EntityPlayerMP) player); } } diff --git a/src/main/java/refinedstorage/container/ContainerGrid.java b/src/main/java/refinedstorage/container/ContainerGrid.java index 9f49ea3b2..133849da0 100755 --- a/src/main/java/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/refinedstorage/container/ContainerGrid.java @@ -98,14 +98,10 @@ public class ContainerGrid extends ContainerBase { if (slot == craftingResultSlot) { ((TileGrid) grid).onCraftedShift(this, player); - } else if (slot != patternResultSlot && !(slot instanceof SlotSpecimenLegacy)) { - ItemStack stack = inventorySlots.get(slotIndex).getStack(); + } else if (grid.getStorageHandler() != null && slot != patternResultSlot && !(slot instanceof SlotSpecimenLegacy) && slot.getHasStack()) { + slot.putStack(grid.getStorageHandler().onPush(slot.getStack())); - if (stack != null) { - inventorySlots.get(slotIndex).putStack(grid.onItemPush(player, stack)); - - detectAndSendChanges(); - } + detectAndSendChanges(); } } diff --git a/src/main/java/refinedstorage/gui/GuiCraftingSettings.java b/src/main/java/refinedstorage/gui/GuiCraftingSettings.java index ce7d80361..7277a76c8 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingSettings.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingSettings.java @@ -3,9 +3,12 @@ package refinedstorage.gui; import com.google.common.primitives.Ints; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; +import net.minecraft.item.ItemStack; import net.minecraftforge.fml.client.FMLClientHandler; import org.lwjgl.input.Keyboard; +import refinedstorage.RefinedStorage; import refinedstorage.container.ContainerDummy; +import refinedstorage.network.MessageGridCraftingStart; import refinedstorage.tile.controller.StorageHandler; import java.io.IOException; @@ -13,14 +16,14 @@ import java.io.IOException; public class GuiCraftingSettings extends GuiBase { private GuiTextField amountField; private GuiGrid gridGui; - private int id; + private ItemStack stack; private GuiButton startButton; - public GuiCraftingSettings(GuiGrid gridGui, int id) { + public GuiCraftingSettings(GuiGrid gridGui, ItemStack stack) { super(new ContainerDummy(), 143, 61); this.gridGui = gridGui; - this.id = id; + this.stack = stack; } @Override @@ -82,7 +85,7 @@ public class GuiCraftingSettings extends GuiBase { Integer quantity = Ints.tryParse(amountField.getText()); if (quantity != null && quantity > 0 && quantity <= StorageHandler.MAX_CRAFTING_PER_REQUEST) { - gridGui.getGrid().onCraftingRequested(id, quantity); + RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingStart(stack, quantity)); close(); } diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 8ed24d6a4..b7187b06a 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -19,10 +19,7 @@ import refinedstorage.gui.sidebutton.SideButtonGridSortingDirection; import refinedstorage.gui.sidebutton.SideButtonGridSortingType; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.jei.RefinedStorageJEIPlugin; -import refinedstorage.network.GridPullFlags; -import refinedstorage.network.MessageGridCraftingClear; -import refinedstorage.network.MessageGridPatternCreate; -import refinedstorage.tile.ClientItem; +import refinedstorage.network.*; import refinedstorage.tile.grid.IGrid; import refinedstorage.tile.grid.TileGrid; import refinedstorage.tile.grid.WirelessGrid; @@ -31,11 +28,11 @@ import java.io.IOException; import java.util.*; public class GuiGrid extends GuiBase { - private Comparator quantityComparator = new Comparator() { + private Comparator quantityComparator = new Comparator() { @Override - public int compare(ClientItem left, ClientItem right) { - int leftSize = left.getStack().stackSize; - int rightSize = right.getStack().stackSize; + public int compare(ItemStack left, ItemStack right) { + int leftSize = left.stackSize; + int rightSize = right.stackSize; if (leftSize == rightSize) { return 0; @@ -51,28 +48,26 @@ public class GuiGrid extends GuiBase { } }; - private Comparator nameComparator = new Comparator() { + private Comparator nameComparator = new Comparator() { @Override - public int compare(ClientItem left, ClientItem right) { + public int compare(ItemStack left, ItemStack right) { if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_ASCENDING) { - return left.getStack().getDisplayName().compareTo(right.getStack().getDisplayName()); + return left.getDisplayName().compareTo(right.getDisplayName()); } else if (grid.getSortingDirection() == TileGrid.SORTING_DIRECTION_DESCENDING) { - return right.getStack().getDisplayName().compareTo(left.getStack().getDisplayName()); + return right.getDisplayName().compareTo(left.getDisplayName()); } return 0; } }; - private ContainerGrid container; - private IGrid grid; - - private List items = new ArrayList(); - private GuiTextField searchField; + private ContainerGrid container; + private List items = new ArrayList(); + private IGrid grid; + private int slotNumber; - private int slotId; public GuiGrid(ContainerGrid container, IGrid grid) { super(container, 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 256 : 208); @@ -85,8 +80,8 @@ public class GuiGrid extends GuiBase { @Override public void init(int x, int y) { - if (grid.getRedstoneModeSetting() != null) { - addSideButton(new SideButtonRedstoneMode(grid.getRedstoneModeSetting())); + if (grid.getRedstoneModeConfig() != null) { + addSideButton(new SideButtonRedstoneMode(grid.getRedstoneModeConfig())); } int sx = x + 80 + 1; @@ -123,16 +118,16 @@ public class GuiGrid extends GuiBase { String query = searchField.getText().trim().toLowerCase(); if (!query.isEmpty()) { - Iterator t = items.iterator(); + Iterator t = items.iterator(); while (t.hasNext()) { - ClientItem item = t.next(); + ItemStack item = t.next(); if (query.startsWith("@")) { String[] parts = query.split(" "); String modId = parts[0].substring(1); - String modIdFromItem = Item.REGISTRY.getNameForObject(item.getStack().getItem()).getResourceDomain(); + String modIdFromItem = Item.REGISTRY.getNameForObject(item.getItem()).getResourceDomain(); if (!modIdFromItem.contains(modId)) { t.remove(); @@ -147,18 +142,18 @@ public class GuiGrid extends GuiBase { } } - if (!item.getStack().getDisplayName().toLowerCase().contains(itemFromMod.toString())) { + if (!item.getDisplayName().toLowerCase().contains(itemFromMod.toString())) { t.remove(); } } } else if (query.startsWith("#")) { String tooltip = query.substring(1); - String tooltipFromItem = StringUtils.join(item.getStack().getTooltip(container.getPlayer(), true), "\n"); + String tooltipFromItem = StringUtils.join(item.getTooltip(container.getPlayer(), true), "\n"); if (!tooltipFromItem.contains(tooltip)) { t.remove(); } - } else if (!item.getStack().getDisplayName().toLowerCase().contains(query)) { + } else if (!item.getDisplayName().toLowerCase().contains(query)) { t.remove(); } } @@ -269,14 +264,10 @@ public class GuiGrid extends GuiBase { for (int i = 0; i < 9 * getVisibleRows(); ++i) { if (inBounds(x, y, 16, 16, mouseX, mouseY) || !grid.isConnected()) { this.slotNumber = slot; - - if (slot < items.size()) { - slotId = items.get(slot).getId(); - } } if (slot < items.size()) { - ItemStack stack = items.get(slot).getStack(); + ItemStack stack = items.get(slot); drawItem(x, y, stack, true, formatQuantity(stack.stackSize, slot)); } @@ -306,7 +297,7 @@ public class GuiGrid extends GuiBase { } if (isOverSlotWithItem()) { - drawTooltip(mouseX, mouseY, items.get(slotNumber).getStack()); + drawTooltip(mouseX, mouseY, items.get(slotNumber)); } if (isOverClear(mouseX, mouseY)) { @@ -362,12 +353,12 @@ public class GuiGrid extends GuiBase { } if (isOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) { - grid.onHeldItemPush(clickedButton == 1); + RefinedStorage.NETWORK.sendToServer(new MessageGridHeldPush(clickedButton == 1)); } if (isOverSlotWithItem() && container.getPlayer().inventory.getItemStack() == null) { - if (items.get(slotNumber).getStack().stackSize == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown())) { - FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, slotId)); + if (items.get(slotNumber).stackSize == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown())) { + FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, items.get(slotNumber))); } else { int flags = 0; @@ -383,7 +374,7 @@ public class GuiGrid extends GuiBase { flags |= GridPullFlags.PULL_ONE; } - grid.onItemPull(slotId, flags); + RefinedStorage.NETWORK.sendToServer(new MessageGridPull(items.get(slotNumber), flags)); } } } diff --git a/src/main/java/refinedstorage/network/MessageGridCraftingStart.java b/src/main/java/refinedstorage/network/MessageGridCraftingStart.java index 6fbd6e24a..320f41db0 100755 --- a/src/main/java/refinedstorage/network/MessageGridCraftingStart.java +++ b/src/main/java/refinedstorage/network/MessageGridCraftingStart.java @@ -2,53 +2,47 @@ package refinedstorage.network; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.math.BlockPos; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.network.ByteBufUtils; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.api.network.NetworkMaster; -import refinedstorage.api.network.NetworkMasterRegistry; +import refinedstorage.container.ContainerGrid; +import refinedstorage.tile.controller.StorageHandler; public class MessageGridCraftingStart extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int id; + private ItemStack stack; private int quantity; public MessageGridCraftingStart() { } - public MessageGridCraftingStart(int x, int y, int z, int id, int quantity) { - this.x = x; - this.y = y; - this.z = z; - this.id = id; + public MessageGridCraftingStart(ItemStack stack, int quantity) { + this.stack = stack; this.quantity = quantity; } @Override public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - id = buf.readInt(); + stack = ByteBufUtils.readItemStack(buf); quantity = buf.readInt(); } @Override public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(id); + ByteBufUtils.writeItemStack(buf, stack); buf.writeInt(quantity); } @Override public void handle(MessageGridCraftingStart message, EntityPlayerMP player) { - NetworkMaster network = NetworkMasterRegistry.get(new BlockPos(message.x, message.y, message.z), player.worldObj.provider.getDimension()); + Container container = player.openContainer; - if (network != null && network.canRun()) { - network.getStorageHandler().onCraftingRequested(message.id, message.quantity); + if (container instanceof ContainerGrid) { + StorageHandler handler = ((ContainerGrid) container).getGrid().getStorageHandler(); + + if (handler != null) { + handler.onCraftingRequested(message.stack, message.quantity); + } } } } diff --git a/src/main/java/refinedstorage/network/MessageGridHeldItemPush.java b/src/main/java/refinedstorage/network/MessageGridHeldItemPush.java deleted file mode 100755 index 082b96ffa..000000000 --- a/src/main/java/refinedstorage/network/MessageGridHeldItemPush.java +++ /dev/null @@ -1,50 +0,0 @@ -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.grid.TileGrid; - -public class MessageGridHeldItemPush extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private boolean one; - - public MessageGridHeldItemPush() { - } - - public MessageGridHeldItemPush(int x, int y, int z, boolean one) { - this.x = x; - this.y = y; - this.z = z; - this.one = one; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - one = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeBoolean(one); - } - - @Override - public void handle(MessageGridHeldItemPush message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { - ((TileGrid) tile).getNetwork().getStorageHandler().onHeldItemPush(message.one, player); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageGridHeldPush.java b/src/main/java/refinedstorage/network/MessageGridHeldPush.java new file mode 100755 index 000000000..5d866b497 --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageGridHeldPush.java @@ -0,0 +1,42 @@ +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.Container; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.container.ContainerGrid; +import refinedstorage.tile.controller.StorageHandler; + +public class MessageGridHeldPush extends MessageHandlerPlayerToServer implements IMessage { + private boolean single; + + public MessageGridHeldPush() { + } + + public MessageGridHeldPush(boolean single) { + this.single = single; + } + + @Override + public void fromBytes(ByteBuf buf) { + single = buf.readBoolean(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeBoolean(single); + } + + @Override + public void handle(MessageGridHeldPush message, EntityPlayerMP player) { + Container container = player.openContainer; + + if (container instanceof ContainerGrid) { + StorageHandler handler = ((ContainerGrid) container).getGrid().getStorageHandler(); + + if (handler != null) { + handler.onHeldItemPush(message.single, player); + } + } + } +} diff --git a/src/main/java/refinedstorage/network/MessageGridItems.java b/src/main/java/refinedstorage/network/MessageGridItems.java index cade0d55a..0a2fbf46a 100755 --- a/src/main/java/refinedstorage/network/MessageGridItems.java +++ b/src/main/java/refinedstorage/network/MessageGridItems.java @@ -10,14 +10,13 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import refinedstorage.api.network.NetworkMaster; import refinedstorage.container.ContainerGrid; -import refinedstorage.tile.ClientItem; import java.util.ArrayList; import java.util.List; public class MessageGridItems implements IMessage, IMessageHandler { private NetworkMaster network; - private List items = new ArrayList(); + private List items = new ArrayList(); public MessageGridItems() { } @@ -36,7 +35,7 @@ public class MessageGridItems implements IMessage, IMessageHandler implements IMessage { + private ItemStack stack; + private int flags; + + public MessageGridPull() { + } + + public MessageGridPull(ItemStack stack, int flags) { + this.stack = stack; + this.flags = flags; + } + + @Override + public void fromBytes(ByteBuf buf) { + stack = ByteBufUtils.readItemStack(buf); + flags = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + ByteBufUtils.writeItemStack(buf, stack); + buf.writeInt(flags); + } + + @Override + public void handle(MessageGridPull message, EntityPlayerMP player) { + Container container = player.openContainer; + + if (container instanceof ContainerGrid) { + StorageHandler handler = ((ContainerGrid) container).getGrid().getStorageHandler(); + + if (handler != null) { + handler.onPull(message.stack, message.flags, player); + } + } + } +} diff --git a/src/main/java/refinedstorage/network/MessageGridStoragePull.java b/src/main/java/refinedstorage/network/MessageGridStoragePull.java deleted file mode 100755 index 4e5d2d324..000000000 --- a/src/main/java/refinedstorage/network/MessageGridStoragePull.java +++ /dev/null @@ -1,54 +0,0 @@ -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.grid.TileGrid; - -public class MessageGridStoragePull extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int id; - private int flags; - - public MessageGridStoragePull() { - } - - public MessageGridStoragePull(int x, int y, int z, int id, int flags) { - this.x = x; - this.y = y; - this.z = z; - this.id = id; - this.flags = flags; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - id = buf.readInt(); - flags = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(id); - buf.writeInt(flags); - } - - @Override - public void handle(MessageGridStoragePull message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) { - ((TileGrid) tile).getNetwork().getStorageHandler().onPull(message.id, message.flags, player); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridCraftingStart.java b/src/main/java/refinedstorage/network/MessageWirelessGridCraftingStart.java deleted file mode 100755 index 443e2f7e9..000000000 --- a/src/main/java/refinedstorage/network/MessageWirelessGridCraftingStart.java +++ /dev/null @@ -1,54 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.api.network.NetworkMaster; -import refinedstorage.api.network.NetworkMasterRegistry; - -public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServer implements IMessage { - private int controllerX; - private int controllerY; - private int controllerZ; - private int id; - private int quantity; - - public MessageWirelessGridCraftingStart() { - } - - public MessageWirelessGridCraftingStart(int controllerX, int controllerY, int controllerZ, int id, int quantity) { - this.controllerX = controllerX; - this.controllerY = controllerY; - this.controllerZ = controllerZ; - this.id = id; - this.quantity = quantity; - } - - @Override - public void fromBytes(ByteBuf buf) { - controllerX = buf.readInt(); - controllerY = buf.readInt(); - controllerZ = buf.readInt(); - id = buf.readInt(); - quantity = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(controllerX); - buf.writeInt(controllerY); - buf.writeInt(controllerZ); - buf.writeInt(id); - buf.writeInt(quantity); - } - - @Override - public void handle(MessageWirelessGridCraftingStart message, EntityPlayerMP player) { - NetworkMaster network = NetworkMasterRegistry.get(new BlockPos(message.controllerX, message.controllerY, message.controllerZ), player.worldObj.provider.getDimension()); - - if (network != null && network.canRun()) { - network.getStorageHandler().onCraftingRequested(message.id, message.quantity); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridHeldItemPush.java b/src/main/java/refinedstorage/network/MessageWirelessGridHeldItemPush.java deleted file mode 100755 index 46f8c5f32..000000000 --- a/src/main/java/refinedstorage/network/MessageWirelessGridHeldItemPush.java +++ /dev/null @@ -1,50 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.api.network.NetworkMaster; -import refinedstorage.api.network.NetworkMasterRegistry; - -public class MessageWirelessGridHeldItemPush extends MessageHandlerPlayerToServer implements IMessage { - private int controllerX; - private int controllerY; - private int controllerZ; - private boolean one; - - public MessageWirelessGridHeldItemPush() { - } - - public MessageWirelessGridHeldItemPush(int controllerX, int controllerY, int controllerZ, boolean one) { - this.controllerX = controllerX; - this.controllerY = controllerY; - this.controllerZ = controllerZ; - this.one = one; - } - - @Override - public void fromBytes(ByteBuf buf) { - controllerX = buf.readInt(); - controllerY = buf.readInt(); - controllerZ = buf.readInt(); - one = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(controllerX); - buf.writeInt(controllerY); - buf.writeInt(controllerZ); - buf.writeBoolean(one); - } - - @Override - public void handle(MessageWirelessGridHeldItemPush message, EntityPlayerMP player) { - NetworkMaster network = NetworkMasterRegistry.get(new BlockPos(message.controllerX, message.controllerY, message.controllerZ), player.worldObj.provider.getDimension()); - - if (network != null && network.canRun()) { - network.getStorageHandler().onHeldItemPush(message.one, player); - } - } -} diff --git a/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java b/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java deleted file mode 100755 index a1f52e818..000000000 --- a/src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java +++ /dev/null @@ -1,54 +0,0 @@ -package refinedstorage.network; - -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import refinedstorage.api.network.NetworkMaster; -import refinedstorage.api.network.NetworkMasterRegistry; - -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) { - NetworkMaster network = NetworkMasterRegistry.get(new BlockPos(message.controllerX, message.controllerY, message.controllerZ), player.worldObj.provider.getDimension()); - - if (network != null && network.canRun()) { - network.getStorageHandler().onPull(message.id, message.flags, player); - } - } -} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index f491e85ee..02decf029 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -45,8 +45,8 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT); RefinedStorage.NETWORK.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, id++, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageGridHeldItemPush.class, MessageGridHeldItemPush.class, id++, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageGridStoragePull.class, MessageGridStoragePull.class, id++, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageGridHeldPush.class, MessageGridHeldPush.class, id++, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageGridPull.class, MessageGridPull.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageCompareUpdate.class, MessageCompareUpdate.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageModeToggle.class, MessageModeToggle.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageDetectorModeUpdate.class, MessageDetectorModeUpdate.class, id++, Side.SERVER); @@ -56,10 +56,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageGridSettingsUpdate.class, MessageGridSettingsUpdate.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, id++, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageWirelessGridHeldItemPush.class, MessageWirelessGridHeldItemPush.class, id++, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePull.class, MessageWirelessGridStoragePull.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingStart.class, MessageGridCraftingStart.class, id++, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageWirelessGridCraftingStart.class, MessageWirelessGridCraftingStart.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridPatternCreate.class, MessageGridPatternCreate.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageCraftingMonitorCancel.class, MessageCraftingMonitorCancel.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridItems.class, MessageGridItems.class, id++, Side.CLIENT); diff --git a/src/main/java/refinedstorage/tile/ClientItem.java b/src/main/java/refinedstorage/tile/ClientItem.java deleted file mode 100755 index 7f93793e9..000000000 --- a/src/main/java/refinedstorage/tile/ClientItem.java +++ /dev/null @@ -1,21 +0,0 @@ -package refinedstorage.tile; - -import net.minecraft.item.ItemStack; - -public final class ClientItem { - private int id; - private ItemStack stack; - - public ClientItem(int id, ItemStack stack) { - this.id = id; - this.stack = stack; - } - - public int getId() { - return id; - } - - public ItemStack getStack() { - return stack; - } -} diff --git a/src/main/java/refinedstorage/tile/controller/StorageHandler.java b/src/main/java/refinedstorage/tile/controller/StorageHandler.java index 570ebcf8f..c39398e6e 100755 --- a/src/main/java/refinedstorage/tile/controller/StorageHandler.java +++ b/src/main/java/refinedstorage/tile/controller/StorageHandler.java @@ -19,17 +19,11 @@ public class StorageHandler { this.network = network; } - public void onPull(int id, int flags, EntityPlayerMP player) { + public void onPull(ItemStack stack, int flags, EntityPlayerMP player) { if (player.inventory.getItemStack() != null) { return; } - if (id < 0 || id > network.getItems().size() - 1) { - return; - } - - ItemStack stack = network.getItems().get(id); - int size = 64; if (GridPullFlags.isPullingHalf(flags) && stack.stackSize > 1) { @@ -62,15 +56,19 @@ public class StorageHandler { } } - public void onHeldItemPush(boolean one, EntityPlayerMP player) { + public ItemStack onPush(ItemStack stack) { + return network.push(stack, stack.stackSize, false); + } + + public void onHeldItemPush(boolean single, EntityPlayerMP player) { if (player.inventory.getItemStack() == null) { return; } ItemStack stack = player.inventory.getItemStack(); - int size = one ? 1 : stack.stackSize; + int size = single ? 1 : stack.stackSize; - if (one) { + if (single) { if (network.push(stack, size, true) == null) { network.push(stack, size, false); @@ -89,30 +87,30 @@ public class StorageHandler { network.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH); } - public void onCraftingRequested(int id, int quantity) { - if (id >= 0 && id < network.getItems().size() && quantity > 0 && quantity <= MAX_CRAFTING_PER_REQUEST) { - ItemStack requested = network.getItems().get(id); + public void onCraftingRequested(ItemStack stack, int quantity) { + if (quantity <= 0 || quantity > MAX_CRAFTING_PER_REQUEST) { + return; + } - int quantityPerRequest = 0; + int quantityPerRequest = 0; - CraftingPattern pattern = network.getPatternWithBestScore(requested); + CraftingPattern pattern = network.getPatternWithBestScore(stack); - if (pattern != null) { - for (ItemStack output : pattern.getOutputs()) { - if (RefinedStorageUtils.compareStackNoQuantity(requested, output)) { - quantityPerRequest += output.stackSize; + if (pattern != null) { + for (ItemStack output : pattern.getOutputs()) { + if (RefinedStorageUtils.compareStackNoQuantity(stack, output)) { + quantityPerRequest += output.stackSize; - if (!pattern.isProcessing()) { - break; - } + if (!pattern.isProcessing()) { + break; } } + } - while (quantity > 0) { - network.addCraftingTaskAsLast(network.createCraftingTask(pattern)); + while (quantity > 0) { + network.addCraftingTaskAsLast(network.createCraftingTask(pattern)); - quantity -= quantityPerRequest; - } + quantity -= quantityPerRequest; } } } diff --git a/src/main/java/refinedstorage/tile/grid/IGrid.java b/src/main/java/refinedstorage/tile/grid/IGrid.java index 87c20c577..7714ddc79 100755 --- a/src/main/java/refinedstorage/tile/grid/IGrid.java +++ b/src/main/java/refinedstorage/tile/grid/IGrid.java @@ -1,28 +1,23 @@ package refinedstorage.tile.grid; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import refinedstorage.block.EnumGridType; -import refinedstorage.tile.ClientItem; import refinedstorage.tile.config.IRedstoneModeConfig; +import refinedstorage.tile.controller.StorageHandler; import java.util.List; public interface IGrid { EnumGridType getType(); - List getItems(); + List getItems(); - void setItems(List items); + void setItems(List items); - BlockPos getControllerPos(); + BlockPos getNetworkPosition(); - ItemStack onItemPush(EntityPlayer player, ItemStack stack); - - void onHeldItemPush(boolean one); - - void onItemPull(int id, int flags); + StorageHandler getStorageHandler(); int getSortingType(); @@ -36,9 +31,7 @@ public interface IGrid { void onSearchBoxModeChanged(int searchBoxMode); - void onCraftingRequested(int id, int quantity); - - IRedstoneModeConfig getRedstoneModeSetting(); + IRedstoneModeConfig getRedstoneModeConfig(); boolean isConnected(); } diff --git a/src/main/java/refinedstorage/tile/grid/TileGrid.java b/src/main/java/refinedstorage/tile/grid/TileGrid.java index f6ea52514..8ab398c88 100755 --- a/src/main/java/refinedstorage/tile/grid/TileGrid.java +++ b/src/main/java/refinedstorage/tile/grid/TileGrid.java @@ -20,13 +20,10 @@ import refinedstorage.container.ContainerGrid; import refinedstorage.inventory.BasicItemHandler; import refinedstorage.inventory.BasicItemValidator; import refinedstorage.item.ItemPattern; -import refinedstorage.network.MessageGridCraftingStart; -import refinedstorage.network.MessageGridHeldItemPush; import refinedstorage.network.MessageGridSettingsUpdate; -import refinedstorage.network.MessageGridStoragePull; -import refinedstorage.tile.ClientItem; import refinedstorage.tile.TileSlave; import refinedstorage.tile.config.IRedstoneModeConfig; +import refinedstorage.tile.controller.StorageHandler; import java.util.ArrayList; import java.util.List; @@ -69,7 +66,8 @@ public class TileGrid extends TileSlave implements IGrid { private int sortingType = SORTING_TYPE_NAME; private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; - private List items = new ArrayList(); + // Used clientside only + private List items = new ArrayList(); @Override public int getEnergyUsage() { @@ -98,17 +96,17 @@ public class TileGrid extends TileSlave implements IGrid { } @Override - public List getItems() { + public List getItems() { return items; } @Override - public void setItems(List items) { + public void setItems(List items) { this.items = items; } @Override - public BlockPos getControllerPos() { + public BlockPos getNetworkPosition() { return network != null ? network.getPosition() : null; } @@ -119,18 +117,8 @@ public class TileGrid extends TileSlave implements IGrid { } @Override - public ItemStack onItemPush(EntityPlayer player, ItemStack stack) { - return isConnected() ? network.push(stack, stack.stackSize, false) : stack; - } - - @Override - public void onHeldItemPush(boolean one) { - RefinedStorage.NETWORK.sendToServer(new MessageGridHeldItemPush(getPos().getX(), getPos().getY(), getPos().getZ(), one)); - } - - @Override - public void onItemPull(int id, int flags) { - RefinedStorage.NETWORK.sendToServer(new MessageGridStoragePull(getPos().getX(), getPos().getY(), getPos().getZ(), id, flags)); + public StorageHandler getStorageHandler() { + return isConnected() ? network.getStorageHandler() : null; } public InventoryCrafting getMatrix() { @@ -318,12 +306,7 @@ public class TileGrid extends TileSlave implements IGrid { } @Override - public void onCraftingRequested(int id, int quantity) { - RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingStart(getPos().getX(), getPos().getY(), getPos().getZ(), id, quantity)); - } - - @Override - public IRedstoneModeConfig getRedstoneModeSetting() { + public IRedstoneModeConfig getRedstoneModeConfig() { return this; } diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 6720edf60..5240785d8 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -11,12 +11,9 @@ import refinedstorage.api.network.NetworkMaster; import refinedstorage.api.network.NetworkMasterRegistry; import refinedstorage.block.EnumGridType; import refinedstorage.item.ItemWirelessGrid; -import refinedstorage.network.MessageWirelessGridCraftingStart; -import refinedstorage.network.MessageWirelessGridHeldItemPush; import refinedstorage.network.MessageWirelessGridSettingsUpdate; -import refinedstorage.network.MessageWirelessGridStoragePull; -import refinedstorage.tile.ClientItem; import refinedstorage.tile.config.IRedstoneModeConfig; +import refinedstorage.tile.controller.StorageHandler; import java.util.ArrayList; import java.util.List; @@ -28,7 +25,7 @@ public class WirelessGrid implements IGrid { private int sortingType; private int sortingDirection; private int searchBoxMode; - private List items = new ArrayList(); + private List items = new ArrayList(); private long lastUpdate; public WirelessGrid(World world, ItemStack stack, EnumHand hand) { @@ -46,46 +43,34 @@ public class WirelessGrid implements IGrid { } @Override - public List getItems() { + public List getItems() { return items; } @Override - public void setItems(List items) { + public void setItems(List items) { this.items = items; this.lastUpdate = System.currentTimeMillis(); } @Override - public BlockPos getControllerPos() { + public BlockPos getNetworkPosition() { return controllerPos; } @Override - public ItemStack onItemPush(EntityPlayer player, ItemStack stack) { - NetworkMaster network = NetworkMasterRegistry.get(controllerPos, player.worldObj.provider.getDimension()); + public StorageHandler getStorageHandler() { + NetworkMaster network = NetworkMasterRegistry.get(controllerPos, world.provider.getDimension()); - if (network != null && network.canRun()) { - network.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH); - - return network.push(stack, stack.stackSize, false); + if (network != null) { + return network.getStorageHandler(); } - return stack; - } - - @Override - public void onHeldItemPush(boolean one) { - RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridHeldItemPush(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), one)); - } - - @Override - public void onItemPull(int id, int flags) { - RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePull(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), id, flags)); + return null; } public void onClose(EntityPlayer player) { - NetworkMaster network = NetworkMasterRegistry.get(controllerPos, player.worldObj.provider.getDimension()); + NetworkMaster network = NetworkMasterRegistry.get(controllerPos, world.provider.getDimension()); if (network != null) { network.getWirelessGridHandler().handleClose(player); @@ -129,12 +114,7 @@ public class WirelessGrid implements IGrid { } @Override - public void onCraftingRequested(int id, int quantity) { - RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridCraftingStart(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), id, quantity)); - } - - @Override - public IRedstoneModeConfig getRedstoneModeSetting() { + public IRedstoneModeConfig getRedstoneModeConfig() { return null; }