fix curio bugs and wrong slot being locked fixes #3048

This commit is contained in:
Darkere
2021-09-27 15:32:57 +02:00
parent d98872c310
commit e050f0e90a
29 changed files with 192 additions and 112 deletions

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.api.network.grid; 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.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@@ -17,11 +18,11 @@ public interface IGridFactory {
* *
* @param player the player * @param player the player
* @param stack the stack * @param stack the stack
* @param slotId the slot id, if applicable, otherwise -1 * @param slot the slot, if applicable, otherwise -1
* @return the grid, or null if a problem occurred * @return the grid, or null if a problem occurred
*/ */
@Nullable @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. * Creates a grid from a block. Used when {@link #getType()} is BLOCK.

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.api.network.grid; 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.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -35,9 +36,9 @@ public interface IGridManager {
* @param id the grid factory id * @param id the grid factory id
* @param player the player * @param player the player
* @param stack the stack * @param stack the stack
* @param slotId the slot id, if applicable, otherwise -1 * @param slot the slot
*/ */
void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId); void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, PlayerSlot slot);
/** /**
* Creates a grid. * Creates a grid.
@@ -46,9 +47,9 @@ public interface IGridManager {
* @param player the player * @param player the player
* @param stack the stack, if there is one * @param stack the stack, if there is one
* @param pos the block position, 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, if applicable, otherwise -1
* @return a grid, or null if an error has occurred * @return a grid, or null if an error has occurred
*/ */
@Nullable @Nullable
Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId); Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot);
} }

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.api.network.item; package com.refinedmods.refinedstorage.api.network.item;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -15,9 +16,9 @@ public interface INetworkItemManager {
* *
* @param player the player that opened the network item * @param player the player that opened the network item
* @param stack the stack that has been opened * @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, 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. * Called when the player closes a network item.

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.api.network.item; package com.refinedmods.refinedstorage.api.network.item;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -15,9 +16,9 @@ public interface INetworkItemProvider {
* @param handler the network item handler * @param handler the network item handler
* @param player the player * @param player the player
* @param stack the stack * @param stack the stack
* @param slotId the slot id, if applicable, otherwise -1 * @param slot the slot in the players inventory or -1
* @return the network item * @return the network item
*/ */
@Nonnull @Nonnull
INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId); INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot);
} }

View File

