This should make wireless grids work again
This commit is contained in:
@@ -8,6 +8,7 @@ import refinedstorage.block.EnumGridType;
|
||||
import refinedstorage.container.slot.SlotGridCraftingResult;
|
||||
import refinedstorage.tile.grid.IGrid;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -79,9 +80,8 @@ public class ContainerGrid extends ContainerBase {
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
super.onContainerClosed(player);
|
||||
|
||||
// @TODO: Fix
|
||||
/*if (grid instanceof WirelessGrid && ((WirelessGrid) grid).getBoundTile() instanceof TileController) {
|
||||
grid.getController().onCloseWirelessGrid(player);
|
||||
}*/
|
||||
if (!player.worldObj.isRemote && grid instanceof WirelessGrid) {
|
||||
((WirelessGrid) grid).onClose(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -15,9 +15,9 @@ import refinedstorage.gui.sidebutton.SideButtonGridSortingDirection;
|
||||
import refinedstorage.gui.sidebutton.SideButtonGridSortingType;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.jei.PluginRefinedStorage;
|
||||
import refinedstorage.network.GridPullFlags;
|
||||
import refinedstorage.network.MessageGridCraftingClear;
|
||||
import refinedstorage.network.MessageGridCraftingPush;
|
||||
import refinedstorage.network.MessageGridStoragePull;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.grid.IGrid;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
@@ -260,15 +260,15 @@ public class GuiGrid extends GuiBase {
|
||||
int flags = 0;
|
||||
|
||||
if (clickedButton == 1) {
|
||||
flags |= MessageGridStoragePull.PULL_HALF;
|
||||
flags |= GridPullFlags.PULL_HALF;
|
||||
}
|
||||
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
flags |= MessageGridStoragePull.PULL_SHIFT;
|
||||
flags |= GridPullFlags.PULL_SHIFT;
|
||||
}
|
||||
|
||||
if (clickedButton == 2) {
|
||||
flags |= MessageGridStoragePull.PULL_ONE;
|
||||
flags |= GridPullFlags.PULL_ONE;
|
||||
}
|
||||
|
||||
grid.onItemPull(hoveringItemId, flags);
|
||||
|
@@ -49,24 +49,24 @@ public class GuiHandler implements IGuiHandler {
|
||||
@Override
|
||||
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if (ID == RefinedStorageGui.WIRELESS_GRID) {
|
||||
return getWirelessGridContainer(world, player, x);
|
||||
return getWirelessGridContainer(player, x);
|
||||
}
|
||||
|
||||
return getContainer(ID, player, world.getTileEntity(new BlockPos(x, y, z)));
|
||||
}
|
||||
|
||||
private WirelessGrid getWirelessGrid(World world, EntityPlayer player, int hand) {
|
||||
return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand), world);
|
||||
private WirelessGrid getWirelessGrid(EntityPlayer player, int hand) {
|
||||
return new WirelessGrid(player.getHeldItem(HandUtils.getHandById(hand)), HandUtils.getHandById(hand));
|
||||
}
|
||||
|
||||
private ContainerGrid getWirelessGridContainer(World world, EntityPlayer player, int hand) {
|
||||
WirelessGrid wirelessGrid = getWirelessGrid(world, player, hand);
|
||||
private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand) {
|
||||
WirelessGrid wirelessGrid = getWirelessGrid(player, hand);
|
||||
|
||||
return new ContainerGrid(player, wirelessGrid);
|
||||
}
|
||||
|
||||
private GuiGrid getWirelessGridGui(World world, EntityPlayer player, int hand) {
|
||||
WirelessGrid wirelessGrid = getWirelessGrid(world, player, hand);
|
||||
private GuiGrid getWirelessGridGui(EntityPlayer player, int hand) {
|
||||
WirelessGrid wirelessGrid = getWirelessGrid(player, hand);
|
||||
|
||||
return new GuiGrid(new ContainerGrid(player, wirelessGrid), wirelessGrid);
|
||||
}
|
||||
@@ -81,7 +81,7 @@ public class GuiHandler implements IGuiHandler {
|
||||
case RefinedStorageGui.GRID:
|
||||
return new GuiGrid((ContainerGrid) getContainer(ID, player, tile), (TileGrid) tile);
|
||||
case RefinedStorageGui.WIRELESS_GRID:
|
||||
return getWirelessGridGui(world, player, x);
|
||||
return getWirelessGridGui(player, x);
|
||||
case RefinedStorageGui.DISK_DRIVE:
|
||||
return new GuiStorage((ContainerStorage) getContainer(ID, player, tile), (IStorageGui) tile, "gui/disk_drive.png");
|
||||
case RefinedStorageGui.IMPORTER:
|
||||
|
19
src/main/java/refinedstorage/network/GridPullFlags.java
Executable file
19
src/main/java/refinedstorage/network/GridPullFlags.java
Executable file
@@ -0,0 +1,19 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
public class GridPullFlags {
|
||||
public static final int PULL_HALF = 1;
|
||||
public static final int PULL_ONE = 2;
|
||||
public static final int PULL_SHIFT = 4;
|
||||
|
||||
public static boolean isPullingHalf(int flags) {
|
||||
return (flags & PULL_HALF) == PULL_HALF;
|
||||
}
|
||||
|
||||
public static boolean isPullingOne(int flags) {
|
||||
return (flags & PULL_ONE) == PULL_ONE;
|
||||
}
|
||||
|
||||
public static boolean isPullingWithShift(int flags) {
|
||||
return (flags & PULL_SHIFT) == PULL_SHIFT;
|
||||
}
|
||||
}
|
@@ -2,20 +2,13 @@ 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.item.ItemWirelessGrid;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
public class MessageGridStoragePull extends MessageHandlerPlayerToServer<MessageGridStoragePull> implements IMessage {
|
||||
public static final int PULL_HALF = 1;
|
||||
public static final int PULL_ONE = 2;
|
||||
public static final int PULL_SHIFT = 4;
|
||||
|
||||
private int gridX;
|
||||
private int gridY;
|
||||
private int gridZ;
|
||||
@@ -51,18 +44,6 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message
|
||||
buf.writeInt(flags);
|
||||
}
|
||||
|
||||
public boolean isPullingHalf() {
|
||||
return (flags & PULL_HALF) == PULL_HALF;
|
||||
}
|
||||
|
||||
public boolean isPullingOne() {
|
||||
return (flags & PULL_ONE) == PULL_ONE;
|
||||
}
|
||||
|
||||
public boolean isPullingWithShift() {
|
||||
return (flags & PULL_SHIFT) == PULL_SHIFT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageGridStoragePull message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ));
|
||||
@@ -71,40 +52,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message
|
||||
TileController controller = ((TileGrid) tile).getController();
|
||||
|
||||
if (message.id < controller.getItemGroups().size()) {
|
||||
ItemGroup group = controller.getItemGroups().get(message.id);
|
||||
|
||||
int quantity = 64;
|
||||
|
||||
if (message.isPullingHalf() && group.getQuantity() > 1) {
|
||||
quantity = group.getQuantity() / 2;
|
||||
|
||||
if (quantity > 32) {
|
||||
quantity = 32;
|
||||
}
|
||||
} else if (message.isPullingOne()) {
|
||||
quantity = 1;
|
||||
} else if (message.isPullingWithShift()) {
|
||||
// NO OP, the quantity already set (64) is needed for shift
|
||||
}
|
||||
|
||||
if (quantity > group.getType().getItemStackLimit(group.toItemStack())) {
|
||||
quantity = group.getType().getItemStackLimit(group.toItemStack());
|
||||
}
|
||||
|
||||
ItemStack took = controller.take(group.copy(quantity).toItemStack());
|
||||
|
||||
if (took != null) {
|
||||
if (message.isPullingWithShift()) {
|
||||
if (!player.inventory.addItemStackToInventory(took.copy())) {
|
||||
controller.push(took);
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(took);
|
||||
player.updateHeldItem();
|
||||
}
|
||||
|
||||
controller.drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PULL);
|
||||
}
|
||||
controller.handleStoragePull(message.id, message.flags, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,12 +2,9 @@ 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.item.ItemWirelessGrid;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
public class MessageGridStoragePush extends MessageHandlerPlayerToServer<MessageGridStoragePush> implements IMessage {
|
||||
@@ -51,43 +48,7 @@ public class MessageGridStoragePush extends MessageHandlerPlayerToServer<Message
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ));
|
||||
|
||||
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
|
||||
TileController controller = ((TileGrid) tile).getController();
|
||||
|
||||
ItemStack stack;
|
||||
|
||||
if (message.playerSlot == -1) {
|
||||
stack = player.inventory.getItemStack().copy();
|
||||
|
||||
if (message.one) {
|
||||
stack.stackSize = 1;
|
||||
}
|
||||
} else {
|
||||
stack = player.inventory.getStackInSlot(message.playerSlot);
|
||||
}
|
||||
|
||||
if (stack != null) {
|
||||
boolean success = controller.push(stack);
|
||||
|
||||
if (success) {
|
||||
if (message.playerSlot == -1) {
|
||||
if (message.one) {
|
||||
player.inventory.getItemStack().stackSize--;
|
||||
|
||||
if (player.inventory.getItemStack().stackSize == 0) {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
|
||||
player.updateHeldItem();
|
||||
} else {
|
||||
player.inventory.setInventorySlotContents(message.playerSlot, null);
|
||||
}
|
||||
}
|
||||
|
||||
controller.drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PUSH);
|
||||
}
|
||||
((TileGrid) tile).getController().handleStoragePush(message.playerSlot, message.one, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -9,16 +9,16 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import refinedstorage.tile.INetworkTile;
|
||||
|
||||
public class MessageContainerUpdate implements IMessage, IMessageHandler<MessageContainerUpdate, IMessage> {
|
||||
public class MessageTileContainerUpdate implements IMessage, IMessageHandler<MessageTileContainerUpdate, IMessage> {
|
||||
private TileEntity tile;
|
||||
private int x;
|
||||
private int y;
|
||||
private int z;
|
||||
|
||||
public MessageContainerUpdate() {
|
||||
public MessageTileContainerUpdate() {
|
||||
}
|
||||
|
||||
public MessageContainerUpdate(TileEntity tile) {
|
||||
public MessageTileContainerUpdate(TileEntity tile) {
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class MessageContainerUpdate implements IMessage, IMessageHandler<Message
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageContainerUpdate message, MessageContext ctx) {
|
||||
public IMessage onMessage(MessageTileContainerUpdate message, MessageContext ctx) {
|
||||
return null;
|
||||
}
|
||||
}
|
48
src/main/java/refinedstorage/network/MessageWirelessGridItems.java
Executable file
48
src/main/java/refinedstorage/network/MessageWirelessGridItems.java
Executable file
@@ -0,0 +1,48 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MessageWirelessGridItems implements IMessage, IMessageHandler<MessageWirelessGridItems, IMessage> {
|
||||
private List<ItemGroup> itemGroups;
|
||||
|
||||
public MessageWirelessGridItems() {
|
||||
}
|
||||
|
||||
public MessageWirelessGridItems(List<ItemGroup> itemGroups) {
|
||||
this.itemGroups = itemGroups;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
int size = buf.readInt();
|
||||
|
||||
WirelessGrid.ITEM_GROUPS.clear();
|
||||
|
||||
WirelessGrid.LAST_ITEM_GROUP_UPDATE = System.currentTimeMillis();
|
||||
|
||||
for (int i = 0; i < size; ++i) {
|
||||
WirelessGrid.ITEM_GROUPS.add(new ItemGroup(buf));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(itemGroups.size());
|
||||
|
||||
for (ItemGroup group : itemGroups) {
|
||||
group.toBytes(buf, itemGroups.indexOf(group));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageWirelessGridItems message, MessageContext ctx) {
|
||||
return null;
|
||||
}
|
||||
}
|
58
src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java
Executable file
58
src/main/java/refinedstorage/network/MessageWirelessGridStoragePull.java
Executable file
@@ -0,0 +1,58 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePull> implements IMessage {
|
||||
private int controllerX;
|
||||
private int controllerY;
|
||||
private int controllerZ;
|
||||
private int id;
|
||||
private int flags;
|
||||
|
||||
public MessageWirelessGridStoragePull() {
|
||||
}
|
||||
|
||||
public MessageWirelessGridStoragePull(int controllerX, int controllerY, int controllerZ, int id, int flags) {
|
||||
this.controllerX = controllerX;
|
||||
this.controllerY = controllerY;
|
||||
this.controllerZ = controllerZ;
|
||||
this.id = id;
|
||||
this.flags = flags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
controllerX = buf.readInt();
|
||||
controllerY = buf.readInt();
|
||||
controllerZ = buf.readInt();
|
||||
id = buf.readInt();
|
||||
flags = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(controllerX);
|
||||
buf.writeInt(controllerY);
|
||||
buf.writeInt(controllerZ);
|
||||
buf.writeInt(id);
|
||||
buf.writeInt(flags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageWirelessGridStoragePull message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
|
||||
|
||||
if (tile instanceof TileController && ((TileController) tile).isActive()) {
|
||||
TileController controller = (TileController) tile;
|
||||
|
||||
if (message.id < controller.getItemGroups().size()) {
|
||||
controller.handleStoragePull(message.id, message.flags, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
54
src/main/java/refinedstorage/network/MessageWirelessGridStoragePush.java
Executable file
54
src/main/java/refinedstorage/network/MessageWirelessGridStoragePush.java
Executable file
@@ -0,0 +1,54 @@
|
||||
package refinedstorage.network;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePush> implements IMessage {
|
||||
private int controllerX;
|
||||
private int controllerY;
|
||||
private int controllerZ;
|
||||
private int playerSlot;
|
||||
private boolean one;
|
||||
|
||||
public MessageWirelessGridStoragePush() {
|
||||
}
|
||||
|
||||
public MessageWirelessGridStoragePush(int controllerX, int controllerY, int controllerZ, int playerSlot, boolean one) {
|
||||
this.controllerX = controllerX;
|
||||
this.controllerY = controllerY;
|
||||
this.controllerZ = controllerZ;
|
||||
this.playerSlot = playerSlot;
|
||||
this.one = one;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
controllerX = buf.readInt();
|
||||
controllerY = buf.readInt();
|
||||
controllerZ = buf.readInt();
|
||||
playerSlot = buf.readInt();
|
||||
one = buf.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(controllerX);
|
||||
buf.writeInt(controllerY);
|
||||
buf.writeInt(controllerZ);
|
||||
buf.writeInt(playerSlot);
|
||||
buf.writeBoolean(one);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageWirelessGridStoragePush message, EntityPlayerMP player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.controllerX, message.controllerY, message.controllerZ));
|
||||
|
||||
if (tile instanceof TileController && ((TileController) tile).isActive()) {
|
||||
((TileController) tile).handleStoragePush(message.playerSlot, message.one, player);
|
||||
}
|
||||
}
|
||||
}
|
@@ -34,6 +34,7 @@ import static refinedstorage.RefinedStorage.ID;
|
||||
public class CommonProxy {
|
||||
public void preInit(FMLPreInitializationEvent e) {
|
||||
RefinedStorage.NETWORK.registerMessage(MessageTileUpdate.class, MessageTileUpdate.class, 0, Side.CLIENT);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageTileContainerUpdate.class, MessageTileContainerUpdate.class, 15, Side.CLIENT);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageRedstoneModeUpdate.class, MessageRedstoneModeUpdate.class, 1, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridStoragePush.class, MessageGridStoragePush.class, 2, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridStoragePull.class, MessageGridStoragePull.class, 3, Side.SERVER);
|
||||
@@ -47,7 +48,9 @@ public class CommonProxy {
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingPush.class, MessageGridCraftingPush.class, 12, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, 13, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridSettingsUpdate.class, MessageWirelessGridSettingsUpdate.class, 14, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageContainerUpdate.class, MessageContainerUpdate.class, 15, Side.CLIENT);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridItems.class, MessageWirelessGridItems.class, 16, Side.CLIENT);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePush.class, MessageWirelessGridStoragePush.class, 17, Side.SERVER);
|
||||
RefinedStorage.NETWORK.registerMessage(MessageWirelessGridStoragePull.class, MessageWirelessGridStoragePull.class, 18, Side.SERVER);
|
||||
|
||||
NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler());
|
||||
|
||||
|
@@ -15,7 +15,7 @@ import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.network.MessageContainerUpdate;
|
||||
import refinedstorage.network.MessageTileContainerUpdate;
|
||||
import refinedstorage.network.MessageTileUpdate;
|
||||
|
||||
public abstract class TileBase extends TileEntity implements ITickable {
|
||||
@@ -39,7 +39,7 @@ public abstract class TileBase extends TileEntity implements ITickable {
|
||||
|
||||
for (EntityPlayer player : worldObj.playerEntities) {
|
||||
if (((INetworkTile) this).getContainer() == player.openContainer.getClass()) {
|
||||
RefinedStorage.NETWORK.sendTo(new MessageContainerUpdate(this), (EntityPlayerMP) player);
|
||||
RefinedStorage.NETWORK.sendTo(new MessageTileContainerUpdate(this), (EntityPlayerMP) player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ import cofh.api.energy.EnergyStorage;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@@ -21,6 +22,8 @@ import refinedstorage.block.BlockController;
|
||||
import refinedstorage.block.EnumControllerType;
|
||||
import refinedstorage.container.ContainerController;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.network.GridPullFlags;
|
||||
import refinedstorage.network.MessageWirelessGridItems;
|
||||
import refinedstorage.storage.IStorage;
|
||||
import refinedstorage.storage.IStorageProvider;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
@@ -132,6 +135,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
if (!InventoryUtils.compareStack(consumer.getWirelessGrid(), consumer.getPlayer().getHeldItem(consumer.getHand()))) {
|
||||
onCloseWirelessGrid(consumer.getPlayer());
|
||||
consumer.getPlayer().closeScreen();
|
||||
} else {
|
||||
RefinedStorage.NETWORK.sendTo(new MessageWirelessGridItems(itemGroups), (EntityPlayerMP) consumer.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -458,4 +463,79 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
|
||||
public Class<? extends Container> getContainer() {
|
||||
return ContainerController.class;
|
||||
}
|
||||
|
||||
public void handleStoragePull(int id, int flags, EntityPlayerMP player) {
|
||||
ItemGroup group = itemGroups.get(id);
|
||||
|
||||
int quantity = 64;
|
||||
|
||||
if (GridPullFlags.isPullingHalf(flags) && group.getQuantity() > 1) {
|
||||
quantity = group.getQuantity() / 2;
|
||||
|
||||
if (quantity > 32) {
|
||||
quantity = 32;
|
||||
}
|
||||
} else if (GridPullFlags.isPullingOne(flags)) {
|
||||
quantity = 1;
|
||||
} else if (GridPullFlags.isPullingWithShift(flags)) {
|
||||
// NO OP, the quantity already set (64) is needed for shift
|
||||
}
|
||||
|
||||
if (quantity > group.getType().getItemStackLimit(group.toItemStack())) {
|
||||
quantity = group.getType().getItemStackLimit(group.toItemStack());
|
||||
}
|
||||
|
||||
ItemStack took = take(group.copy(quantity).toItemStack());
|
||||
|
||||
if (took != null) {
|
||||
if (GridPullFlags.isPullingWithShift(flags)) {
|
||||
if (!player.inventory.addItemStackToInventory(took.copy())) {
|
||||
push(took);
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(took);
|
||||
player.updateHeldItem();
|
||||
}
|
||||
|
||||
drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PULL);
|
||||
}
|
||||
}
|
||||
|
||||
public void handleStoragePush(int playerSlot, boolean one, EntityPlayerMP player) {
|
||||
ItemStack stack;
|
||||
|
||||
if (playerSlot == -1) {
|
||||
stack = player.inventory.getItemStack().copy();
|
||||
|
||||
if (one) {
|
||||
stack.stackSize = 1;
|
||||
}
|
||||
} else {
|
||||
stack = player.inventory.getStackInSlot(playerSlot);
|
||||
}
|
||||
|
||||
if (stack != null) {
|
||||
boolean success = push(stack);
|
||||
|
||||
if (success) {
|
||||
if (playerSlot == -1) {
|
||||
if (one) {
|
||||
player.inventory.getItemStack().stackSize--;
|
||||
|
||||
if (player.inventory.getItemStack().stackSize == 0) {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
} else {
|
||||
player.inventory.setItemStack(null);
|
||||
}
|
||||
|
||||
player.updateHeldItem();
|
||||
} else {
|
||||
player.inventory.setInventorySlotContents(playerSlot, null);
|
||||
}
|
||||
}
|
||||
|
||||
drainEnergyFromWirelessGrid(player, ItemWirelessGrid.USAGE_PUSH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -87,7 +87,6 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed
|
||||
connected = buf.readBoolean();
|
||||
|
||||
if (lastConnected != connected) {
|
||||
// @TODO: Am I using the correct flags?
|
||||
worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 2 | 4);
|
||||
}
|
||||
}
|
||||
|
@@ -1,31 +1,37 @@
|
||||
package refinedstorage.tile.grid;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.block.EnumGridType;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.network.MessageWirelessGridSettingsUpdate;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePull;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePush;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.util.HandUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// @TODO: Fix this as well
|
||||
public class WirelessGrid implements IGrid {
|
||||
public static long LAST_ITEM_GROUP_UPDATE = 0;
|
||||
public static List<ItemGroup> ITEM_GROUPS = new ArrayList<ItemGroup>();
|
||||
|
||||
private ItemStack stack;
|
||||
private EnumHand hand;
|
||||
private World world;
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
private int searchBoxMode;
|
||||
|
||||
public WirelessGrid(ItemStack stack, EnumHand hand, World world) {
|
||||
public WirelessGrid(ItemStack stack, EnumHand hand) {
|
||||
this.stack = stack;
|
||||
this.hand = hand;
|
||||
this.world = world;
|
||||
this.sortingType = ItemWirelessGrid.getSortingType(stack);
|
||||
this.sortingDirection = ItemWirelessGrid.getSortingDirection(stack);
|
||||
this.searchBoxMode = ItemWirelessGrid.getSearchBoxMode(stack);
|
||||
@@ -38,17 +44,25 @@ public class WirelessGrid implements IGrid {
|
||||
|
||||
@Override
|
||||
public List<ItemGroup> getItemGroups() {
|
||||
return null;
|
||||
return ITEM_GROUPS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemPush(int playerSlot, boolean one) {
|
||||
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePush(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), playerSlot, one));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemPull(int id, int flags) {
|
||||
RefinedStorage.NETWORK.sendToServer(new MessageWirelessGridStoragePull(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack), id, flags));
|
||||
}
|
||||
|
||||
public void onClose(EntityPlayer player) {
|
||||
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack)));
|
||||
|
||||
if (tile instanceof TileController) {
|
||||
((TileController) tile).onCloseWirelessGrid(player);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -94,6 +108,6 @@ public class WirelessGrid implements IGrid {
|
||||
|
||||
@Override
|
||||
public boolean isConnected() {
|
||||
return false;
|
||||
return System.currentTimeMillis() - LAST_ITEM_GROUP_UPDATE < 1000;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user