Fixed being able to move wireless items in inventory when using a keybinding to open

This commit is contained in:
raoulvdberge
2019-11-17 19:00:00 +01:00
parent a72dccdea4
commit b485c74503
37 changed files with 136 additions and 75 deletions

View File

@@ -10,6 +10,7 @@
- Fixed External Storage not refreshing when the storage is broken or replaced (raoulvdberge)
- Fixed delay in block update when placing a cable block (raoulvdberge)
- Fixed holder of cable blocks sometimes conflicting with a cable connection while rendering (raoulvdberge)
- Fixed being able to move wireless items in inventory when using a keybinding to open (raoulvdberge)
### 1.7
NOTE: This is an alpha release. Bugs may happen. Remember to take backups.

View File

@@ -237,6 +237,11 @@ public interface IGrid {
*/
boolean isActive();
/**
* @return the slot id where this grid is located, if applicable, otherwise -1
*/
int getSlotId();
static boolean isValidViewType(int type) {
return type == VIEW_TYPE_NORMAL ||
type == VIEW_TYPE_CRAFTABLES ||

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.api.network.grid;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
@@ -18,10 +17,11 @@ public interface IGridFactory {
*
* @param player the player
* @param stack the stack
* @param slotId the slot id, if applicable, otherwise -1
* @return the grid, or null if a problem occurred
*/
@Nullable
IGrid createFromStack(PlayerEntity player, ItemStack stack);
IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId);
/**
* Creates a grid from a block. Used when {@link #getType()} is BLOCK.

View File

@@ -42,8 +42,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
*/
void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack);
void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId);
/**
* Creates a grid.
@@ -52,8 +53,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
* @return a grid, or null if an error has occurred
*/
@Nullable
Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos);
Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId);
}

View File

@@ -15,8 +15,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
*/
void open(PlayerEntity player, ItemStack stack);
void open(PlayerEntity player, ItemStack stack, int slotId);
/**
* Called when the player closes a network item.

View File

@@ -15,8 +15,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
* @return the network item
*/
@Nonnull
INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack);
INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId);
}

View File