@@ -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.IGridFactory;
import com.refinedmods.refinedstorage.api.network.grid.IGridManager; import com.refinedmods.refinedstorage.api.network.grid.IGridManager;
import com.refinedmods.refinedstorage.container.factory.GridContainerProvider; 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.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -28,16 +29,16 @@ public class GridManager implements IGridManager {
@Override @Override
public void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos) { public void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos) {
openGrid(id, player, null, pos, -1); openGrid(id, player, null, pos, new PlayerSlot(-1));
} }
@Override @Override
public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId) { public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, PlayerSlot slot) {
openGrid(id, player, stack, null, slotId); openGrid(id, player, stack, null, slot);
} }
private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) { private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot) {
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos, slotId); Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos, slot);
if (grid == null) { if (grid == null) {
return; return;
} }
@@ -55,13 +56,13 @@ public class GridManager implements IGridManager {
buf.writeItemStack(stack); buf.writeItemStack(stack);
} }
buf.writeInt(slotId); slot.writePlayerSlot(buf);
}); });
} }
@Override @Override
@Nullable @Nullable
public Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) { public Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, PlayerSlot slot) {
IGridFactory factory = factories.get(id); IGridFactory factory = factories.get(id);
if (factory == null) { if (factory == null) {
@@ -72,7 +73,7 @@ public class GridManager implements IGridManager {
TileEntity tile = factory.getRelevantTile(player.world, pos); TileEntity tile = factory.getRelevantTile(player.world, pos);
if (factory.getType() == GridFactoryType.STACK) { if (factory.getType() == GridFactoryType.STACK) {
grid = factory.createFromStack(player, stack, slotId); grid = factory.createFromStack(player, stack, slot);
} else if (factory.getType() == GridFactoryType.BLOCK) { } else if (factory.getType() == GridFactoryType.BLOCK) {
grid = factory.createFromBlock(player, pos); grid = factory.createFromBlock(player, pos);
} }

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.grid.GridTile; import com.refinedmods.refinedstorage.tile.grid.GridTile;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -19,7 +20,7 @@ public class GridBlockGridFactory implements IGridFactory {
@Override @Override
@Nullable @Nullable
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return null; return null;
} }

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridTile; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridTile;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -19,7 +20,7 @@ public class PortableGridBlockGridFactory implements IGridFactory {
@Override @Override
@Nullable @Nullable
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return null; return null;
} }

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.grid.portable.PortableGrid; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -19,8 +20,8 @@ public class PortableGridGridFactory implements IGridFactory {
@Nullable @Nullable
@Override @Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
PortableGrid portableGrid = new PortableGrid(player, stack, slotId); PortableGrid portableGrid = new PortableGrid(player, stack, slot);
portableGrid.onOpen(); portableGrid.onOpen();

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.grid.WirelessFluidGrid; import com.refinedmods.refinedstorage.tile.grid.WirelessFluidGrid;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -19,8 +20,8 @@ public class WirelessFluidGridGridFactory implements IGridFactory {
@Nullable @Nullable
@Override @Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return new WirelessFluidGrid(stack, player.getServer(), slotId); return new WirelessFluidGrid(stack, player.getServer(), slot);
} }
@Nullable @Nullable

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType; import com.refinedmods.refinedstorage.api.network.grid.GridFactoryType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.api.network.grid.IGridFactory; import com.refinedmods.refinedstorage.api.network.grid.IGridFactory;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.grid.WirelessGrid; import com.refinedmods.refinedstorage.tile.grid.WirelessGrid;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -19,8 +20,8 @@ public class WirelessGridGridFactory implements IGridFactory {
@Nullable @Nullable
@Override @Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) { public IGrid createFromStack(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return new WirelessGrid(stack, player.getServer(), slotId); return new WirelessGrid(stack, player.getServer(), slot);
} }
@Nullable @Nullable

View File

@@ -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.INetworkItemManager;
import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider; import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider;
import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.math.vector.Vector3d; import net.minecraft.util.math.vector.Vector3d;
@@ -24,7 +25,7 @@ public class NetworkItemManager implements INetworkItemManager {
} }
@Override @Override
public void open(PlayerEntity player, ItemStack stack, int slotId) { public void open(PlayerEntity player, ItemStack stack, PlayerSlot slot) {
boolean inRange = false; boolean inRange = false;
for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) { for (INetworkNodeGraphEntry entry : network.getNodeGraph().all()) {
@@ -54,7 +55,7 @@ public class NetworkItemManager implements INetworkItemManager {
return; 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)) { if (item.onOpen(network)) {
items.put(player, item); items.put(player, item);

View File

@@ -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.INetworkItemManager;
import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.api.network.security.Permission;
import com.refinedmods.refinedstorage.container.factory.CraftingMonitorContainerProvider; import com.refinedmods.refinedstorage.container.factory.CraftingMonitorContainerProvider;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem;
import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
import com.refinedmods.refinedstorage.util.WorldUtils; import com.refinedmods.refinedstorage.util.WorldUtils;
@@ -22,13 +23,13 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
private final INetworkItemManager handler; private final INetworkItemManager handler;
private final PlayerEntity player; private final PlayerEntity player;
private final ItemStack stack; 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.handler = handler;
this.player = player; this.player = player;
this.stack = stack; this.stack = stack;
this.slotId = slotId; this.slot = slot;
} }
@Override @Override
@@ -56,13 +57,11 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
return false; return false;
} }
WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slotId); WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slot);
NetworkHooks.openGui( NetworkHooks.openGui(
(ServerPlayerEntity) player, (ServerPlayerEntity) player,
new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null), slot::writePlayerSlot);
buf -> buf.writeInt(slotId)
);
drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage()); drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage());

View File

@@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.api.network.security.Permission;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessFluidGridGridFactory; 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.item.WirelessFluidGridItem;
import com.refinedmods.refinedstorage.util.WorldUtils; import com.refinedmods.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
@@ -20,13 +21,13 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
private final INetworkItemManager handler; private final INetworkItemManager handler;
private final PlayerEntity player; private final PlayerEntity player;
private final ItemStack stack; 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.handler = handler;
this.player = player; this.player = player;
this.stack = stack; this.stack = stack;
this.slotId = slotId; this.slot = slot;
} }
@Override @Override
@@ -53,7 +54,7 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
return false; 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()); drainEnergy(RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage());

View File

