Fixed being able to move wireless items in inventory when using a keybinding to open
This commit is contained in:
@@ -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.
|
||||
|
@@ -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 ||
|
||||
|
@@ -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.
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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.
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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());
|
||||
|
@@ -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());
|
||||
|
||||
|
@@ -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
|
||||
@@ -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());
|
||||
|
||||
|
@@ -139,4 +139,9 @@ public class CraftingMonitorNetworkNode extends NetworkNode implements ICrafting
|
||||
TileDataManager.setParameter(CraftingMonitorTile.TAB_PAGE, page);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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++) {
|
||||
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
|
||||
|
@@ -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
|
||||
|
@@ -52,7 +52,7 @@ public class FilterContainer extends BaseContainer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isHeldItemDisabled() {
|
||||
return true;
|
||||
protected int getDisabledSlotNumber() {
|
||||
return getPlayer().inventory.currentItem;
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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) {
|
||||
|
@@ -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) {
|
||||
|
@@ -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) {
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -37,4 +37,6 @@ public interface ICraftingMonitor {
|
||||
void onTabSelectionChanged(Optional<UUID> taskId);
|
||||
|
||||
void onTabPageChanged(int page);
|
||||
|
||||
int getSlotId();
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
|
@@ -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();
|
||||
|
@@ -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));
|
||||
|
@@ -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() {
|
||||
|
Reference in New Issue
Block a user