diff --git a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridFactory.java index 20b01e4cc..057ed2e50 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridFactory.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.api.network.grid; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -17,11 +18,11 @@ public interface IGridFactory { * * @param player the player * @param stack the stack - * @param slotId the slot id, if applicable, otherwise -1 + * @param slot the slot in the players inventory or curio slot, otherwise -1 * @return the grid, or null if a problem occurred */ @Nullable - IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId); + IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot); /** * Creates a grid from a block. Used when {@link #getType()} is BLOCK. diff --git a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridManager.java b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridManager.java index 65c66eafd..e2c91dab3 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/network/grid/IGridManager.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.api.network.grid; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; @@ -35,9 +36,9 @@ public interface IGridManager { * @param id the grid factory id * @param player the player * @param stack the stack - * @param slotId the slot id, if applicable, otherwise -1 + * @param slot the slot in the players inventory or curio slot, otherwise -1 */ - void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId); + void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, PlayerSlot slot); /** * Creates a grid. @@ -46,9 +47,9 @@ public interface IGridManager { * @param player the player * @param stack the stack, if there is one * @param pos the block position, if there is one - * @param slotId the slot id, if applicable, otherwise -1 + * @param slot the slot in the players inventory,or curio slot, otherwise -1 * @return a grid, or null if an error has occurred */ @Nullable - Pair createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId); + Pair createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot); } diff --git a/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemManager.java b/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemManager.java index ed083acf9..78c0ddb92 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemManager.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.api.network.item; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -15,9 +16,9 @@ public interface INetworkItemManager { * * @param player the player that opened the network item * @param stack the stack that has been opened - * @param slotId the slot id, if applicable, otherwise -1 + * @param slot the slot in the players inventory or curio slot, otherwise -1 */ - void open(PlayerEntity player, ItemStack stack, int slotId); + void open(PlayerEntity player, ItemStack stack, PlayerSlot slot); /** * Called when the player closes a network item. diff --git a/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemProvider.java b/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemProvider.java index 6b7aa23ef..ea0f0e701 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemProvider.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/network/item/INetworkItemProvider.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.api.network.item; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -15,9 +16,9 @@ public interface INetworkItemProvider { * @param handler the network item handler * @param player the player * @param stack the stack - * @param slotId the slot id, if applicable, otherwise -1 + * @param slot the slot in the players inventory or curio slot, otherwise -1 * @return the network item */ @Nonnull - INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId); + INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot); } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java index 273e6ec4f..73d16b676 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/GridManager.java @@ -5,6 +5,7 @@ import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridManager; import com.refinedmods.refinedstorage.container.factory.GridContainerProvider; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; @@ -28,16 +29,16 @@ public class GridManager implements IGridManager { @Override public void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos) { - openGrid(id, player, null, pos, -1); + openGrid(id, player, null, pos, new PlayerSlot(-1)); } @Override - public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId) { - openGrid(id, player, stack, null, slotId); + public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, PlayerSlot slot) { + openGrid(id, player, stack, null, slot); } - private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) { - Pair grid = createGrid(id, player, stack, pos, slotId); + private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot) { + Pair grid = createGrid(id, player, stack, pos, slot); if (grid == null) { return; } @@ -55,13 +56,13 @@ public class GridManager implements IGridManager { buf.writeItemStack(stack); } - buf.writeInt(slotId); + slot.writePlayerSlot(buf); }); } @Override @Nullable - public Pair createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) { + public Pair createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot) { IGridFactory factory = factories.get(id); if (factory == null) { @@ -72,7 +73,7 @@ public class GridManager implements IGridManager { TileEntity tile = factory.getRelevantTile(player.world, pos); if (factory.getType() == GridFactoryType.STACK) { - grid = factory.createFromStack(player, stack, slotId); + grid = factory.createFromStack(player, stack, slot); } else if (factory.getType() == GridFactoryType.BLOCK) { grid = factory.createFromBlock(player, pos); } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/GridBlockGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/GridBlockGridFactory.java index bb078bbdb..4c2a820bb 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/GridBlockGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/GridBlockGridFactory.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.GridTile; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -19,7 +20,7 @@ public class GridBlockGridFactory implements IGridFactory { @Override @Nullable - public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { + public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) { return null; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridBlockGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridBlockGridFactory.java index c77f57aba..2339277b0 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridBlockGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridBlockGridFactory.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridTile; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -19,7 +20,7 @@ public class PortableGridBlockGridFactory implements IGridFactory { @Override @Nullable - public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { + public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) { return null; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridGridFactory.java index ad1723c28..aa6b02059 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/PortableGridGridFactory.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGrid; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -19,8 +20,8 @@ public class PortableGridGridFactory implements IGridFactory { @Nullable @Override - public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { - PortableGrid portableGrid = new PortableGrid(player, stack, slotId); + public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) { + PortableGrid portableGrid = new PortableGrid(player, stack, slot); portableGrid.onOpen(); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java index 3f7384eec..d7522506d 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessFluidGridGridFactory.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.WirelessFluidGrid; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -19,8 +20,8 @@ public class WirelessFluidGridGridFactory implements IGridFactory { @Nullable @Override - public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { - return new WirelessFluidGrid(stack, player.getServer(), slotId); + public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) { + return new WirelessFluidGrid(stack, player.getServer(), slot); } @Nullable diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java index e6c913652..5c39aa1df 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/grid/factory/WirelessGridGridFactory.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.WirelessGrid; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -19,8 +20,8 @@ public class WirelessGridGridFactory implements IGridFactory { @Nullable @Override - public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { - return new WirelessGrid(stack, player.getServer(), slotId); + public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) { + return new WirelessGrid(stack, player.getServer(), slot); } @Nullable diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java index a925eada5..10271144f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/NetworkItemManager.java @@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider; import com.refinedmods.refinedstorage.api.network.node.INetworkNode; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.math.vector.Vector3d; @@ -24,7 +25,7 @@ public class NetworkItemManager implements INetworkItemManager { } @Override - public void open(PlayerEntity player, ItemStack stack, int slotId) { + public void open(PlayerEntity player, ItemStack stack, PlayerSlot slot) { boolean inRange = false; for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) { @@ -54,7 +55,7 @@ public class NetworkItemManager implements INetworkItemManager { return; } - INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack, slotId); + INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack, slot); if (item.onOpen(network)) { items.put(player, item); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java index cc862702c..a9f05151e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessCraftingMonitorNetworkItem.java @@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.container.factory.CraftingMonitorContainerProvider; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import com.refinedmods.refinedstorage.util.WorldUtils; @@ -22,13 +23,13 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem { private final INetworkItemManager handler; private final PlayerEntity player; private final ItemStack stack; - private final int slotId; + private final PlayerSlot slot; - public WirelessCraftingMonitorNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { + public WirelessCraftingMonitorNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { this.handler = handler; this.player = player; this.stack = stack; - this.slotId = slotId; + this.slot = slot; } @Override @@ -56,13 +57,11 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem { return false; } - WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slotId); + WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slot); NetworkHooks.openGui( (ServerPlayerEntity) player, - new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), - buf -> buf.writeInt(slotId) - ); + new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), slot::writePlayerSlot); drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java index 5cfc562dd..3b0aa53be 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessFluidGridNetworkItem.java @@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessFluidGridItem; import com.refinedmods.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; @@ -20,13 +21,13 @@ public class WirelessFluidGridNetworkItem implements INetworkItem { private final INetworkItemManager handler; private final PlayerEntity player; private final ItemStack stack; - private final int slotId; + private final PlayerSlot slot; - public WirelessFluidGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { + public WirelessFluidGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { this.handler = handler; this.player = player; this.stack = stack; - this.slotId = slotId; + this.slot = slot; } @Override @@ -53,7 +54,7 @@ public class WirelessFluidGridNetworkItem implements INetworkItem { return false; } - API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayerEntity) player, stack, slotId); + API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayerEntity) player, stack, slot); drainEnergy(RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage()); diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java index 7f79cfda2..723a81cb5 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/network/item/WirelessGridNetworkItem.java @@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.util.WorldUtils; import net.minecraft.entity.player.PlayerEntity; @@ -20,13 +21,13 @@ public class WirelessGridNetworkItem implements INetworkItem { private final INetworkItemManager handler; private final PlayerEntity player; private final ItemStack stack; - private final int slotId; + private final PlayerSlot slot; - public WirelessGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { + public WirelessGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { this.handler = handler; this.player = player; this.stack = stack; - this.slotId = slotId; + this.slot = slot; } @Override @@ -53,7 +54,7 @@ public class WirelessGridNetworkItem implements INetworkItem { return false; } - API.instance().getGridManager().openGrid(WirelessGridGridFactory.ID, (ServerPlayerEntity) player, stack, slotId); + API.instance().getGridManager().openGrid(WirelessGridGridFactory.ID, (ServerPlayerEntity) player, stack, slot); drainEnergy(RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage()); diff --git a/src/main/java/com/refinedmods/refinedstorage/container/factory/GridContainerFactory.java b/src/main/java/com/refinedmods/refinedstorage/container/factory/GridContainerFactory.java index 02fe86ed4..23a26e305 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/factory/GridContainerFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/factory/GridContainerFactory.java @@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.container.factory; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.container.GridContainer; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.BaseTile; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -29,9 +30,9 @@ public class GridContainerFactory implements IContainerFactory { stack = data.readItemStack(); } - int slotId = data.readInt(); + PlayerSlot slot = new PlayerSlot(data); - Pair grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos, slotId); + Pair grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos, slot); return new GridContainer(grid.getLeft(), grid.getRight() instanceof BaseTile ? (BaseTile) grid.getRight() : null, inv.player, windowId); } diff --git a/src/main/java/com/refinedmods/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java b/src/main/java/com/refinedmods/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java index f99a3a316..06136486e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/factory/WirelessCraftingMonitorContainerFactory.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.container.factory; import com.refinedmods.refinedstorage.RSContainers; import com.refinedmods.refinedstorage.container.CraftingMonitorContainer; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -11,11 +12,12 @@ import net.minecraftforge.fml.network.IContainerFactory; public class WirelessCraftingMonitorContainerFactory implements IContainerFactory { @Override public CraftingMonitorContainer create(int windowId, PlayerInventory inv, PacketBuffer data) { - int slotId = data.readInt(); - ItemStack stack = inv.getStackInSlot(slotId); + PlayerSlot slot = new PlayerSlot(data); - WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, null, slotId); + ItemStack stack = slot.getStackFromSlot(inv.player); + + WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, null, slot); return new CraftingMonitorContainer(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null, inv.player, windowId); } diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/player/PlayerSlot.java b/src/main/java/com/refinedmods/refinedstorage/inventory/player/PlayerSlot.java new file mode 100644 index 000000000..080c25bdc --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/player/PlayerSlot.java @@ -0,0 +1,76 @@ +package com.refinedmods.refinedstorage.inventory.player; + +import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration; +import com.refinedmods.refinedstorage.util.PacketBufferUtils; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.Hand; +import net.minecraftforge.common.util.LazyOptional; +import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; +import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler; + +import java.util.Optional; + +public class PlayerSlot { + int slot; + String curioSlot; + + public PlayerSlot(int slot, String curioSlot) { + this.slot = slot; + this.curioSlot = curioSlot; + } + + public PlayerSlot(int slot) { + this.slot = slot; + } + + public PlayerSlot(PacketBuffer buffer) { + slot = buffer.readInt(); + + if (buffer.readBoolean()) { + curioSlot = PacketBufferUtils.readString(buffer); + } + } + + public ItemStack getStackFromSlot(PlayerEntity player) { + if (curioSlot == null || !CuriosIntegration.isLoaded()) { + return player.inventory.getStackInSlot(slot); + } + + LazyOptional curiosHandler = CuriosApi.getCuriosHelper().getCuriosHandler(player); + + Optional stacksHandler = curiosHandler.resolve().flatMap((handler -> + handler.getStacksHandler(curioSlot) + )); + + Optional stack = stacksHandler.map(handler -> handler.getStacks().getStackInSlot(slot)); + + return stack.orElse(ItemStack.EMPTY); + } + + public void writePlayerSlot(PacketBuffer buffer) { + buffer.writeInt(slot); + buffer.writeBoolean(curioSlot != null); + if (curioSlot != null) { + buffer.writeString(curioSlot); + } + } + + public int getSlotIdInPlayerInventory() { + if (curioSlot != null) { + return -1; + } + return slot; + } + + public static PlayerSlot getSlotForHand(PlayerEntity player, Hand hand) { + if (hand == Hand.MAIN_HAND) { + return new PlayerSlot(player.inventory.currentItem); + } + + //@Volatile Offhand Slot, could use -1 as we aren't using this anywhere. + return new PlayerSlot(40); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java b/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java index 05a274af1..486773e5a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/NetworkItem.java @@ -2,9 +2,11 @@ package com.refinedmods.refinedstorage.item; import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.render.Styles; import com.refinedmods.refinedstorage.util.NetworkUtils; import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -38,7 +40,7 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv ItemStack stack = player.getHeldItem(hand); if (!world.isRemote) { - applyNetwork(world.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getHeldItem(hand), player.inventory.currentItem), err -> player.sendMessage(err, player.getUniqueID())); + applyNetwork(world.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getHeldItem(hand), PlayerSlot.getSlotForHand(player, hand)), err -> player.sendMessage(err, player.getUniqueID())); } return ActionResult.resultSuccess(stack); @@ -82,6 +84,11 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv } } + @Override + public ActionResultType itemInteractionForEntity(ItemStack stack, PlayerEntity playerIn, LivingEntity target, Hand hand) { + return super.itemInteractionForEntity(stack, playerIn, target, hand); + } + @Override public ActionResultType onItemUse(ItemUseContext ctx) { ItemStack stack = ctx.getPlayer().getHeldItem(ctx.getHand()); diff --git a/src/main/java/com/refinedmods/refinedstorage/item/WirelessCraftingMonitorItem.java b/src/main/java/com/refinedmods/refinedstorage/item/WirelessCraftingMonitorItem.java index 9e27aa2e2..273a4ff35 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/WirelessCraftingMonitorItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/WirelessCraftingMonitorItem.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessCraftingMonitorNetworkItem; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -36,8 +37,8 @@ public class WirelessCraftingMonitorItem extends NetworkItem { @Nonnull @Override - public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { - return new WirelessCraftingMonitorNetworkItem(handler, player, stack, slotId); + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { + return new WirelessCraftingMonitorNetworkItem(handler, player, stack, slot); } public static Optional getTabSelected(ItemStack stack) { diff --git a/src/main/java/com/refinedmods/refinedstorage/item/WirelessFluidGridItem.java b/src/main/java/com/refinedmods/refinedstorage/item/WirelessFluidGridItem.java index ff2750ddc..9770fd0f8 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/WirelessFluidGridItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/WirelessFluidGridItem.java @@ -6,6 +6,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessFluidGridNetworkItem; import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -32,8 +33,8 @@ public class WirelessFluidGridItem extends NetworkItem { @Nonnull @Override - public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { - return new WirelessFluidGridNetworkItem(handler, player, stack, slotId); + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { + return new WirelessFluidGridNetworkItem(handler, player, stack, slot); } public static int getSortingType(ItemStack stack) { diff --git a/src/main/java/com/refinedmods/refinedstorage/item/WirelessGridItem.java b/src/main/java/com/refinedmods/refinedstorage/item/WirelessGridItem.java index e9778f934..cd532c767 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/WirelessGridItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/WirelessGridItem.java @@ -6,6 +6,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessGridNetworkItem; import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -32,8 +33,8 @@ public class WirelessGridItem extends NetworkItem { @Override @Nonnull - public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { - return new WirelessGridNetworkItem(handler, player, stack, slotId); + public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) { + return new WirelessGridNetworkItem(handler, player, stack, slot); } public static int getViewType(ItemStack stack) { diff --git a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java index 7803a75d2..95b6c458f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/blockitem/PortableGridBlockItem.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlocks; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.PortableGridGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.render.Styles; import net.minecraft.client.util.ITooltipFlag; @@ -50,7 +51,7 @@ public class PortableGridBlockItem extends EnergyBlockItem { ItemStack stack = player.getHeldItem(hand); if (!world.isRemote) { - API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, (ServerPlayerEntity) player, stack, player.inventory.currentItem); + API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, (ServerPlayerEntity) player, stack, PlayerSlot.getSlotForHand(player, hand)); } return ActionResult.resultSuccess(stack); diff --git a/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java index c76186c4e..b67dae092 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/OpenNetworkItemMessage.java @@ -2,37 +2,29 @@ package com.refinedmods.refinedstorage.network; import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.PortableGridGridFactory; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.NetworkItem; import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; -import com.refinedmods.refinedstorage.util.PacketBufferUtils; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketBuffer; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fml.network.NetworkEvent; -import top.theillusivec4.curios.api.CuriosApi; -import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; -import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler; -import java.util.Optional; import java.util.function.Supplier; public class OpenNetworkItemMessage { - private final int slotId; - private final String curioSlot; + private final PlayerSlot slot; - public OpenNetworkItemMessage(int slotId, String curioSlot) { - this.slotId = slotId; - this.curioSlot = curioSlot; + public OpenNetworkItemMessage(PlayerSlot slot) { + this.slot = slot; } public static OpenNetworkItemMessage decode(PacketBuffer buf) { - return new OpenNetworkItemMessage(buf.readInt(), PacketBufferUtils.readString(buf)); + return new OpenNetworkItemMessage(new PlayerSlot(buf)); } public static void encode(OpenNetworkItemMessage message, PacketBuffer buf) { - buf.writeInt(message.slotId); - buf.writeString(message.curioSlot); + message.slot.writePlayerSlot(buf); } public static void handle(OpenNetworkItemMessage message, Supplier ctx) { @@ -40,40 +32,20 @@ public class OpenNetworkItemMessage { if (player != null) { ctx.get().enqueueWork(() -> { - ItemStack stack = getStackFromSlot(player, message.slotId, message.curioSlot); + ItemStack stack = message.slot.getStackFromSlot(player); if (stack == null) { return; } if (stack.getItem() instanceof NetworkItem) { - ((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack, message.slotId), err -> player.sendMessage(err, player.getUniqueID())); + ((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack, message.slot), err -> player.sendMessage(err, player.getUniqueID())); } else if (stack.getItem() instanceof PortableGridBlockItem) { - API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, player, stack, message.slotId); + API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, player, stack, message.slot); } }); } ctx.get().setPacketHandled(true); } - - private static ItemStack getStackFromSlot(ServerPlayerEntity player, int slotId, String curioSlot) { - if (curioSlot.isEmpty()) { - return player.inventory.getStackInSlot(slotId); - } else { - - LazyOptional curiosHandler = CuriosApi.getCuriosHelper().getCuriosHandler(player); - - Optional stacksHandler = curiosHandler.resolve().flatMap((handler -> - handler.getStacksHandler(curioSlot) - )); - - Optional stack = stacksHandler.map(handler -> handler.getStacks().getStackInSlot(slotId)); - if (stack.isPresent()) { - return stack.get(); - } - } - - return null; - } } diff --git a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java index d990a03ae..7b892ae40 100644 --- a/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java +++ b/src/main/java/com/refinedmods/refinedstorage/render/model/PortableGridBakedModel.java @@ -5,6 +5,7 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.refinedmods.refinedstorage.RSBlocks; import com.refinedmods.refinedstorage.block.PortableGridBlock; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGrid; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridDiskState; import net.minecraft.block.BlockState; @@ -111,7 +112,7 @@ public class PortableGridBakedModel extends DelegateBakedModel { @Nullable @Override public IBakedModel getOverrideModel(IBakedModel model, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) { - PortableGrid portableGrid = new PortableGrid(null, stack, -1); + PortableGrid portableGrid = new PortableGrid(null, stack, new PlayerSlot(-1)); if (portableGrid.isGridActive()) { return new PortableGridItemBakedModel(baseConnected, getDiskModel(portableGrid.getDiskState())); diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/KeyInputListener.java b/src/main/java/com/refinedmods/refinedstorage/screen/KeyInputListener.java index 850eb46e8..4a271f382 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/KeyInputListener.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/KeyInputListener.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSItems; import com.refinedmods.refinedstorage.RSKeyBindings; import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.network.OpenNetworkItemMessage; import net.minecraft.client.Minecraft; import net.minecraft.inventory.IInventory; @@ -60,7 +61,7 @@ public class KeyInputListener { Optional> curio = CuriosApi.getCuriosHelper().findEquippedCurio(stack -> validItems.contains(stack.getItem()), Minecraft.getInstance().player); if (curio.isPresent()) { - RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(curio.get().getMiddle(), curio.get().getLeft())); + RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(new PlayerSlot(curio.get().getMiddle(), curio.get().getLeft()))); return; } } @@ -68,7 +69,7 @@ public class KeyInputListener { if (slotFound == -1) { sendError(new TranslationTextComponent("misc.refinedstorage.network_item.shortcut_not_found", new TranslationTextComponent(items[0].getTranslationKey()))); } else { - RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(slotFound, "")); + RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(new PlayerSlot(slotFound))); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java b/src/main/java/com/refinedmods/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java index 044eaba66..b2cae2d1e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java @@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.autocrafting.ICraftingManager; import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTask; import com.refinedmods.refinedstorage.api.network.INetwork; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.NetworkItem; import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; import com.refinedmods.refinedstorage.network.craftingmonitor.WirelessCraftingMonitorSettingsUpdateMessage; @@ -33,12 +34,12 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { private final BlockPos nodePos; private int tabPage; private Optional tabSelected; - private final int slotId; + private final PlayerSlot slot; - public WirelessCraftingMonitor(ItemStack stack, @Nullable MinecraftServer server, int slotId) { + public WirelessCraftingMonitor(ItemStack stack, @Nullable MinecraftServer server, PlayerSlot slot) { this.stack = stack; this.server = server; - this.slotId = slotId; + this.slot = slot; this.nodeDimension = NetworkItem.getDimension(stack); this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(stack)); @@ -155,6 +156,6 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { @Override public int getSlotId() { - return slotId; + return slot.getSlotIdInPlayerInventory(); } } diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessFluidGrid.java index 25bdb97b2..2e89f47be 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessFluidGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -11,6 +11,7 @@ import com.refinedmods.refinedstorage.api.util.IFilter; import com.refinedmods.refinedstorage.api.util.IStackList; import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.FluidGridStorageCacheListener; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.NetworkItem; import com.refinedmods.refinedstorage.item.WirelessFluidGridItem; import com.refinedmods.refinedstorage.network.grid.WirelessFluidGridSettingsUpdateMessage; @@ -42,7 +43,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { private final MinecraftServer server; private final RegistryKey nodeDimension; private final BlockPos nodePos; - private final int slotId; + private final PlayerSlot slot; private int sortingType; private int sortingDirection; @@ -62,12 +63,12 @@ public class WirelessFluidGrid implements INetworkAwareGrid { StackUtils.writeItems(handler, 0, stack.getTag()); })); - public WirelessFluidGrid(ItemStack stack, @Nullable MinecraftServer server, int slotId) { + public WirelessFluidGrid(ItemStack stack, @Nullable MinecraftServer server, PlayerSlot slot) { this.stack = stack; this.server = server; this.nodeDimension = NetworkItem.getDimension(stack); this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(stack)); - this.slotId = slotId; + this.slot = slot; this.sortingType = WirelessFluidGridItem.getSortingType(stack); this.sortingDirection = WirelessFluidGridItem.getSortingDirection(stack); @@ -297,7 +298,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid { @Override public int getSlotId() { - return slotId; + return slot.getSlotIdInPlayerInventory(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessGrid.java index cc797265b..f1f9b70c9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/grid/WirelessGrid.java @@ -11,6 +11,7 @@ import com.refinedmods.refinedstorage.api.util.IFilter; import com.refinedmods.refinedstorage.api.util.IStackList; import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.ItemGridStorageCacheListener; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.NetworkItem; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.network.grid.WirelessGridSettingsUpdateMessage; @@ -42,7 +43,7 @@ public class WirelessGrid implements INetworkAwareGrid { private final MinecraftServer server; private final RegistryKey nodeDimension; private final BlockPos nodePos; - private final int slotId; + private final PlayerSlot slot; private int viewType; private int sortingType; @@ -63,12 +64,12 @@ public class WirelessGrid implements INetworkAwareGrid { StackUtils.writeItems(handler, 0, stack.getTag()); }); - public WirelessGrid(ItemStack stack, @Nullable MinecraftServer server, int slotId) { + public WirelessGrid(ItemStack stack, @Nullable MinecraftServer server, PlayerSlot slot) { this.stack = stack; this.server = server; this.nodeDimension = NetworkItem.getDimension(stack); this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(stack)); - this.slotId = slotId; + this.slot = slot; this.viewType = WirelessGridItem.getViewType(stack); this.sortingType = WirelessGridItem.getSortingType(stack); @@ -303,7 +304,7 @@ public class WirelessGrid implements INetworkAwareGrid { @Override public int getSlotId() { - return slotId; + return slot.getSlotIdInPlayerInventory(); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGrid.java b/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGrid.java index 35546a985..58b66050a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGrid.java +++ b/src/main/java/com/refinedmods/refinedstorage/tile/grid/portable/PortableGrid.java @@ -33,6 +33,7 @@ import com.refinedmods.refinedstorage.apiimpl.storage.tracker.ItemStorageTracker import com.refinedmods.refinedstorage.inventory.item.BaseItemHandler; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; import com.refinedmods.refinedstorage.inventory.item.validator.StorageDiskItemValidator; +import com.refinedmods.refinedstorage.inventory.player.PlayerSlot; import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; import com.refinedmods.refinedstorage.network.grid.PortableGridSettingsUpdateMessage; @@ -73,7 +74,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer @Nullable private PlayerEntity player; private ItemStack stack; - private final int slotId; + private final PlayerSlot slot; private int sortingType; private int sortingDirection; @@ -135,10 +136,10 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer } })); - public PortableGrid(@Nullable PlayerEntity player, ItemStack stack, int slotId) { + public PortableGrid(@Nullable PlayerEntity player, ItemStack stack, PlayerSlot slot) { this.player = player; this.stack = stack; - this.slotId = slotId; + this.slot = slot; this.sortingType = WirelessGridItem.getSortingType(stack); this.sortingDirection = WirelessGridItem.getSortingDirection(stack); @@ -435,7 +436,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer @Override public int getSlotId() { - return slotId; + return slot.getSlotIdInPlayerInventory(); } @Nullable