@@ -7,6 +7,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
import com.refinedmods.refinedstorage.api.network.security.Permission; import com.refinedmods.refinedstorage.api.network.security.Permission;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.WirelessGridGridFactory; 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.item.WirelessGridItem;
import com.refinedmods.refinedstorage.util.WorldUtils; import com.refinedmods.refinedstorage.util.WorldUtils;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
@@ -20,13 +21,13 @@ public class WirelessGridNetworkItem implements INetworkItem {
private final INetworkItemManager handler; private final INetworkItemManager handler;
private final PlayerEntity player; private final PlayerEntity player;
private final ItemStack stack; 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.handler = handler;
this.player = player; this.player = player;
this.stack = stack; this.stack = stack;
this.slotId = slotId; this.slot = slot;
} }
@Override @Override
@@ -53,7 +54,7 @@ public class WirelessGridNetworkItem implements INetworkItem {
return false; 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()); drainEnergy(RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage());

View File

@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.container.factory;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.container.GridContainer; import com.refinedmods.refinedstorage.container.GridContainer;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.BaseTile; import com.refinedmods.refinedstorage.tile.BaseTile;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -29,9 +30,9 @@ public class GridContainerFactory implements IContainerFactory<GridContainer> {
stack = data.readItemStack(); stack = data.readItemStack();
} }
int slotId = data.readInt(); PlayerSlot slot = new PlayerSlot(data);
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos, slotId); Pair<IGrid, TileEntity> 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); return new GridContainer(grid.getLeft(), grid.getRight() instanceof BaseTile ? (BaseTile) grid.getRight() : null, inv.player, windowId);
} }

View File

@@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.container.factory;
import com.refinedmods.refinedstorage.RSContainers; import com.refinedmods.refinedstorage.RSContainers;
import com.refinedmods.refinedstorage.container.CraftingMonitorContainer; import com.refinedmods.refinedstorage.container.CraftingMonitorContainer;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import com.refinedmods.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -11,11 +12,12 @@ import net.minecraftforge.fml.network.IContainerFactory;
public class WirelessCraftingMonitorContainerFactory implements IContainerFactory<CraftingMonitorContainer> { public class WirelessCraftingMonitorContainerFactory implements IContainerFactory<CraftingMonitorContainer> {
@Override @Override
public CraftingMonitorContainer create(int windowId, PlayerInventory inv, PacketBuffer data) { 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); return new CraftingMonitorContainer(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null, inv.player, windowId);
} }

View File

@@ -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<ICuriosItemHandler> curiosHandler = CuriosApi.getCuriosHelper().getCuriosHandler(player);
Optional<ICurioStacksHandler> stacksHandler = curiosHandler.resolve().flatMap((handler ->
handler.getStacksHandler(curioSlot)
));
Optional<ItemStack> 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);
}
}

View File

