diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java index 1ed1b62cc..2ce15a507 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java @@ -72,6 +72,13 @@ public final class RSConfig { public int wirelessGridInsertUsage; //endregion + //region Wireless Fluid Grid + public boolean wirelessFluidGridUsesEnergy; + public int wirelessFluidGridOpenUsage; + public int wirelessFluidGridExtractUsage; + public int wirelessFluidGridInsertUsage; + //endregion + //region Wireless Crafting Monitor public boolean wirelessCraftingMonitorUsesEnergy; public int wirelessCraftingMonitorOpenUsage; @@ -95,6 +102,7 @@ public final class RSConfig { private static final String GRID = "grid"; private static final String WIRELESS_TRANSMITTER = "wirelessTransmitter"; private static final String WIRELESS_GRID = "wirelessGrid"; + private static final String WIRELESS_FLUID_GRID = "wirelessFluidGrid"; private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor"; private static final String UPGRADES = "upgrades"; //endregion @@ -177,6 +185,13 @@ public final class RSConfig { wirelessGridExtractUsage = config.getInt("extract", WIRELESS_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to extract items"); //endregion + //region Wireless Grid + wirelessFluidGridUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_FLUID_GRID, true, "Whether the Fluid Wireless Grid uses energy"); + wirelessFluidGridOpenUsage = config.getInt("open", WIRELESS_FLUID_GRID, 30, 0, Integer.MAX_VALUE, "The energy used by the Fluid Wireless Grid to open"); + wirelessFluidGridInsertUsage = config.getInt("insert", WIRELESS_FLUID_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Fluid Grid to insert items"); + wirelessFluidGridExtractUsage = config.getInt("extract", WIRELESS_FLUID_GRID, 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Fluid Grid to extract items"); + //endregion + //region Wireless Crafting Monitor wirelessCraftingMonitorUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_CRAFTING_MONITOR, true, "Whether the Wireless Crafting Monitor uses energy"); wirelessCraftingMonitorOpenUsage = config.getInt("open", WIRELESS_CRAFTING_MONITOR, 35, 0, Integer.MAX_VALUE, "The energy used by the Wireless Crafting Monitor to open"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java index b99b0deb2..46c5063d6 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSItems.java @@ -5,6 +5,8 @@ import com.raoulvdberge.refinedstorage.item.*; public final class RSItems { public static final ItemStorageDisk STORAGE_DISK = new ItemStorageDisk(); public static final ItemWirelessGrid WIRELESS_GRID = new ItemWirelessGrid(); + public static final ItemWirelessFluidGrid WIRELESS_FLUID_GRID = new ItemWirelessFluidGrid(); + public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = new ItemWirelessCraftingMonitor(); public static final ItemQuartzEnrichedIron QUARTZ_ENRICHED_IRON = new ItemQuartzEnrichedIron(); public static final ItemCore CORE = new ItemCore(); public static final ItemSilicon SILICON = new ItemSilicon(); @@ -18,6 +20,5 @@ public final class RSItems { public static final ItemFluidStorageDisk FLUID_STORAGE_DISK = new ItemFluidStorageDisk(); public static final ItemFluidStoragePart FLUID_STORAGE_PART = new ItemFluidStoragePart(); public static final ItemWrench WRENCH = new ItemWrench(); - public static final ItemWirelessCraftingMonitor WIRELESS_CRAFTING_MONITOR = new ItemWirelessCraftingMonitor(); public static final ItemSecurityCard SECURITY_CARD = new ItemSecurityCard(); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java index bc3d7dce4..c0a266c7f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessCraftingMonitor.java @@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.security.Permission; -import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; +import com.raoulvdberge.refinedstorage.item.ItemNetworkItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -34,7 +34,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem { @Override public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { - if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) { + if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage) { return false; } @@ -54,7 +54,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem { } public void drainEnergy(int energy) { - if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemWirelessCraftingMonitor.TYPE_CREATIVE) { + if (RS.INSTANCE.config.wirelessCraftingMonitorUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE) { IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null); energyStorage.extractEnergy(energy, false); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java new file mode 100755 index 000000000..a51daaae4 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessFluidGrid.java @@ -0,0 +1,71 @@ +package com.raoulvdberge.refinedstorage.apiimpl.network.item; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSGui; +import com.raoulvdberge.refinedstorage.RSUtils; +import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.item.ItemNetworkItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumHand; +import net.minecraft.world.World; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; + +public class NetworkItemWirelessFluidGrid implements INetworkItem { + public static final int GRID_TYPE = 1; + + private INetworkItemHandler handler; + private EntityPlayer player; + private ItemStack stack; + + public NetworkItemWirelessFluidGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) { + this.handler = handler; + this.player = player; + this.stack = stack; + } + + @Override + public EntityPlayer getPlayer() { + return player; + } + + @Override + public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { + if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessFluidGridOpenUsage) { + return false; + } + + if (!network.getSecurityManager().hasPermission(Permission.MODIFY, player)) { + RSUtils.sendNoPermissionMessage(player); + + return false; + } + + player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), GRID_TYPE); + + network.sendFluidStorageToClient((EntityPlayerMP) player); + + drainEnergy(RS.INSTANCE.config.wirelessFluidGridOpenUsage); + + return true; + } + + public void drainEnergy(int energy) { + if (RS.INSTANCE.config.wirelessFluidGridUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE) { + IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null); + + energyStorage.extractEnergy(energy, false); + + if (energyStorage.getEnergyStored() <= 0) { + handler.onClose(player); + + player.closeScreen(); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java index 731352268..6c9f96fda 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/item/NetworkItemWirelessGrid.java @@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.api.network.INetworkMaster; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.security.Permission; -import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; +import com.raoulvdberge.refinedstorage.item.ItemNetworkItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -17,6 +17,8 @@ import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; public class NetworkItemWirelessGrid implements INetworkItem { + public static final int GRID_TYPE = 0; + private INetworkItemHandler handler; private EntityPlayer player; private ItemStack stack; @@ -34,7 +36,7 @@ public class NetworkItemWirelessGrid implements INetworkItem { @Override public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) { - if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessGridOpenUsage) { + if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE && stack.getCapability(CapabilityEnergy.ENERGY, null).getEnergyStored() <= RS.INSTANCE.config.wirelessGridOpenUsage) { return false; } @@ -44,7 +46,7 @@ public class NetworkItemWirelessGrid implements INetworkItem { return false; } - player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), 0); + player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.getEntityWorld(), hand.ordinal(), controllerWorld.provider.getDimension(), GRID_TYPE); network.sendItemStorageToClient((EntityPlayerMP) player); @@ -54,7 +56,7 @@ public class NetworkItemWirelessGrid implements INetworkItem { } public void drainEnergy(int energy) { - if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) { + if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemNetworkItem.TYPE_CREATIVE) { IEnergyStorage energyStorage = stack.getCapability(CapabilityEnergy.ENERGY, null); energyStorage.extractEnergy(energy, false); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java index f951bd18f..dc2e70473 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiCraftingMonitor.java @@ -107,7 +107,7 @@ public class GuiCraftingMonitor extends GuiBase { @Override public void drawForeground(int mouseX, int mouseY) { - drawString(7, 7, t("gui.refinedstorage:crafting_monitor")); + drawString(7, 7, t(craftingMonitor.getGuiTitle())); drawString(7, 137, t("container.inventory")); int item = scrollbar.getOffset(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java index a5d66a259..0b0c56499 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiHandler.java @@ -1,6 +1,8 @@ package com.raoulvdberge.refinedstorage.gui; import com.raoulvdberge.refinedstorage.RSGui; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid; import com.raoulvdberge.refinedstorage.container.*; import com.raoulvdberge.refinedstorage.gui.grid.GridDisplayDummy; import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; @@ -8,10 +10,13 @@ import com.raoulvdberge.refinedstorage.tile.*; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.externalstorage.TileExternalStorage; +import com.raoulvdberge.refinedstorage.tile.grid.IGrid; import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; +import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid; import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; @@ -75,7 +80,7 @@ public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID == RSGui.WIRELESS_GRID) { - return getWirelessGridContainer(player, x, y); + return getWirelessGridContainer(player, x, y, z); } else if (ID == RSGui.GRID_FILTER) { return getGridFilterContainer(player, x); } else if (ID == RSGui.WIRELESS_CRAFTING_MONITOR) { @@ -97,7 +102,7 @@ public class GuiHandler implements IGuiHandler { gui.inventorySlots = new ContainerGrid((TileGrid) tile, gui, player); return gui; case RSGui.WIRELESS_GRID: - return getWirelessGridGui(player, x, y); + return getWirelessGridGui(player, x, y, z); case RSGui.DISK_DRIVE: return new GuiStorage((ContainerDiskDrive) getContainer(ID, player, tile), (IStorageGui) tile, "gui/disk_drive.png"); case RSGui.IMPORTER: @@ -149,20 +154,29 @@ public class GuiHandler implements IGuiHandler { } } - private WirelessGrid getWirelessGrid(EntityPlayer player, int hand, int controllerDimension) { - return new WirelessGrid(controllerDimension, player.getHeldItem(EnumHand.values()[hand])); + private IGrid getWirelessGrid(EntityPlayer player, int hand, int controllerDimension, int type) { + ItemStack stack = player.getHeldItem(EnumHand.values()[hand]); + + switch (type) { + case NetworkItemWirelessGrid.GRID_TYPE: + return new WirelessGrid(controllerDimension, stack); + case NetworkItemWirelessFluidGrid.GRID_TYPE: + return new WirelessFluidGrid(controllerDimension, stack); + default: + return null; + } } - private GuiGrid getWirelessGridGui(EntityPlayer player, int hand, int controllerDimension) { - WirelessGrid grid = getWirelessGrid(player, hand, controllerDimension); + private GuiGrid getWirelessGridGui(EntityPlayer player, int hand, int controllerDimension, int type) { + IGrid grid = getWirelessGrid(player, hand, controllerDimension, type); GuiGrid gui = new GuiGrid(null, grid); gui.inventorySlots = new ContainerGrid(grid, gui, player); return gui; } - private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand, int controllerDimension) { - return new ContainerGrid(getWirelessGrid(player, hand, controllerDimension), new GridDisplayDummy(), player); + private ContainerGrid getWirelessGridContainer(EntityPlayer player, int hand, int controllerDimension, int type) { + return new ContainerGrid(getWirelessGrid(player, hand, controllerDimension, type), new GridDisplayDummy(), player); } private WirelessCraftingMonitor getWirelessCraftingMonitor(EntityPlayer player, int hand, int controllerDimension) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java new file mode 100755 index 000000000..aba91da4a --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemWirelessFluidGrid.java @@ -0,0 +1,49 @@ +package com.raoulvdberge.refinedstorage.item; + +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; +import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; +import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessFluidGrid; +import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemWirelessFluidGrid extends ItemNetworkItem { + public ItemWirelessFluidGrid() { + super("wireless_fluid_grid"); + } + + @Override + public void initializeDefaults(NBTTagCompound tag) { + super.initializeDefaults(tag); + + tag.setInteger(TileGrid.NBT_SORTING_DIRECTION, TileGrid.SORTING_DIRECTION_DESCENDING); + tag.setInteger(TileGrid.NBT_SORTING_TYPE, TileGrid.SORTING_TYPE_QUANTITY); + tag.setInteger(TileGrid.NBT_SEARCH_BOX_MODE, TileGrid.SEARCH_BOX_MODE_NORMAL); + } + + @Override + public boolean isValid(ItemStack stack) { + return super.isValid(stack) + && stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_DIRECTION) + && stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_TYPE) + && stack.getTagCompound().hasKey(TileGrid.NBT_SEARCH_BOX_MODE); + } + + @Override + public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) { + return new NetworkItemWirelessFluidGrid(handler, player, stack); + } + + public static int getSortingType(ItemStack stack) { + return stack.getTagCompound().getInteger(TileGrid.NBT_SORTING_TYPE); + } + + public static int getSortingDirection(ItemStack stack) { + return stack.getTagCompound().getInteger(TileGrid.NBT_SORTING_DIRECTION); + } + + public static int getSearchBoxMode(ItemStack stack) { + return stack.getTagCompound().getInteger(TileGrid.NBT_SEARCH_BOX_MODE); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java new file mode 100755 index 000000000..929504fbd --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageWirelessFluidGridSettingsUpdate.java @@ -0,0 +1,62 @@ +package com.raoulvdberge.refinedstorage.network; + +import com.raoulvdberge.refinedstorage.container.ContainerGrid; +import com.raoulvdberge.refinedstorage.tile.grid.IGrid; +import com.raoulvdberge.refinedstorage.tile.grid.TileGrid; +import com.raoulvdberge.refinedstorage.tile.grid.WirelessFluidGrid; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; + +public class MessageWirelessFluidGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { + private int sortingDirection; + private int sortingType; + private int searchBoxMode; + + public MessageWirelessFluidGridSettingsUpdate() { + } + + public MessageWirelessFluidGridSettingsUpdate(int sortingDirection, int sortingType, int searchBoxMode) { + this.sortingDirection = sortingDirection; + this.sortingType = sortingType; + this.searchBoxMode = searchBoxMode; + } + + @Override + public void fromBytes(ByteBuf buf) { + sortingDirection = buf.readInt(); + sortingType = buf.readInt(); + searchBoxMode = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(sortingDirection); + buf.writeInt(sortingType); + buf.writeInt(searchBoxMode); + } + + @Override + public void handle(MessageWirelessFluidGridSettingsUpdate message, EntityPlayerMP player) { + if (player.openContainer instanceof ContainerGrid) { + IGrid grid = ((ContainerGrid) player.openContainer).getGrid(); + + if (grid instanceof WirelessFluidGrid) { + ItemStack stack = ((WirelessFluidGrid) grid).getStack(); + + if (TileGrid.isValidSortingDirection(message.sortingDirection)) { + stack.getTagCompound().setInteger(TileGrid.NBT_SORTING_DIRECTION, message.sortingDirection); + } + + if (TileGrid.isValidSortingType(message.sortingType)) { + stack.getTagCompound().setInteger(TileGrid.NBT_SORTING_TYPE, message.sortingType); + } + + if (TileGrid.isValidSearchBoxMode(message.searchBoxMode)) { + stack.getTagCompound().setInteger(TileGrid.NBT_SEARCH_BOX_MODE, message.searchBoxMode); + } + } + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java index 347dc778a..192edbc96 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyClient.java @@ -147,6 +147,7 @@ public class ProxyClient extends ProxyCommon { ModelLoader.setCustomModelResourceLocation(RSItems.CORE, ItemCore.TYPE_DESTRUCTION, new ModelResourceLocation("refinedstorage:destruction_core", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_GRID, 0, new ModelResourceLocation("refinedstorage:wireless_grid", "inventory")); + ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_FLUID_GRID, 0, new ModelResourceLocation("refinedstorage:wireless_fluid_grid", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.WIRELESS_CRAFTING_MONITOR, 0, new ModelResourceLocation("refinedstorage:wireless_crafting_monitor", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.PATTERN, 0, new ModelResourceLocation("refinedstorage:pattern", "inventory")); ModelLoader.setCustomModelResourceLocation(RSItems.STORAGE_HOUSING, 0, new ModelResourceLocation("refinedstorage:storage_housing", "inventory")); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index b8f166b2e..86a29e3a3 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -121,6 +121,7 @@ public class ProxyCommon { RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelAdd.class, MessageReaderWriterChannelAdd.class, id++, Side.SERVER); RS.INSTANCE.network.registerMessage(MessageReaderWriterChannelRemove.class, MessageReaderWriterChannelRemove.class, id++, Side.SERVER); RS.INSTANCE.network.registerMessage(MessageSecurityManagerUpdate.class, MessageSecurityManagerUpdate.class, id++, Side.SERVER); + RS.INSTANCE.network.registerMessage(MessageWirelessFluidGridSettingsUpdate.class, MessageWirelessFluidGridSettingsUpdate.class, id++, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RS.INSTANCE, new GuiHandler()); @@ -197,6 +198,8 @@ public class ProxyCommon { registerItem(RSItems.STORAGE_PART); registerItem(RSItems.FLUID_STORAGE_PART); registerItem(RSItems.WIRELESS_GRID); + registerItem(RSItems.WIRELESS_FLUID_GRID); + registerItem(RSItems.WIRELESS_CRAFTING_MONITOR); registerItem(RSItems.PROCESSOR); registerItem(RSItems.CORE); registerItem(RSItems.SILICON); @@ -204,7 +207,6 @@ public class ProxyCommon { registerItem(RSItems.GRID_FILTER); registerItem(RSItems.NETWORK_CARD); registerItem(RSItems.WRENCH); - registerItem(RSItems.WIRELESS_CRAFTING_MONITOR); registerItem(RSItems.SECURITY_CARD); OreDictionary.registerOre("itemSilicon", RSItems.SILICON); @@ -360,6 +362,17 @@ public class ProxyCommon { 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) ); + // Wireless Fluid Grid + GameRegistry.addRecipe(new ItemStack(RSItems.WIRELESS_FLUID_GRID, 1, ItemWirelessFluidGrid.TYPE_NORMAL), + "EPE", + "EGE", + "EAE", + 'E', new ItemStack(RSItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.ENDER_PEARL), + 'G', new ItemStack(RSBlocks.GRID, 1, EnumGridType.FLUID.getId()), + 'A', new ItemStack(RSItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + ); + // Wireless Crafting Monitor GameRegistry.addRecipe(new ItemStack(RSItems.WIRELESS_CRAFTING_MONITOR, 1, ItemWirelessCraftingMonitor.TYPE_NORMAL), "EPE", diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java index be285a624..bbcc69513 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/ICraftingMonitor.java @@ -7,6 +7,8 @@ import net.minecraft.util.math.BlockPos; import javax.annotation.Nullable; public interface ICraftingMonitor { + String getGuiTitle(); + void onCancelled(EntityPlayerMP player, int id); TileDataParameter getRedstoneModeParameter(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java index 7796b9523..24737ecd4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/TileCraftingMonitor.java @@ -24,6 +24,11 @@ public class TileCraftingMonitor extends TileNode implements ICraftingMonitor { return true; } + @Override + public String getGuiTitle() { + return "gui.refinedstorage:crafting_monitor"; + } + @Override public void onCancelled(EntityPlayerMP player, int id) { if (hasNetwork()) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java index 89516bae6..0d87bfbf0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/craftingmonitor/WirelessCraftingMonitor.java @@ -19,6 +19,11 @@ public class WirelessCraftingMonitor implements ICraftingMonitor { this.controller = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack)); } + @Override + public String getGuiTitle() { + return "gui.refinedstorage:wireless_crafting_monitor"; + } + @Override public void onCancelled(EntityPlayerMP player, int id) { TileController controller = getController(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java new file mode 100755 index 000000000..759442a22 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/grid/WirelessFluidGrid.java @@ -0,0 +1,182 @@ + +package com.raoulvdberge.refinedstorage.tile.grid; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler; +import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler; +import com.raoulvdberge.refinedstorage.block.EnumGridType; +import com.raoulvdberge.refinedstorage.gui.grid.GridFilter; +import com.raoulvdberge.refinedstorage.gui.grid.GridTab; +import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; +import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBasic; +import com.raoulvdberge.refinedstorage.item.ItemWirelessFluidGrid; +import com.raoulvdberge.refinedstorage.network.MessageWirelessFluidGridSettingsUpdate; +import com.raoulvdberge.refinedstorage.tile.TileController; +import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; + +import java.util.Collections; +import java.util.List; + +public class WirelessFluidGrid implements IGrid { + private ItemStack stack; + + private int controllerDimension; + private BlockPos controller; + + private int sortingType; + private int sortingDirection; + private int searchBoxMode; + + public WirelessFluidGrid(int controllerDimension, ItemStack stack) { + this.controllerDimension = controllerDimension; + this.controller = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack)); + + this.stack = stack; + + this.sortingType = ItemWirelessFluidGrid.getSortingType(stack); + this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack); + this.searchBoxMode = ItemWirelessFluidGrid.getSearchBoxMode(stack); + } + + public ItemStack getStack() { + return stack; + } + + @Override + public EnumGridType getType() { + return EnumGridType.FLUID; + } + + @Override + public BlockPos getNetworkPosition() { + return controller; + } + + @Override + public IItemGridHandler getItemHandler() { + return null; + } + + @Override + public IFluidGridHandler getFluidHandler() { + TileController controller = getController(); + + return controller != null ? controller.getFluidGridHandler() : null; + } + + @Override + public String getGuiTitle() { + return "gui.refinedstorage:fluid_grid"; + } + + @Override + public int getViewType() { + return 0; + } + + @Override + public int getSortingType() { + return sortingType; + } + + @Override + public int getSortingDirection() { + return sortingDirection; + } + + @Override + public int getSearchBoxMode() { + return searchBoxMode; + } + + @Override + public int getTabSelected() { + return 0; + } + + @Override + public void onViewTypeChanged(int type) { + // NO OP + } + + @Override + public void onSortingTypeChanged(int type) { + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), type, getSearchBoxMode())); + + this.sortingType = type; + + GuiGrid.markForSorting(); + } + + @Override + public void onSortingDirectionChanged(int direction) { + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(direction, getSortingType(), getSearchBoxMode())); + + this.sortingDirection = direction; + + GuiGrid.markForSorting(); + } + + @Override + public void onSearchBoxModeChanged(int searchBoxMode) { + RS.INSTANCE.network.sendToServer(new MessageWirelessFluidGridSettingsUpdate(getSortingDirection(), getSortingType(), searchBoxMode)); + + this.searchBoxMode = searchBoxMode; + } + + @Override + public void onTabSelectionChanged(int tab) { + // NO OP + } + + @Override + public List getFilteredItems() { + return Collections.emptyList(); + } + + @Override + public List getTabs() { + return Collections.emptyList(); + } + + @Override + public ItemHandlerBasic getFilter() { + return null; + } + + @Override + public TileDataParameter getRedstoneModeConfig() { + return null; + } + + @Override + public boolean isActive() { + return true; + } + + public void onClose(EntityPlayer player) { + TileController controller = getController(); + + if (controller != null) { + controller.getNetworkItemHandler().onClose(player); + } + } + + private TileController getController() { + World world = DimensionManager.getWorld(controllerDimension); + + if (world != null) { + TileEntity tile = world.getTileEntity(controller); + + return tile instanceof TileController ? (TileController) tile : null; + } + + return null; + } +} diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 319d008af..a72f7ce25 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -6,6 +6,7 @@ gui.refinedstorage:grid=Grid gui.refinedstorage:grid.craft=Craft gui.refinedstorage:grid.pattern_create=Create Pattern gui.refinedstorage:wireless_grid=Wireless Grid +gui.refinedstorage:wireless_fluid_grid=Wireless Fluid Grid gui.refinedstorage:fluid_grid=Fluid Grid gui.refinedstorage:disk_drive=Drive gui.refinedstorage:disk_drive.disks=Disks @@ -20,6 +21,7 @@ gui.refinedstorage:relay=Relay gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:crafting_monitor=Crafting Monitor +gui.refinedstorage:wireless_crafting_monitor=Wireless Crafting Monitor gui.refinedstorage:crafting_monitor.fluids_taking=Fluids taking gui.refinedstorage:crafting_monitor.items_crafting=Items crafting gui.refinedstorage:crafting_monitor.items_processing=Items processing @@ -221,6 +223,8 @@ item.refinedstorage:fluid_storage_disk.4.name=Creative Fluid Storage Disk item.refinedstorage:fluid_storage_disk.5.name=Debug Fluid Storage Disk item.refinedstorage:wireless_grid.0.name=Wireless Grid item.refinedstorage:wireless_grid.1.name=Creative Wireless Grid +item.refinedstorage:wireless_fluid_grid.0.name=Wireless Fluid Grid +item.refinedstorage:wireless_fluid_grid.1.name=Creative Wireless Fluid Grid item.refinedstorage:wireless_crafting_monitor.0.name=Wireless Crafting Monitor item.refinedstorage:wireless_crafting_monitor.1.name=Creative Wireless Crafting Monitor item.refinedstorage:quartz_enriched_iron.name=Quartz Enriched Iron diff --git a/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid.json b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid.json new file mode 100755 index 000000000..3227480b7 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid.json @@ -0,0 +1,20 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/wireless_fluid_grid_disconnected" + }, + "overrides": [ + { + "predicate": { + "connected": 0 + }, + "model": "refinedstorage:item/wireless_fluid_grid_disconnected" + }, + { + "predicate": { + "connected": 1 + }, + "model": "refinedstorage:item/wireless_fluid_grid_connected" + } + ] +} diff --git a/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_connected.json b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_connected.json new file mode 100755 index 000000000..280fc00d9 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_connected.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/wireless_fluid_grid_connected" + } +} diff --git a/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_disconnected.json b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_disconnected.json new file mode 100755 index 000000000..3fc8ecc9f --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/wireless_fluid_grid_disconnected.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "refinedstorage:items/wireless_fluid_grid_disconnected" + } +} diff --git a/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_connected.png b/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_connected.png new file mode 100755 index 000000000..2e89d47c9 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_connected.png differ diff --git a/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_disconnected.png b/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_disconnected.png new file mode 100755 index 000000000..bf0e4cadb Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/items/wireless_fluid_grid_disconnected.png differ