diff --git a/src/main/java/refinedstorage/gui/GuiGrid.java b/src/main/java/refinedstorage/gui/GuiGrid.java index 17ae74a6d..38d6ee1ec 100755 --- a/src/main/java/refinedstorage/gui/GuiGrid.java +++ b/src/main/java/refinedstorage/gui/GuiGrid.java @@ -10,9 +10,11 @@ import net.minecraft.inventory.Slot; import refinedstorage.RefinedStorage; import refinedstorage.block.EnumGridType; import refinedstorage.container.ContainerGrid; +import refinedstorage.gui.sidebutton.SideButtonGridSearchBoxMode; import refinedstorage.gui.sidebutton.SideButtonGridSortingDirection; import refinedstorage.gui.sidebutton.SideButtonGridSortingType; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; +import refinedstorage.jei.PluginRefinedStorage; import refinedstorage.network.MessageGridCraftingClear; import refinedstorage.network.MessageGridCraftingPush; import refinedstorage.network.MessageStoragePull; @@ -52,6 +54,10 @@ public class GuiGrid extends GuiBase { addSideButton(new SideButtonGridSortingDirection(grid)); addSideButton(new SideButtonGridSortingType(grid)); + if (PluginRefinedStorage.isJeiLoaded()) { + addSideButton(new SideButtonGridSearchBoxMode(grid)); + } + searchField = new GuiTextField(0, fontRendererObj, x + 80 + 1, y + 6 + 1, 88 - 6, fontRendererObj.FONT_HEIGHT); searchField.setEnableBackgroundDrawing(false); searchField.setVisible(true); @@ -287,6 +293,9 @@ public class GuiGrid extends GuiBase { @Override protected void keyTyped(char character, int keyCode) throws IOException { if (!checkHotbarKeys(keyCode) && searchField.textboxKeyTyped(character, keyCode)) { + if (PluginRefinedStorage.isJeiLoaded()) { + PluginRefinedStorage.INSTANCE.getRuntime().getItemListOverlay().setFilterText(searchField.getText()); + } } else { super.keyTyped(character, keyCode); } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java new file mode 100755 index 000000000..bdd0ce1b3 --- /dev/null +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSearchBoxMode.java @@ -0,0 +1,44 @@ +package refinedstorage.gui.sidebutton; + +import net.minecraft.util.text.TextFormatting; +import refinedstorage.RefinedStorage; +import refinedstorage.gui.GuiBase; +import refinedstorage.network.MessageGridSettingsUpdate; +import refinedstorage.tile.TileGrid; + +public class SideButtonGridSearchBoxMode extends SideButton { + private TileGrid grid; + + public SideButtonGridSearchBoxMode(TileGrid grid) { + this.grid = grid; + } + + @Override + public String getTooltip(GuiBase gui) { + StringBuilder builder = new StringBuilder(); + + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.search_box_mode")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.search_box_mode." + grid.getSearchBoxMode())); + + return builder.toString(); + } + + @Override + public void draw(GuiBase gui, int x, int y) { + gui.bindTexture("icons.png"); + gui.drawTexture(x - 1, y + 2 - 1, 0, 96, 16, 16); + } + + @Override + public void actionPerformed() { + int mode = grid.getSearchBoxMode(); + + if (mode == TileGrid.SEARCH_BOX_MODE_NORMAL) { + mode = TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED; + } else if (mode == TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED) { + mode = TileGrid.SEARCH_BOX_MODE_NORMAL; + } + + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, grid.getSortingDirection(), grid.getSortingType(), mode)); + } +} diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java index b7ccb59c5..af1540f08 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingDirection.java @@ -3,7 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageGridSortingUpdate; +import refinedstorage.network.MessageGridSettingsUpdate; import refinedstorage.tile.TileGrid; public class SideButtonGridSortingDirection extends SideButton { @@ -17,8 +17,8 @@ public class SideButtonGridSortingDirection extends SideButton { public String getTooltip(GuiBase gui) { StringBuilder builder = new StringBuilder(); - builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:sorting.direction")).append(TextFormatting.RESET).append("\n"); - builder.append(gui.t("sidebutton.refinedstorage:sorting.direction." + grid.getSortingDirection())); + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.sorting.direction")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.sorting.direction." + grid.getSortingDirection())); return builder.toString(); } @@ -39,6 +39,6 @@ public class SideButtonGridSortingDirection extends SideButton { dir = TileGrid.SORTING_DIRECTION_ASCENDING; } - RefinedStorage.NETWORK.sendToServer(new MessageGridSortingUpdate(grid, dir, grid.getSortingType())); + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, dir, grid.getSortingType(), grid.getSearchBoxMode())); } } diff --git a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java index e5f04f2ce..8e02f4b18 100755 --- a/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java +++ b/src/main/java/refinedstorage/gui/sidebutton/SideButtonGridSortingType.java @@ -3,7 +3,7 @@ package refinedstorage.gui.sidebutton; import net.minecraft.util.text.TextFormatting; import refinedstorage.RefinedStorage; import refinedstorage.gui.GuiBase; -import refinedstorage.network.MessageGridSortingUpdate; +import refinedstorage.network.MessageGridSettingsUpdate; import refinedstorage.tile.TileGrid; public class SideButtonGridSortingType extends SideButton { @@ -17,8 +17,8 @@ public class SideButtonGridSortingType extends SideButton { public String getTooltip(GuiBase gui) { StringBuilder builder = new StringBuilder(); - builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:sorting.type")).append(TextFormatting.RESET).append("\n"); - builder.append(gui.t("sidebutton.refinedstorage:sorting.type." + grid.getSortingType())); + builder.append(TextFormatting.YELLOW).append(gui.t("sidebutton.refinedstorage:grid.sorting.type")).append(TextFormatting.RESET).append("\n"); + builder.append(gui.t("sidebutton.refinedstorage:grid.sorting.type." + grid.getSortingType())); return builder.toString(); } @@ -39,6 +39,6 @@ public class SideButtonGridSortingType extends SideButton { type = TileGrid.SORTING_TYPE_QUANTITY; } - RefinedStorage.NETWORK.sendToServer(new MessageGridSortingUpdate(grid, grid.getSortingDirection(), type)); + RefinedStorage.NETWORK.sendToServer(new MessageGridSettingsUpdate(grid, grid.getSortingDirection(), type, grid.getSearchBoxMode())); } } diff --git a/src/main/java/refinedstorage/jei/PluginRefinedStorage.java b/src/main/java/refinedstorage/jei/PluginRefinedStorage.java index 216a3b9ff..8196517fd 100755 --- a/src/main/java/refinedstorage/jei/PluginRefinedStorage.java +++ b/src/main/java/refinedstorage/jei/PluginRefinedStorage.java @@ -1,6 +1,7 @@ package refinedstorage.jei; -import mezz.jei.api.BlankModPlugin; +import mezz.jei.api.IJeiRuntime; +import mezz.jei.api.IModPlugin; import mezz.jei.api.IModRegistry; import mezz.jei.api.JEIPlugin; import net.minecraft.item.Item; @@ -10,9 +11,15 @@ import refinedstorage.storage.DiskStorage; import refinedstorage.tile.TileStorage; @JEIPlugin -public class PluginRefinedStorage extends BlankModPlugin { +public class PluginRefinedStorage implements IModPlugin { + public static PluginRefinedStorage INSTANCE; + + private IJeiRuntime runtime; + @Override public void register(IModRegistry registry) { + INSTANCE = this; + registry.getRecipeTransferRegistry().addRecipeTransferHandler(new GridRecipeTransferHandler()); registry.addRecipeCategories(new SoldererRecipeCategory(registry.getJeiHelpers().getGuiHelper())); @@ -24,4 +31,17 @@ public class PluginRefinedStorage extends BlankModPlugin { registry.getJeiHelpers().getNbtIgnoreList().ignoreNbtTagNames(RefinedStorageItems.STORAGE_DISK, DiskStorage.NBT_ITEMS, DiskStorage.NBT_STORED); registry.getJeiHelpers().getNbtIgnoreList().ignoreNbtTagNames(Item.getItemFromBlock(RefinedStorageBlocks.STORAGE), TileStorage.NBT_STORAGE); } + + @Override + public void onRuntimeAvailable(IJeiRuntime runtime) { + this.runtime = runtime; + } + + public IJeiRuntime getRuntime() { + return runtime; + } + + public static boolean isJeiLoaded() { + return INSTANCE != null; + } } diff --git a/src/main/java/refinedstorage/network/MessageGridSortingUpdate.java b/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java similarity index 69% rename from src/main/java/refinedstorage/network/MessageGridSortingUpdate.java rename to src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java index 11781aec1..66d5ad038 100755 --- a/src/main/java/refinedstorage/network/MessageGridSortingUpdate.java +++ b/src/main/java/refinedstorage/network/MessageGridSettingsUpdate.java @@ -1,60 +1,68 @@ -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.TileGrid; - -public class MessageGridSortingUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private int sortingDirection; - private int sortingType; - - public MessageGridSortingUpdate() { - } - - public MessageGridSortingUpdate(TileGrid grid, int sortingDirection, int sortingType) { - this.x = grid.getPos().getX(); - this.y = grid.getPos().getY(); - this.z = grid.getPos().getZ(); - this.sortingDirection = sortingDirection; - this.sortingType = sortingType; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - sortingDirection = buf.readInt(); - sortingType = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(sortingDirection); - buf.writeInt(sortingType); - } - - @Override - public void handle(MessageGridSortingUpdate message, EntityPlayerMP player) { - TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileGrid) { - if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { - ((TileGrid) tile).setSortingDirection(message.sortingDirection); - } - - if (message.sortingType == TileGrid.SORTING_TYPE_QUANTITY || message.sortingType == TileGrid.SORTING_TYPE_NAME) { - ((TileGrid) tile).setSortingType(message.sortingType); - } - } - } -} +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.TileGrid; + +public class MessageGridSettingsUpdate extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + private int sortingDirection; + private int sortingType; + private int searchBoxMode; + + public MessageGridSettingsUpdate() { + } + + public MessageGridSettingsUpdate(TileGrid grid, int sortingDirection, int sortingType, int searchBoxMode) { + this.x = grid.getPos().getX(); + this.y = grid.getPos().getY(); + this.z = grid.getPos().getZ(); + this.sortingDirection = sortingDirection; + this.sortingType = sortingType; + this.searchBoxMode = searchBoxMode; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + sortingDirection = buf.readInt(); + sortingType = buf.readInt(); + searchBoxMode = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(sortingDirection); + buf.writeInt(sortingType); + buf.writeInt(searchBoxMode); + } + + @Override + public void handle(MessageGridSettingsUpdate message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileGrid) { + if (message.sortingDirection == TileGrid.SORTING_DIRECTION_ASCENDING || message.sortingDirection == TileGrid.SORTING_DIRECTION_DESCENDING) { + ((TileGrid) tile).setSortingDirection(message.sortingDirection); + } + + if (message.sortingType == TileGrid.SORTING_TYPE_QUANTITY || message.sortingType == TileGrid.SORTING_TYPE_NAME) { + ((TileGrid) tile).setSortingType(message.sortingType); + } + + if (message.searchBoxMode == TileGrid.SEARCH_BOX_MODE_NORMAL || message.searchBoxMode == TileGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED) { + ((TileGrid) tile).setSearchBoxMode(message.searchBoxMode); + } + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 45d217346..4df5be14c 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -36,7 +36,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageDetectorAmountUpdate.class, MessageDetectorAmountUpdate.class, 7, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingClear.class, MessageGridCraftingClear.class, 9, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessagePriorityUpdate.class, MessagePriorityUpdate.class, 10, Side.SERVER); - RefinedStorage.NETWORK.registerMessage(MessageGridSortingUpdate.class, MessageGridSortingUpdate.class, 11, Side.SERVER); + RefinedStorage.NETWORK.registerMessage(MessageGridSettingsUpdate.class, MessageGridSettingsUpdate.class, 11, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingPush.class, MessageGridCraftingPush.class, 12, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridCraftingTransfer.class, MessageGridCraftingTransfer.class, 13, Side.SERVER); diff --git a/src/main/java/refinedstorage/tile/TileGrid.java b/src/main/java/refinedstorage/tile/TileGrid.java index 86fc515ef..928149317 100755 --- a/src/main/java/refinedstorage/tile/TileGrid.java +++ b/src/main/java/refinedstorage/tile/TileGrid.java @@ -21,6 +21,7 @@ import java.util.List; public class TileGrid extends TileMachine { public static final String NBT_SORTING_DIRECTION = "SortingDirection"; public static final String NBT_SORTING_TYPE = "SortingType"; + public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode"; public static final int SORTING_DIRECTION_ASCENDING = 0; public static final int SORTING_DIRECTION_DESCENDING = 1; @@ -28,6 +29,9 @@ public class TileGrid extends TileMachine { public static final int SORTING_TYPE_QUANTITY = 0; public static final int SORTING_TYPE_NAME = 1; + public static final int SEARCH_BOX_MODE_NORMAL = 0; + public static final int SEARCH_BOX_MODE_JEI_SYNCHRONIZED = 1; + private Container craftingContainer = new Container() { @Override public boolean canInteractWith(EntityPlayer player) { @@ -44,6 +48,7 @@ public class TileGrid extends TileMachine { private int sortingDirection = SORTING_DIRECTION_DESCENDING; private int sortingType = SORTING_TYPE_NAME; + private int searchBoxMode = SEARCH_BOX_MODE_NORMAL; @Override public int getEnergyUsage() { @@ -176,6 +181,14 @@ public class TileGrid extends TileMachine { this.sortingType = sortingType; } + public int getSearchBoxMode() { + return searchBoxMode; + } + + public void setSearchBoxMode(int searchBoxMode) { + this.searchBoxMode = searchBoxMode; + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -189,6 +202,10 @@ public class TileGrid extends TileMachine { if (nbt.hasKey(NBT_SORTING_TYPE)) { sortingType = nbt.getInteger(NBT_SORTING_TYPE); } + + if (nbt.hasKey(NBT_SEARCH_BOX_MODE)) { + searchBoxMode = nbt.getInteger(NBT_SEARCH_BOX_MODE); + } } @Override @@ -199,6 +216,7 @@ public class TileGrid extends TileMachine { nbt.setInteger(NBT_SORTING_DIRECTION, sortingDirection); nbt.setInteger(NBT_SORTING_TYPE, sortingType); + nbt.setInteger(NBT_SEARCH_BOX_MODE, searchBoxMode); } @Override @@ -207,6 +225,7 @@ public class TileGrid extends TileMachine { buf.writeInt(sortingDirection); buf.writeInt(sortingType); + buf.writeInt(searchBoxMode); } @Override @@ -215,6 +234,7 @@ public class TileGrid extends TileMachine { sortingDirection = buf.readInt(); sortingType = buf.readInt(); + searchBoxMode = buf.readInt(); } @Override diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index b50764d79..949b66bd8 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -47,13 +47,15 @@ sidebutton.refinedstorage:redstone_mode.0=Ignore redstone signal sidebutton.refinedstorage:redstone_mode.1=Only work with redstone signal sidebutton.refinedstorage:redstone_mode.2=Only work without redstone signal -sidebutton.refinedstorage:sorting.direction=Sorting Direction -sidebutton.refinedstorage:sorting.direction.0=Ascending -sidebutton.refinedstorage:sorting.direction.1=Descending - -sidebutton.refinedstorage:sorting.type=Sorting Type -sidebutton.refinedstorage:sorting.type.0=Quantity -sidebutton.refinedstorage:sorting.type.1=Name +sidebutton.refinedstorage:grid.sorting.direction=Sorting Direction +sidebutton.refinedstorage:grid.sorting.direction.0=Ascending +sidebutton.refinedstorage:grid.sorting.direction.1=Descending +sidebutton.refinedstorage:grid.sorting.type=Sorting Type +sidebutton.refinedstorage:grid.sorting.type.0=Quantity +sidebutton.refinedstorage:grid.sorting.type.1=Name +sidebutton.refinedstorage:grid.search_box_mode=Search Box Mode +sidebutton.refinedstorage:grid.search_box_mode.0=Normal +sidebutton.refinedstorage:grid.search_box_mode.1=JEI Synchronized sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index b57f86d95..d939ed30a 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -47,13 +47,15 @@ sidebutton.refinedstorage:redstone_mode.0=Redstone negeren sidebutton.refinedstorage:redstone_mode.1=Alleen werken met redstone signaal sidebutton.refinedstorage:redstone_mode.2=Alleen werken zonder redstone signaal -sidebutton.refinedstorage:sorting.direction=Sorteer Richting -sidebutton.refinedstorage:sorting.direction.0=Oplopend -sidebutton.refinedstorage:sorting.direction.1=Aflopend - -sidebutton.refinedstorage:sorting.type=Sorteer Type -sidebutton.refinedstorage:sorting.type.0=Hoeveelheid -sidebutton.refinedstorage:sorting.type.1=Naam +sidebutton.refinedstorage:grid.sorting.direction=Sorteer Richting +sidebutton.refinedstorage:grid.sorting.direction.0=Oplopend +sidebutton.refinedstorage:grid.sorting.direction.1=Aflopend +sidebutton.refinedstorage:grid.sorting.type=Sorteer Type +sidebutton.refinedstorage:grid.sorting.type.0=Hoeveelheid +sidebutton.refinedstorage:grid.sorting.type.1=Naam +sidebutton.refinedstorage:grid.search_box_mode=Zoekbalk Mode +sidebutton.refinedstorage:grid.search_box_mode.0=Normaal +sidebutton.refinedstorage:grid.search_box_mode.1=JEI Gesynchronizeerd sidebutton.refinedstorage:mode=Mode sidebutton.refinedstorage:mode.whitelist=Whitelist diff --git a/src/main/resources/assets/refinedstorage/textures/icons.png b/src/main/resources/assets/refinedstorage/textures/icons.png index 19f326da4..2508d63f8 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/icons.png and b/src/main/resources/assets/refinedstorage/textures/icons.png differ