Fixes #69 "Unable to triple click items into a grid"
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Refined Storage Changelog
|
||||
|
||||
### 0.7.13
|
||||
- Fixed not being able to triple click in grid
|
||||
|
||||
### 0.7.12
|
||||
**Bugfixes**
|
||||
- Fixed creative storage blocks and disks not working
|
||||
|
@@ -14,17 +14,12 @@ import refinedstorage.tile.grid.IGrid;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ContainerGrid extends ContainerBase {
|
||||
private List<SlotGridCrafting> craftingSlots = new ArrayList<SlotGridCrafting>();
|
||||
private SlotGridCraftingResult craftingResultSlot;
|
||||
|
||||
private SlotDisabled patternResultSlot;
|
||||
|
||||
private IGrid grid;
|
||||
|
||||
private SlotGridCraftingResult craftingResultSlot;
|
||||
private SlotDisabled patternResultSlot;
|
||||
|
||||
public ContainerGrid(EntityPlayer player, IGrid grid) {
|
||||
super(player);
|
||||
|
||||
@@ -37,11 +32,7 @@ public class ContainerGrid extends ContainerBase {
|
||||
int y = 106;
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
SlotGridCrafting slot = new SlotGridCrafting(((TileGrid) grid).getMatrix(), i, x, y);
|
||||
|
||||
craftingSlots.add(slot);
|
||||
|
||||
addSlotToContainer(slot);
|
||||
addSlotToContainer(new SlotGridCrafting(((TileGrid) grid).getMatrix(), i, x, y));
|
||||
|
||||
x += 18;
|
||||
|
||||
@@ -78,15 +69,6 @@ public class ContainerGrid extends ContainerBase {
|
||||
return grid;
|
||||
}
|
||||
|
||||
public List<SlotGridCrafting> getCraftingSlots() {
|
||||
return craftingSlots;
|
||||
}
|
||||
|
||||
/* I'm overriding detectAndSendChanges() here because the default check
|
||||
checks if the item stacks are equal, and if so, then it will only send the new slot contents.
|
||||
The thing is though, when the grid replaces the slots with new items from the storage
|
||||
system, the item stack replaced WILL be the same and thus changes will not be sent!
|
||||
That is why we override here to get rid of the check and ALWAYS send slot changes. */
|
||||
@Override
|
||||
public void detectAndSendChanges() {
|
||||
for (int i = 0; i < inventorySlots.size(); ++i) {
|
||||
@@ -143,4 +125,19 @@ public class ContainerGrid extends ContainerBase {
|
||||
|
||||
return super.canMergeSlot(stack, slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {
|
||||
if (!player.worldObj.isRemote) {
|
||||
ItemStack stack = inventorySlots.get(slotIndex).getStack();
|
||||
|
||||
if (stack != null) {
|
||||
inventorySlots.get(slotIndex).putStack(grid.onItemPush(player, stack));
|
||||
|
||||
detectAndSendChanges();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -6,7 +6,6 @@ import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
@@ -20,7 +19,6 @@ import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.jei.RefinedStorageJEIPlugin;
|
||||
import refinedstorage.network.GridPullFlags;
|
||||
import refinedstorage.network.MessageGridCraftingClear;
|
||||
import refinedstorage.network.MessageGridCraftingPush;
|
||||
import refinedstorage.network.MessageGridPatternCreate;
|
||||
import refinedstorage.tile.ClientItem;
|
||||
import refinedstorage.tile.grid.IGrid;
|
||||
@@ -331,9 +329,15 @@ public class GuiGrid extends GuiBase {
|
||||
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridPatternCreate(gridPos.getX(), gridPos.getY(), gridPos.getZ()));
|
||||
} else if (grid.isConnected()) {
|
||||
if (clickedClear) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingClear((TileGrid) grid));
|
||||
}
|
||||
|
||||
if (isHoveringOverSlotArea(mouseX - guiLeft, mouseY - guiTop) && container.getPlayer().inventory.getItemStack() != null && (clickedButton == 0 || clickedButton == 1)) {
|
||||
grid.onItemPush(-1, clickedButton == 1);
|
||||
} else if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) {
|
||||
grid.onHeldItemPush(clickedButton == 1);
|
||||
}
|
||||
|
||||
if (isHoveringOverItemInSlot() && container.getPlayer().inventory.getItemStack() == null) {
|
||||
if (items.get(slotNumber).getStack().stackSize == 0 || (GuiScreen.isShiftKeyDown() && GuiScreen.isCtrlKeyDown())) {
|
||||
FMLCommonHandler.instance().showGuiScreen(new GuiCraftingSettings(this, slotId));
|
||||
} else {
|
||||
@@ -353,26 +357,6 @@ public class GuiGrid extends GuiBase {
|
||||
|
||||
grid.onItemPull(slotId, flags);
|
||||
}
|
||||
} else if (clickedClear) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingClear((TileGrid) grid));
|
||||
} else {
|
||||
for (Slot slot : container.getPlayerInventorySlots()) {
|
||||
if (inBounds(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, mouseX - guiLeft, mouseY - guiTop)) {
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
grid.onItemPush(slot.slotNumber, clickedButton == 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (grid.getType() == EnumGridType.CRAFTING) {
|
||||
for (Slot slot : container.getCraftingSlots()) {
|
||||
if (inBounds(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, mouseX - guiLeft, mouseY - guiTop)) {
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridCraftingPush((TileGrid) grid, slot.getSlotIndex()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -64,7 +64,7 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
|
||||
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) {
|
||||
return new WirelessGrid(player.getHeldItem(RefinedStorageUtils.getHandById(hand)), RefinedStorageUtils.getHandById(hand));
|
||||
return new WirelessGrid(player.worldObj, player.getHeldItem(RefinedStorageUtils.getHandById(hand)), RefinedStorageUtils.getHandById(hand));
|
||||
}
|
||||
|
||||
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
|
||||
|
@@ -47,7 +47,7 @@ public class MessageCraftingMonitorCancel extends MessageHandlerPlayerToServer<M
|
||||
TileCraftingMonitor monitor = (TileCraftingMonitor) tile;
|
||||
|
||||
if (monitor.isConnected()) {
|
||||
monitor.getController().getStorageHandler().handleCraftingCancel(message.id);
|
||||
monitor.getController().getStorageHandler().onCraftingCancelRequested(message.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,60 +0,0 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.block.EnumGridType;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
public class MessageGridCraftingPush extends MessageHandlerPlayerToServer<MessageGridCraftingPush> implements IMessage {
|
||||
private int x;
|
||||
private int y;
|
||||
private int z;
|
||||
private int craftingSlot;
|
||||
|
||||
public MessageGridCraftingPush() {
|
||||
}
|
||||
|
||||
public MessageGridCraftingPush(TileGrid grid, int craftingSlot) {
|
||||
this.x = grid.getPos().getX();
|
||||
this.y = grid.getPos().getY();
|
||||
this.z = grid.getPos().getZ();
|
||||
this.craftingSlot = craftingSlot;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
x = buf.readInt();
|
||||
y = buf.readInt();
|
||||
z = buf.readInt();
|
||||
craftingSlot = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(x);
|
||||
buf.writeInt(y);
|
||||
buf.writeInt(z);
|
||||
buf.writeInt(craftingSlot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageGridCraftingPush message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
|
||||
|
||||
if (tile instanceof TileGrid) {
|
||||
TileGrid grid = (TileGrid) tile;
|
||||
|
||||
if (grid.isConnected() && grid.getType() == EnumGridType.CRAFTING && message.craftingSlot >= 0 && message.craftingSlot < grid.getMatrix().getSizeInventory()) {
|
||||
ItemStack stack = grid.getMatrix().getStackInSlot(message.craftingSlot);
|
||||
|
||||
if (stack != null) {
|
||||
grid.getMatrix().setInventorySlotContents(message.craftingSlot, grid.getController().push(stack, stack.stackSize, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -48,7 +48,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer<Messa
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
|
||||
|
||||
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
|
||||
((TileGrid) tile).getController().getStorageHandler().handleCraftingRequest(message.id, message.quantity);
|
||||
((TileGrid) tile).getController().getStorageHandler().onCraftingRequested(message.id, message.quantity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,21 +7,19 @@ import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
public class MessageGridStoragePush extends MessageHandlerPlayerToServer<MessageGridStoragePush> implements IMessage {
|
||||
public class MessageGridHeldItemPush extends MessageHandlerPlayerToServer<MessageGridHeldItemPush> implements IMessage {
|
||||
private int x;
|
||||
private int y;
|
||||
private int z;
|
||||
private int playerSlot;
|
||||
private boolean one;
|
||||
|
||||
public MessageGridStoragePush() {
|
||||
public MessageGridHeldItemPush() {
|
||||
}
|
||||
|
||||
public MessageGridStoragePush(int x, int y, int z, int playerSlot, boolean one) {
|
||||
public MessageGridHeldItemPush(int x, int y, int z, boolean one) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
this.playerSlot = playerSlot;
|
||||
this.one = one;
|
||||
}
|
||||
|
||||
@@ -30,7 +28,6 @@ public class MessageGridStoragePush extends MessageHandlerPlayerToServer<Message
|
||||
x = buf.readInt();
|
||||
y = buf.readInt();
|
||||
z = buf.readInt();
|
||||
playerSlot = buf.readInt();
|
||||
one = buf.readBoolean();
|
||||
}
|
||||
|
||||
@@ -39,16 +36,15 @@ public class MessageGridStoragePush extends MessageHandlerPlayerToServer<Message
|
||||
buf.writeInt(x);
|
||||
buf.writeInt(y);
|
||||
buf.writeInt(z);
|
||||
buf.writeInt(playerSlot);
|
||||
buf.writeBoolean(one);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageGridStoragePush message, EntityPlayerMP player) {
|
||||
public void handle(MessageGridHeldItemPush message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
|
||||
|
||||
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
|
||||
((TileGrid) tile).getController().getStorageHandler().handlePush(message.playerSlot, message.one, player);
|
||||
((TileGrid) tile).getController().getStorageHandler().onHeldItemPush(message.one, player);
|
||||
}
|
||||
}
|
||||
}
|
@@ -48,7 +48,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z));
|
||||
|
||||
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
|
||||
((TileGrid) tile).getController().getStorageHandler().handlePull(message.id, message.flags, player);
|
||||
((TileGrid) tile).getController().getStorageHandler().onPull(message.id, message.flags, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -48,7 +48,7 @@ public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServ
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
|
||||
|
||||
if (tile instanceof TileController && ((TileController) tile).canRun()) {
|
||||
((TileController) tile).getStorageHandler().handleCraftingRequest(message.id, message.quantity);
|
||||
((TileController) tile).getStorageHandler().onCraftingRequested(message.id, message.quantity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,21 +7,19 @@ import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePush> implements IMessage {
|
||||
public class MessageWirelessGridHeldItemPush extends MessageHandlerPlayerToServer<MessageWirelessGridHeldItemPush> implements IMessage {
|
||||
private int controllerX;
|
||||
private int controllerY;
|
||||
private int controllerZ;
|
||||
private int playerSlot;
|
||||
private boolean one;
|
||||
|
||||
public MessageWirelessGridStoragePush() {
|
||||
public MessageWirelessGridHeldItemPush() {
|
||||
}
|
||||
|
||||
public MessageWirelessGridStoragePush(int controllerX, int controllerY, int controllerZ, int playerSlot, boolean one) {
|
||||
public MessageWirelessGridHeldItemPush(int controllerX, int controllerY, int controllerZ, boolean one) {
|
||||
this.controllerX = controllerX;
|
||||
this.controllerY = controllerY;
|
||||
this.controllerZ = controllerZ;
|
||||
this.playerSlot = playerSlot;
|
||||
this.one = one;
|
||||
}
|
||||
|
||||
@@ -30,7 +28,6 @@ public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer
|
||||
controllerX = buf.readInt();
|
||||
controllerY = buf.readInt();
|
||||
controllerZ = buf.readInt();
|
||||
playerSlot = buf.readInt();
|
||||
one = buf.readBoolean();
|
||||
}
|
||||
|
||||
@@ -39,16 +36,15 @@ public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer
|
||||
buf.writeInt(controllerX);
|
||||
buf.writeInt(controllerY);
|
||||
buf.writeInt(controllerZ);
|
||||
buf.writeInt(playerSlot);
|
||||
buf.writeBoolean(one);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageWirelessGridStoragePush message, EntityPlayerMP player) {
|
||||
public void handle(MessageWirelessGridHeldItemPush message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
|
||||
|
||||
if (tile instanceof TileController && ((TileController) tile).canRun()) {
|
||||
((TileController) tile).getStorageHandler().handlePush(message.playerSlot, message.one, player);
|
||||
((TileController) tile).getStorageHandler().onHeldItemPush(message.one, player);
|
||||
}
|
||||
}
|
||||
}
|
@@ -48,7 +48,7 @@ public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
|
||||
|
||||
if (tile instanceof TileController && ((TileController) tile).canRun()) {
|
||||
((TileController) tile).getStorageHandler().handlePull(message.id, message.flags, player);
|
||||
((TileController) tile).getStorageHandler().onPull(message.id, message.flags, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -43,7 +43,7 @@ public class CommonProxy {
|
||||
|
||||
RefinedStorage.NETWORK.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, id++, Side.CLIENT);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridStoragePush.class, MessageGridStoragePush.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridHeldItemPush.class, MessageGridHeldItemPush.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridStoragePull.class, MessageGridStoragePull.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageCompareUpdate.class, MessageCompareUpdate.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageModeToggle.class, MessageModeToggle.class, id++, Side.SERVER);
|
||||
@@ -52,10 +52,9 @@ public class CommonProxy {
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessagePriorityUpdate.class, MessagePriorityUpdate.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridSettingsUpdate.class, MessageGridSettingsUpdate.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingPush.class, MessageGridCraftingPush.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePush.class, MessageWirelessGridStoragePush.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridHeldItemPush.class, MessageWirelessGridHeldItemPush.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePull.class, MessageWirelessGridStoragePull.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingShift.class, MessageGridCraftingShift.class, id++, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingStart.class, MessageGridCraftingStart.class, id++, Side.SERVER);
|
||||
|
@@ -18,7 +18,7 @@ public class StorageHandler {
|
||||
this.controller = controller;
|
||||
}
|
||||
|
||||
public void handlePull(int id, int flags, EntityPlayerMP player) {
|
||||
public void onPull(int id, int flags, EntityPlayerMP player) {
|
||||
if (player.inventory.getItemStack() != null) {
|
||||
return;
|
||||
}
|
||||
@@ -61,45 +61,34 @@ public class StorageHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public void handlePush(int playerSlot, boolean one, EntityPlayerMP player) {
|
||||
ItemStack stack;
|
||||
public void onHeldItemPush(boolean one, EntityPlayerMP player) {
|
||||
if (player.inventory.getItemStack() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (playerSlot == -1) {
|
||||
stack = player.inventory.getItemStack().copy();
|
||||
ItemStack stack = player.inventory.getItemStack();
|
||||
int size = one ? 1 : stack.stackSize;
|
||||
|
||||
if (one) {
|
||||
stack.stackSize = 1;
|
||||
if (one) {
|
||||
if (controller.push(stack, size, true) == null) {
|
||||
controller.push(stack, size, false);
|
||||
|
||||
stack.stackSize -= size;
|
||||
|
||||
if (stack.stackSize == 0) {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
stack = player.inventory.getStackInSlot(playerSlot);
|
||||
player.inventory.setItemStack(controller.push(stack, size, false));
|
||||
}
|
||||
|
||||
if (stack != null) {
|
||||
if (playerSlot == -1) {
|
||||
if (one) {
|
||||
if (controller.push(stack, stack.stackSize, true) == null) {
|
||||
controller.push(stack, stack.stackSize, false);
|
||||
player.updateHeldItem();
|
||||
|
||||
player.inventory.getItemStack().stackSize--;
|
||||
|
||||
if (player.inventory.getItemStack().stackSize == 0) {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(controller.push(stack, stack.stackSize, false));
|
||||
}
|
||||
|
||||
player.updateHeldItem();
|
||||
} else {
|
||||
player.inventory.setInventorySlotContents(playerSlot, controller.push(stack, stack.stackSize, false));
|
||||
}
|
||||
|
||||
controller.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH);
|
||||
}
|
||||
controller.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH);
|
||||
}
|
||||
|
||||
public void handleCraftingRequest(int id, int quantity) {
|
||||
public void onCraftingRequested(int id, int quantity) {
|
||||
if (id >= 0 && id < controller.getItems().size() && quantity > 0 && quantity <= MAX_CRAFTING_PER_REQUEST) {
|
||||
ItemStack requested = controller.getItems().get(id);
|
||||
|
||||
@@ -127,7 +116,7 @@ public class StorageHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public void handleCraftingCancel(int id) {
|
||||
public void onCraftingCancelRequested(int id) {
|
||||
if (id >= 0 && id < controller.getCraftingTasks().size()) {
|
||||
controller.cancelCraftingTask(controller.getCraftingTasks().get(id));
|
||||
} else if (id == -1) {
|
||||
|
@@ -1,5 +1,7 @@
|
||||
package refinedstorage.tile.grid;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import refinedstorage.block.EnumGridType;
|
||||
import refinedstorage.tile.ClientItem;
|
||||
@@ -16,7 +18,9 @@ public interface IGrid {
|
||||
|
||||
BlockPos getControllerPos();
|
||||
|
||||
void onItemPush(int playerSlot, boolean one);
|
||||
ItemStack onItemPush(EntityPlayer player, ItemStack stack);
|
||||
|
||||
void onHeldItemPush(boolean one);
|
||||
|
||||
void onItemPull(int id, int flags);
|
||||
|
||||
|
@@ -21,9 +21,9 @@ import refinedstorage.inventory.BasicItemHandler;
|
||||
import refinedstorage.inventory.BasicItemValidator;
|
||||
import refinedstorage.item.ItemPattern;
|
||||
import refinedstorage.network.MessageGridCraftingStart;
|
||||
import refinedstorage.network.MessageGridHeldItemPush;
|
||||
import refinedstorage.network.MessageGridSettingsUpdate;
|
||||
import refinedstorage.network.MessageGridStoragePull;
|
||||
import refinedstorage.network.MessageGridStoragePush;
|
||||
import refinedstorage.tile.ClientItem;
|
||||
import refinedstorage.tile.TileMachine;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
@@ -110,8 +110,13 @@ public class TileGrid extends TileMachine implements IGrid {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemPush(int playerSlot, boolean one) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridStoragePush(getPos().getX(), getPos().getY(), getPos().getZ(), playerSlot, one));
|
||||
public ItemStack onItemPush(EntityPlayer player, ItemStack stack) {
|
||||
return isConnected() ? controller.push(stack, stack.stackSize, false) : stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHeldItemPush(boolean one) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageGridHeldItemPush(getPos().getX(), getPos().getY(), getPos().getZ(), one));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -5,14 +5,15 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.block.EnumGridType;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.network.MessageWirelessGridCraftingStart;
|
||||
import refinedstorage.network.MessageWirelessGridHeldItemPush;
|
||||
import refinedstorage.network.MessageWirelessGridSettingsUpdate;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePull;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePush;
|
||||
import refinedstorage.tile.ClientItem;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
@@ -22,6 +23,7 @@ import java.util.List;
|
||||
|
||||
public class WirelessGrid implements IGrid {
|
||||
private EnumHand hand;
|
||||
private World world;
|
||||
private BlockPos controllerPos;
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
@@ -29,8 +31,9 @@ public class WirelessGrid implements IGrid {
|
||||
private List<ClientItem> items = new ArrayList<ClientItem>();
|
||||
private long lastUpdate;
|
||||
|
||||
public WirelessGrid(ItemStack stack, EnumHand hand) {
|
||||
public WirelessGrid(World world, ItemStack stack, EnumHand hand) {
|
||||
this.hand = hand;
|
||||
this.world = world;
|
||||
this.controllerPos = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
|
||||
this.sortingType = ItemWirelessGrid.getSortingType(stack);
|
||||
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
|
||||
@@ -59,8 +62,25 @@ public class WirelessGrid implements IGrid {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemPush(int playerSlot, boolean one) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePush(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), playerSlot, one));
|
||||
public ItemStack onItemPush(EntityPlayer player, ItemStack stack) {
|
||||
TileEntity tile = world.getTileEntity(controllerPos);
|
||||
|
||||
if (tile instanceof TileController) {
|
||||
TileController controller = (TileController) tile;
|
||||
|
||||
if (controller.canRun()) {
|
||||
controller.getWirelessGridHandler().drainEnergy(player, ItemWirelessGrid.USAGE_PUSH);
|
||||
|
||||
return controller.push(stack, stack.stackSize, false);
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHeldItemPush(boolean one) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridHeldItemPush(controllerPos.getX(), controllerPos.getY(), controllerPos.getZ(), one));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user