@@ -2,9 +2,11 @@ package com.refinedmods.refinedstorage.item;
import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.api.network.item.INetworkItemProvider; 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.render.Styles;
import com.refinedmods.refinedstorage.util.NetworkUtils; import com.refinedmods.refinedstorage.util.NetworkUtils;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -38,7 +40,7 @@ public abstract class NetworkItem extends EnergyItem implements INetworkItemProv
ItemStack stack = player.getHeldItem(hand); ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote) { 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); 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 @Override
public ActionResultType onItemUse(ItemUseContext ctx) { public ActionResultType onItemUse(ItemUseContext ctx) {
ItemStack stack = ctx.getPlayer().getHeldItem(ctx.getHand()); ItemStack stack = ctx.getPlayer().getHeldItem(ctx.getHand());

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.network.item.INetworkItem; import com.refinedmods.refinedstorage.api.network.item.INetworkItem;
import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessCraftingMonitorNetworkItem; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessCraftingMonitorNetworkItem;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -36,8 +37,8 @@ public class WirelessCraftingMonitorItem extends NetworkItem {
@Nonnull @Nonnull
@Override @Override
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return new WirelessCraftingMonitorNetworkItem(handler, player, stack, slotId); return new WirelessCraftingMonitorNetworkItem(handler, player, stack, slot);
} }
public static Optional<UUID> getTabSelected(ItemStack stack) { public static Optional<UUID> getTabSelected(ItemStack stack) {

View File

@@ -6,6 +6,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem;
import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessFluidGridNetworkItem; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessFluidGridNetworkItem;
import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -32,8 +33,8 @@ public class WirelessFluidGridItem extends NetworkItem {
@Nonnull @Nonnull
@Override @Override
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return new WirelessFluidGridNetworkItem(handler, player, stack, slotId); return new WirelessFluidGridNetworkItem(handler, player, stack, slot);
} }
public static int getSortingType(ItemStack stack) { public static int getSortingType(ItemStack stack) {

View File

@@ -6,6 +6,7 @@ import com.refinedmods.refinedstorage.api.network.item.INetworkItem;
import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager; import com.refinedmods.refinedstorage.api.network.item.INetworkItemManager;
import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessGridNetworkItem; import com.refinedmods.refinedstorage.apiimpl.network.item.WirelessGridNetworkItem;
import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.GridNetworkNode;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -32,8 +33,8 @@ public class WirelessGridItem extends NetworkItem {
@Override @Override
@Nonnull @Nonnull
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) { public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, PlayerSlot slot) {
return new WirelessGridNetworkItem(handler, player, stack, slotId); return new WirelessGridNetworkItem(handler, player, stack, slot);
} }
public static int getViewType(ItemStack stack) { public static int getViewType(ItemStack stack) {

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlocks; import com.refinedmods.refinedstorage.RSBlocks;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.PortableGridGridFactory; 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.item.WirelessGridItem;
import com.refinedmods.refinedstorage.render.Styles; import com.refinedmods.refinedstorage.render.Styles;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
@@ -50,7 +51,7 @@ public class PortableGridBlockItem extends EnergyBlockItem {
ItemStack stack = player.getHeldItem(hand); ItemStack stack = player.getHeldItem(hand);
if (!world.isRemote) { 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); return ActionResult.resultSuccess(stack);

View File

@@ -2,37 +2,29 @@ package com.refinedmods.refinedstorage.network;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.apiimpl.network.grid.factory.PortableGridGridFactory; 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.NetworkItem;
import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem;
import com.refinedmods.refinedstorage.util.PacketBufferUtils;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.fml.network.NetworkEvent; 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; import java.util.function.Supplier;
public class OpenNetworkItemMessage { public class OpenNetworkItemMessage {
private final int slotId; private final PlayerSlot slot;
private final String curioSlot;
public OpenNetworkItemMessage(int slotId, String curioSlot) { public OpenNetworkItemMessage(PlayerSlot slot) {
this.slotId = slotId; this.slot = slot;
this.curioSlot = curioSlot;
} }
public static OpenNetworkItemMessage decode(PacketBuffer buf) { 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) { public static void encode(OpenNetworkItemMessage message, PacketBuffer buf) {
buf.writeInt(message.slotId); message.slot.writePlayerSlot(buf);
buf.writeString(message.curioSlot);
} }
public static void handle(OpenNetworkItemMessage message, Supplier<NetworkEvent.Context> ctx) { public static void handle(OpenNetworkItemMessage message, Supplier<NetworkEvent.Context> ctx) {
@@ -40,40 +32,20 @@ public class OpenNetworkItemMessage {
if (player != null) { if (player != null) {
ctx.get().enqueueWork(() -> { ctx.get().enqueueWork(() -> {
ItemStack stack = getStackFromSlot(player, message.slotId, message.curioSlot); ItemStack stack = message.slot.getStackFromSlot(player);
if (stack == null) { if (stack == null) {
return; return;
} }
if (stack.getItem() instanceof NetworkItem) { 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) { } 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); ctx.get().setPacketHandled(true);
} }
private static ItemStack getStackFromSlot(ServerPlayerEntity player, int slotId, String curioSlot) {
if (curioSlot.isEmpty()) {
return player.inventory.getStackInSlot(slotId);
} else {
LazyOptional<ICuriosItemHandler> curiosHandler = CuriosApi.getCuriosHelper().getCuriosHandler(player);
Optional<ICurioStacksHandler> stacksHandler = curiosHandler.resolve().flatMap((handler ->
handler.getStacksHandler(curioSlot)
));
Optional<ItemStack> stack = stacksHandler.map(handler -> handler.getStacks().getStackInSlot(slotId));
if (stack.isPresent()) {
return stack.get();
}
}
return null;
}
} }

View File

@@ -5,6 +5,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache; import com.google.common.cache.LoadingCache;
import com.refinedmods.refinedstorage.RSBlocks; import com.refinedmods.refinedstorage.RSBlocks;
import com.refinedmods.refinedstorage.block.PortableGridBlock; 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.PortableGrid;
import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridDiskState; import com.refinedmods.refinedstorage.tile.grid.portable.PortableGridDiskState;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@@ -111,7 +112,7 @@ public class PortableGridBakedModel extends DelegateBakedModel {
@Nullable @Nullable
@Override @Override
public IBakedModel getOverrideModel(IBakedModel model, ItemStack stack, @Nullable ClientWorld world, @Nullable LivingEntity entity) { 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()) { if (portableGrid.isGridActive()) {
return new PortableGridItemBakedModel(baseConnected, getDiskModel(portableGrid.getDiskState())); return new PortableGridItemBakedModel(baseConnected, getDiskModel(portableGrid.getDiskState()));

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSItems; import com.refinedmods.refinedstorage.RSItems;
import com.refinedmods.refinedstorage.RSKeyBindings; import com.refinedmods.refinedstorage.RSKeyBindings;
import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration; import com.refinedmods.refinedstorage.integration.curios.CuriosIntegration;
import com.refinedmods.refinedstorage.inventory.player.PlayerSlot;
import com.refinedmods.refinedstorage.network.OpenNetworkItemMessage; import com.refinedmods.refinedstorage.network.OpenNetworkItemMessage;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
@@ -60,7 +61,7 @@ public class KeyInputListener {
Optional<ImmutableTriple<String, Integer, ItemStack>> curio = CuriosApi.getCuriosHelper().findEquippedCurio(stack -> validItems.contains(stack.getItem()), Minecraft.getInstance().player); Optional<ImmutableTriple<String, Integer, ItemStack>> curio = CuriosApi.getCuriosHelper().findEquippedCurio(stack -> validItems.contains(stack.getItem()), Minecraft.getInstance().player);
if (curio.isPresent()) { 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; return;
} }
} }
@@ -68,7 +69,7 @@ public class KeyInputListener {
if (slotFound == -1) { if (slotFound == -1) {
sendError(new TranslationTextComponent("misc.refinedstorage.network_item.shortcut_not_found", new TranslationTextComponent(items[0].getTranslationKey()))); sendError(new TranslationTextComponent("misc.refinedstorage.network_item.shortcut_not_found", new TranslationTextComponent(items[0].getTranslationKey())));
} else { } else {
RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(slotFound, "")); RS.NETWORK_HANDLER.sendToServer(new OpenNetworkItemMessage(new PlayerSlot(slotFound)));
} }
} }

View File

@@ -4,6 +4,7 @@ import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.api.autocrafting.ICraftingManager; import com.refinedmods.refinedstorage.api.autocrafting.ICraftingManager;
import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTask; import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.refinedmods.refinedstorage.api.network.INetwork; 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.NetworkItem;
import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem; import com.refinedmods.refinedstorage.item.WirelessCraftingMonitorItem;
import com.refinedmods.refinedstorage.network.craftingmonitor.WirelessCraftingMonitorSettingsUpdateMessage; import com.refinedmods.refinedstorage.network.craftingmonitor.WirelessCraftingMonitorSettingsUpdateMessage;
@@ -33,12 +34,12 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
private final BlockPos nodePos; private final BlockPos nodePos;
private int tabPage; private int tabPage;
private Optional<UUID> tabSelected; private Optional<UUID> 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.stack = stack;
this.server = server; this.server = server;
this.slotId = slotId; this.slot = slot;
this.nodeDimension = NetworkItem.getDimension(stack); this.nodeDimension = NetworkItem.getDimension(stack);
this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(stack)); this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(stack));
@@ -155,6 +156,6 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
@Override @Override
public int getSlotId() { public int getSlotId() {
return slotId; return slot.getSlotIdInPlayerInventory();
} }
} }

View File

@@ -11,6 +11,7 @@ import com.refinedmods.refinedstorage.api.util.IFilter;
import com.refinedmods.refinedstorage.api.util.IStackList; import com.refinedmods.refinedstorage.api.util.IStackList;
import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.FluidGridStorageCacheListener; import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.FluidGridStorageCacheListener;
import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; 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.NetworkItem;
import com.refinedmods.refinedstorage.item.WirelessFluidGridItem; import com.refinedmods.refinedstorage.item.WirelessFluidGridItem;
import com.refinedmods.refinedstorage.network.grid.WirelessFluidGridSettingsUpdateMessage; import com.refinedmods.refinedstorage.network.grid.WirelessFluidGridSettingsUpdateMessage;
@@ -42,7 +43,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
private final MinecraftServer server; private final MinecraftServer server;
private final RegistryKey<World> nodeDimension; private final RegistryKey<World> nodeDimension;
private final BlockPos nodePos; private final BlockPos nodePos;
private final int slotId; private final PlayerSlot slot;
private int sortingType; private int sortingType;
private int sortingDirection; private int sortingDirection;
@@ -62,12 +63,12 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
StackUtils.writeItems(handler, 0, stack.getTag()); 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.stack = stack;
this.server = server; this.server = server;
this.nodeDimension = NetworkItem.getDimension(stack); this.nodeDimension = NetworkItem.getDimension(stack);
this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(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.sortingType = WirelessFluidGridItem.getSortingType(stack);
this.sortingDirection = WirelessFluidGridItem.getSortingDirection(stack); this.sortingDirection = WirelessFluidGridItem.getSortingDirection(stack);
@@ -297,7 +298,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
@Override @Override
public int getSlotId() { public int getSlotId() {
return slotId; return slot.getSlotIdInPlayerInventory();
} }
@Override @Override

View File

@@ -11,6 +11,7 @@ import com.refinedmods.refinedstorage.api.util.IFilter;
import com.refinedmods.refinedstorage.api.util.IStackList; import com.refinedmods.refinedstorage.api.util.IStackList;
import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.ItemGridStorageCacheListener; import com.refinedmods.refinedstorage.apiimpl.storage.cache.listener.ItemGridStorageCacheListener;
import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; 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.NetworkItem;
import com.refinedmods.refinedstorage.item.WirelessGridItem; import com.refinedmods.refinedstorage.item.WirelessGridItem;
import com.refinedmods.refinedstorage.network.grid.WirelessGridSettingsUpdateMessage; import com.refinedmods.refinedstorage.network.grid.WirelessGridSettingsUpdateMessage;
@@ -42,7 +43,7 @@ public class WirelessGrid implements INetworkAwareGrid {
private final MinecraftServer server; private final MinecraftServer server;
private final RegistryKey<World> nodeDimension; private final RegistryKey<World> nodeDimension;
private final BlockPos nodePos; private final BlockPos nodePos;
private final int slotId; private final PlayerSlot slot;
private int viewType; private int viewType;
private int sortingType; private int sortingType;
@@ -63,12 +64,12 @@ public class WirelessGrid implements INetworkAwareGrid {
StackUtils.writeItems(handler, 0, stack.getTag()); 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.stack = stack;
this.server = server; this.server = server;
this.nodeDimension = NetworkItem.getDimension(stack); this.nodeDimension = NetworkItem.getDimension(stack);
this.nodePos = new BlockPos(NetworkItem.getX(stack), NetworkItem.getY(stack), NetworkItem.getZ(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.viewType = WirelessGridItem.getViewType(stack);
this.sortingType = WirelessGridItem.getSortingType(stack); this.sortingType = WirelessGridItem.getSortingType(stack);
@@ -303,7 +304,7 @@ public class WirelessGrid implements INetworkAwareGrid {
@Override @Override
public int getSlotId() { public int getSlotId() {
return slotId; return slot.getSlotIdInPlayerInventory();
} }
@Override @Override

View File

@@ -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.BaseItemHandler;
import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler; import com.refinedmods.refinedstorage.inventory.item.FilterItemHandler;
import com.refinedmods.refinedstorage.inventory.item.validator.StorageDiskItemValidator; 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.WirelessGridItem;
import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem; import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem;
import com.refinedmods.refinedstorage.network.grid.PortableGridSettingsUpdateMessage; import com.refinedmods.refinedstorage.network.grid.PortableGridSettingsUpdateMessage;
@@ -73,7 +74,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
@Nullable @Nullable
private PlayerEntity player; private PlayerEntity player;
private ItemStack stack; private ItemStack stack;
private final int slotId; private final PlayerSlot slot;
private int sortingType; private int sortingType;
private int sortingDirection; 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.player = player;
this.stack = stack; this.stack = stack;
this.slotId = slotId; this.slot = slot;
this.sortingType = WirelessGridItem.getSortingType(stack); this.sortingType = WirelessGridItem.getSortingType(stack);
this.sortingDirection = WirelessGridItem.getSortingDirection(stack); this.sortingDirection = WirelessGridItem.getSortingDirection(stack);
@@ -435,7 +436,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
@Override @Override
public int getSlotId() { public int getSlotId() {
return slotId; return slot.getSlotIdInPlayerInventory();
} }
@Nullable @Nullable