@@ -33,16 +33,16 @@ public class GridManager implements IGridManager {
@Override
public void openGrid(ResourceLocation id, ServerPlayerEntity player, BlockPos pos) {
openGrid(id, player, null, pos);
openGrid(id, player, null, pos, -1);
}
@Override
public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack) {
openGrid(id, player, stack, null);
public void openGrid(ResourceLocation id, ServerPlayerEntity player, ItemStack stack, int slotId) {
openGrid(id, player, stack, null, slotId);
}
private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos);
private void openGrid(ResourceLocation id, ServerPlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) {
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos, slotId);
if (grid == null) {
return;
}
@@ -59,12 +59,14 @@ public class GridManager implements IGridManager {
if (stack != null) {
buf.writeItemStack(stack);
}
buf.writeInt(slotId);
});
}
@Override
@Nullable
public Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
public Pair<IGrid, TileEntity> createGrid(ResourceLocation id, PlayerEntity player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) {
IGridFactory factory = get(id);
if (factory == null) {
@@ -76,7 +78,7 @@ public class GridManager implements IGridManager {
switch (factory.getType()) {
case STACK:
grid = factory.createFromStack(player, stack);
grid = factory.createFromStack(player, stack, slotId);
break;
case BLOCK:
grid = factory.createFromBlock(player, pos);

View File

@@ -19,7 +19,7 @@ public class GridBlockGridFactory implements IGridFactory {
@Override
@Nullable
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) {
return null;
}

View File

@@ -19,7 +19,7 @@ public class PortableGridBlockGridFactory implements IGridFactory {
@Override
@Nullable
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) {
return null;
}

View File

@@ -19,8 +19,8 @@ public class PortableGridGridFactory implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {
PortableGrid portableGrid = new PortableGrid(player, stack);
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) {
PortableGrid portableGrid = new PortableGrid(player, stack, slotId);
portableGrid.onOpen();

View File

@@ -19,8 +19,8 @@ public class WirelessFluidGridGridFactory implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {
return new WirelessFluidGrid(stack, player.getServer());
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) {
return new WirelessFluidGrid(stack, player.getServer(), slotId);
}
@Nullable

View File

@@ -19,8 +19,8 @@ public class WirelessGridGridFactory implements IGridFactory {
@Nullable
@Override
public IGrid createFromStack(PlayerEntity player, ItemStack stack) {
return new WirelessGrid(stack, player.getServer());
public IGrid createFromStack(PlayerEntity player, ItemStack stack, int slotId) {
return new WirelessGrid(stack, player.getServer(), slotId);
}
@Nullable

View File

@@ -22,7 +22,7 @@ public class NetworkItemManager implements INetworkItemManager {
}
@Override
public void open(PlayerEntity player, ItemStack stack) {
public void open(PlayerEntity player, ItemStack stack, int slotId) {
boolean inRange = false;
for (INetworkNode node : network.getNodeGraph().all()) {
@@ -47,7 +47,7 @@ public class NetworkItemManager implements INetworkItemManager {
return;
}
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack);
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack, slotId);
if (item.onOpen(network)) {
items.put(player, item);

View File

@@ -22,13 +22,13 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
private INetworkItemManager handler;
private PlayerEntity player;
private ItemStack stack;
private int invIndex;
private int slotId;
public WirelessCraftingMonitorNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int invIndex) {
public WirelessCraftingMonitorNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
this.handler = handler;
this.player = player;
this.stack = stack;
this.invIndex = invIndex;
this.slotId = slotId;
}
@Override
@@ -56,12 +56,12 @@ public class WirelessCraftingMonitorNetworkItem implements INetworkItem {
return false;
}
WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer());
WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, player.getServer(), slotId);
NetworkHooks.openGui(
(ServerPlayerEntity) player,
new CraftingMonitorContainerProvider(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null),
buf -> buf.writeInt(invIndex)
buf -> buf.writeInt(slotId)
);
drainEnergy(RS.SERVER_CONFIG.getWirelessCraftingMonitor().getOpenUsage());

View File

@@ -20,11 +20,13 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
private INetworkItemManager handler;
private PlayerEntity player;
private ItemStack stack;
private int slotId;
public WirelessFluidGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack) {
public WirelessFluidGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
this.handler = handler;
this.player = player;
this.stack = stack;
this.slotId = slotId;
}
@Override
@@ -51,7 +53,7 @@ public class WirelessFluidGridNetworkItem implements INetworkItem {
return false;
}
API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayerEntity) player, stack);
API.instance().getGridManager().openGrid(WirelessFluidGridGridFactory.ID, (ServerPlayerEntity) player, stack, slotId);
drainEnergy(RS.SERVER_CONFIG.getWirelessFluidGrid().getOpenUsage());

View File

@@ -20,11 +20,13 @@ public class WirelessGridNetworkItem implements INetworkItem {
private INetworkItemManager handler;
private PlayerEntity player;
private ItemStack stack;
private int slotId;
public WirelessGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack) {
public WirelessGridNetworkItem(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
this.handler = handler;
this.player = player;
this.stack = stack;
this.slotId = slotId;
}
@Override
@@ -41,7 +43,7 @@ public class WirelessGridNetworkItem implements INetworkItem {
energy != null &&
energy.getEnergyStored() <= RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage()) {
sendOutOfEnergyMessage();
return false;
}
@@ -51,7 +53,7 @@ public class WirelessGridNetworkItem implements INetworkItem {
return false;
}
API.instance().getGridManager().openGrid(WirelessGridGridFactory.ID, (ServerPlayerEntity) player, stack);
API.instance().getGridManager().openGrid(WirelessGridGridFactory.ID, (ServerPlayerEntity) player, stack, slotId);
drainEnergy(RS.SERVER_CONFIG.getWirelessGrid().getOpenUsage());

View File

@@ -139,4 +139,9 @@ public class CraftingMonitorNetworkNode extends NetworkNode implements ICrafting
TileDataManager.setParameter(CraftingMonitorTile.TAB_PAGE, page);
}
}
@Override
public int getSlotId() {
return -1;
}
}

View File

@@ -408,6 +408,11 @@ public class GridNetworkNode extends NetworkNode implements INetworkAwareGrid, I
return world.getBlockState(pos).get(NetworkNodeBlock.CONNECTED);
}
@Override
public int getSlotId() {
return -1;
}
@Override
public void onCrafted(PlayerEntity player) {
API.instance().getCraftingGridBehavior().onCrafted(this, currentRecipe, player);

View File

@@ -60,11 +60,13 @@ public abstract class BaseContainer extends Container {
protected void addPlayerInventory(int xInventory, int yInventory) {
int id = 0;
int disabledSlotNumber = getDisabledSlotNumber();
for (int i = 0; i < 9; i++) {
int x = xInventory + i * 18;
int y = yInventory + 4 + (3 * 18);
if (isHeldItemDisabled() && i == player.inventory.currentItem) {
if (id == disabledSlotNumber) {
addSlot(new LegacyDisabledSlot(player.inventory, id, x, y));
} else {
addSlot(new Slot(player.inventory, id, x, y));
@@ -75,7 +77,11 @@ public abstract class BaseContainer extends Container {
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 9; x++) {
addSlot(new Slot(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
if (id == disabledSlotNumber) {
addSlot(new LegacyDisabledSlot(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
} else {
addSlot(new Slot(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
}
id++;
}
@@ -90,8 +96,12 @@ public abstract class BaseContainer extends Container {
public ItemStack slotClick(int id, int dragType, ClickType clickType, PlayerEntity player) {
Slot slot = id >= 0 ? getSlot(id) : null;
int disabledSlotNumber = getDisabledSlotNumber();
// Prevent swapping disabled held item with the number keys (dragType is the slot we're swapping with)
if (isHeldItemDisabled() && clickType == ClickType.SWAP && dragType == player.inventory.currentItem) {
if (disabledSlotNumber != -1 &&
clickType == ClickType.SWAP &&
dragType == disabledSlotNumber) {
return ItemStack.EMPTY;
}
@@ -157,8 +167,8 @@ public abstract class BaseContainer extends Container {
return super.canMergeSlot(stack, slot);
}
protected boolean isHeldItemDisabled() {
return false;
protected int getDisabledSlotNumber() {
return -1;
}
@Override

View File

@@ -6,7 +6,6 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftin
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.container.ContainerType;
@@ -87,8 +86,8 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting
}
@Override
protected boolean isHeldItemDisabled() {
return craftingMonitor instanceof WirelessCraftingMonitor;
protected int getDisabledSlotNumber() {
return craftingMonitor.getSlotId();
}
@Override

View File

@@ -52,7 +52,7 @@ public class FilterContainer extends BaseContainer {
}
@Override
protected boolean isHeldItemDisabled() {
return true;
protected int getDisabledSlotNumber() {
return getPlayer().inventory.currentItem;
}
}

View File

@@ -19,9 +19,7 @@ import com.raoulvdberge.refinedstorage.container.slot.legacy.LegacyFilterSlot;
import com.raoulvdberge.refinedstorage.screen.IScreenInfoProvider;
import com.raoulvdberge.refinedstorage.tile.BaseTile;
import com.raoulvdberge.refinedstorage.tile.config.IType;
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid;
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.inventory.container.IContainerListener;
@@ -283,8 +281,7 @@ public class GridContainer extends BaseContainer implements ICraftingGridListene
}
@Override
protected boolean isHeldItemDisabled() {
// Here we check for the concrete portable grid type, not IPortableGrid, because we *CAN* move the held item in the portable grid tile
return grid instanceof WirelessGrid || grid instanceof PortableGrid;
protected int getDisabledSlotNumber() {
return grid.getSlotId();
}
}

View File

@@ -29,7 +29,9 @@ public class GridContainerFactory implements IContainerFactory<GridContainer> {
stack = data.readItemStack();
}
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos);
int slotId = data.readInt();
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(id, inv.player, stack, pos, slotId);
return new GridContainer(grid.getLeft(), grid.getRight() instanceof BaseTile ? (BaseTile) grid.getRight() : null, inv.player, windowId);
}

View File

@@ -11,11 +11,11 @@ import net.minecraftforge.fml.network.IContainerFactory;
public class WirelessCraftingMonitorContainerFactory implements IContainerFactory<CraftingMonitorContainer> {
@Override
public CraftingMonitorContainer create(int windowId, PlayerInventory inv, PacketBuffer data) {
int invIndex = data.readInt();
int slotId = data.readInt();
ItemStack stack = inv.getStackInSlot(invIndex);
ItemStack stack = inv.getStackInSlot(slotId);
WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, null);
WirelessCraftingMonitor wirelessCraftingMonitor = new WirelessCraftingMonitor(stack, null, slotId);
return new CraftingMonitorContainer(RSContainers.WIRELESS_CRAFTING_MONITOR, wirelessCraftingMonitor, null, inv.player, windowId);
}

View File

@@ -44,7 +44,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::sendMessage);
applyNetwork(world.getServer(), stack, n -> n.getNetworkItemManager().open(player, player.getHeldItem(hand), player.inventory.currentItem), player::sendMessage);
}
return ActionResult.newResult(ActionResultType.SUCCESS, stack);

View File

@@ -38,16 +38,8 @@ public class WirelessCraftingMonitorItem extends NetworkItem {
@Nonnull
@Override
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) {
int invIndex = 0;
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
if (player.inventory.getStackInSlot(i) == stack) {
invIndex = i;
break;
}
}
return new WirelessCraftingMonitorNetworkItem(handler, player, stack, invIndex);
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
return new WirelessCraftingMonitorNetworkItem(handler, player, stack, slotId);
}
public static Optional<UUID> getTabSelected(ItemStack stack) {

View File

@@ -34,8 +34,8 @@ public class WirelessFluidGridItem extends NetworkItem {
@Nonnull
@Override
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) {
return new WirelessFluidGridNetworkItem(handler, player, stack);
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
return new WirelessFluidGridNetworkItem(handler, player, stack, slotId);
}
public static int getSortingType(ItemStack stack) {

View File

@@ -34,8 +34,8 @@ public class WirelessGridItem extends NetworkItem {
@Override
@Nonnull
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack) {
return new WirelessGridNetworkItem(handler, player, stack);
public INetworkItem provide(INetworkItemManager handler, PlayerEntity player, ItemStack stack, int slotId) {
return new WirelessGridNetworkItem(handler, player, stack, slotId);
}
public static int getViewType(ItemStack stack) {

View File

@@ -51,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);
API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, (ServerPlayerEntity) player, stack, player.inventory.currentItem);
}
return ActionResult.newResult(ActionResultType.SUCCESS, stack);

View File

@@ -34,9 +34,9 @@ public class OpenNetworkItemMessage {
ItemStack stack = player.inventory.getStackInSlot(message.slotId);
if (stack.getItem() instanceof NetworkItem) {
((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack), player::sendMessage);
((NetworkItem) stack.getItem()).applyNetwork(player.getServer(), stack, n -> n.getNetworkItemManager().open(player, stack, message.slotId), player::sendMessage);
} else if (stack.getItem() instanceof PortableGridBlockItem) {
API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, player, stack);
API.instance().getGridManager().openGrid(PortableGridGridFactory.ID, player, stack, message.slotId);
}
});
}

View File

@@ -103,7 +103,7 @@ public class PortableGridBakedModel extends DelegateBakedModel {
@Nullable
@Override
public IBakedModel getModelWithOverrides(IBakedModel model, ItemStack stack, @Nullable World worldIn, @Nullable LivingEntity entityIn) {
PortableGrid portableGrid = new PortableGrid(null, stack);
PortableGrid portableGrid = new PortableGrid(null, stack, -1);
IBakedModel myDisk = null;

View File

@@ -37,4 +37,6 @@ public interface ICraftingMonitor {
void onTabSelectionChanged(Optional<UUID> taskId);
void onTabPageChanged(int page);
int getSlotId();
}

View File

@@ -33,10 +33,12 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
private BlockPos nodePos;
private int tabPage;
private Optional<UUID> tabSelected;
private int slotId;
public WirelessCraftingMonitor(ItemStack stack, @Nullable MinecraftServer server) {
public WirelessCraftingMonitor(ItemStack stack, @Nullable MinecraftServer server, int slotId) {
this.stack = stack;
this.server = server;
this.slotId = slotId;
this.nodeDimension = WirelessCraftingMonitorItem.getDimension(stack);
this.nodePos = new BlockPos(WirelessCraftingMonitorItem.getX(stack), WirelessCraftingMonitorItem.getY(stack), WirelessCraftingMonitorItem.getZ(stack));
@@ -151,4 +153,9 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
RS.NETWORK_HANDLER.sendToServer(new WirelessCraftingMonitorSettingsUpdateMessage(tabSelected, tabPage));
}
}
@Override
public int getSlotId() {
return slotId;
}
}

View File

@@ -41,6 +41,7 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
private final MinecraftServer server;
private final DimensionType nodeDimension;
private final BlockPos nodePos;
private final int slotId;
private int sortingType;
private int sortingDirection;
@@ -60,11 +61,12 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
StackUtils.writeItems(handler, 0, stack.getTag());
}));
public WirelessFluidGrid(ItemStack stack, @Nullable MinecraftServer server) {
public WirelessFluidGrid(ItemStack stack, @Nullable MinecraftServer server, int slotId) {
this.stack = stack;
this.server = server;
this.nodeDimension = WirelessFluidGridItem.getDimension(stack);
this.nodePos = new BlockPos(WirelessFluidGridItem.getX(stack), WirelessFluidGridItem.getY(stack), WirelessFluidGridItem.getZ(stack));
this.slotId = slotId;
this.sortingType = WirelessFluidGridItem.getSortingType(stack);
this.sortingDirection = WirelessFluidGridItem.getSortingDirection(stack);
@@ -293,6 +295,11 @@ public class WirelessFluidGrid implements INetworkAwareGrid {
return true;
}
@Override
public int getSlotId() {
return slotId;
}
@Override
public void onClosed(PlayerEntity player) {
INetwork network = getNetwork();

View File

@@ -41,6 +41,7 @@ public class WirelessGrid implements INetworkAwareGrid {
private final MinecraftServer server;
private final DimensionType nodeDimension;
private final BlockPos nodePos;
private final int slotId;
private int viewType;
private int sortingType;
@@ -61,11 +62,12 @@ public class WirelessGrid implements INetworkAwareGrid {
StackUtils.writeItems(handler, 0, stack.getTag());
});
public WirelessGrid(ItemStack stack, @Nullable MinecraftServer server) {
public WirelessGrid(ItemStack stack, @Nullable MinecraftServer server, int slotId) {
this.stack = stack;
this.server = server;
this.nodeDimension = WirelessGridItem.getDimension(stack);
this.nodePos = new BlockPos(WirelessGridItem.getX(stack), WirelessGridItem.getY(stack), WirelessGridItem.getZ(stack));
this.slotId = slotId;
this.viewType = WirelessGridItem.getViewType(stack);
this.sortingType = WirelessGridItem.getSortingType(stack);
@@ -299,6 +301,11 @@ public class WirelessGrid implements INetworkAwareGrid {
return true;
}
@Override
public int getSlotId() {
return slotId;
}
@Override
public void onClosed(PlayerEntity player) {
INetwork network = getNetwork();

View File

@@ -71,6 +71,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
@Nullable
private PlayerEntity player;
private ItemStack stack;
private int slotId;
private int sortingType;
private int sortingDirection;
@@ -135,9 +136,10 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
}
}));
public PortableGrid(@Nullable PlayerEntity player, ItemStack stack) {
public PortableGrid(@Nullable PlayerEntity player, ItemStack stack, int slotId) {
this.player = player;
this.stack = stack;
this.slotId = slotId;
this.sortingType = WirelessGridItem.getSortingType(stack);
this.sortingDirection = WirelessGridItem.getSortingDirection(stack);
@@ -435,6 +437,11 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
return hasDisk();
}
@Override
public int getSlotId() {
return slotId;
}
@Nullable
private UUID getDiskId() {
return !hasDisk() ? null : ((IStorageDiskProvider) disk.getStackInSlot(0).getItem()).getId(disk.getStackInSlot(0));

View File

@@ -535,6 +535,11 @@ public class PortableGridTile extends BaseTile implements IGrid, IPortableGrid,
return redstoneMode.isEnabled(world, pos);
}
@Override
public int getSlotId() {
return -1;
}
@Override
@Nullable
public IStorageCache getCache() {