From 403d80a017a8622932541546ed255a00f3aa6708 Mon Sep 17 00:00:00 2001 From: Ethryan <3237986+Ethryan@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:02:28 +0100 Subject: [PATCH 1/8] Change the texture offset so that the chest and drive use different parts of the same file instead of overlapping (#618) --- .../client/render/blocks/RenderMEChest.java | 7 +++---- .../textures/blocks/MEStorageCellTextures.png | Bin 2081 -> 4229 bytes 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/appeng/client/render/blocks/RenderMEChest.java b/src/main/java/appeng/client/render/blocks/RenderMEChest.java index 9ec8ff98122..fb4b3fc720d 100644 --- a/src/main/java/appeng/client/render/blocks/RenderMEChest.java +++ b/src/main/java/appeng/client/render/blocks/RenderMEChest.java @@ -81,12 +81,11 @@ public boolean renderInWorld(final BlockChest imb, final IBlockAccess world, fin this.selectFace(renderer, west, up, forward, 5, 16 - 5, 9, 12); - int offsetU = 4; + int offsetU = -4; int offsetV = 9 - type * 4; if (stat == 0) { - // Right up corner - offsetU = -4; - offsetV = 8; + // Bottom middle right + offsetV = -5; } int b = world.getLightBrightnessForSkyBlocks(x + forward.offsetX, y + forward.offsetY, z + forward.offsetZ, 0); diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/MEStorageCellTextures.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/MEStorageCellTextures.png index 4c793bed7e21b5e358786a6840ef45165704d4e4..724cbbe6f04822943fe978ba1d441d519a43eb7f 100644 GIT binary patch delta 3352 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 Mpl|BDKstv13xad^egFUf literal 2081 zcmb_dUuYaf7{3}!YbBu|LNP+O8$_+0+u1+2w>#vLCU?;bdNCwd60xPu?abY+x!c+7 zY;u=CRRlqiK3Mu#!G}EbL8Gs>g+^%l>qRD367wAM{Xr$?5XP$;qiB?=MBmZ*giY&P#BhRJ^u;6ED z)y=O2bY^9;=&Z~;Hjzh$rJ*Jg4(c?-QnOz3IBI6(mR}^+(Q8GPT99x)BacP_rMbeC zlw|>xQb`jys*#e?c2YHU!?uq~8dNO>T8gRz)kFqFnkID)Swss+8BOP2?8FjJ8MzvU zK2nrMqmgXrNfuNT)wXQ~YKo=-fdG8j3vm;8e6Z^wN4XQYe&{k!iag>HTMRR@VA_^Y z_hYvn@1#j2Ole|YQIjx|)B+MG#`%jutreU&3a!yP^+GPNYK--(EM&aO9^yLw{6GMa z+Cm|Yu_c#!Jr2Rc@g*UnlaMXZytwRBWtwuf7&vr%NzfdO)c7bHP#m(L$XKmgsHrYx zDVvQ7V@uD?x*lN-{`@8zn!_Q@$QslP04)H`BGgbyN4oj~v=D@CXn_&8yu2A|0~Hpb zDhiC$)B{k_H3WzFKf%O7Wfs)2(CpT6g(|*Rk)=43D9dUr5P=0dy~UzXKocGhvFFf< zTt*hMldemUhKcD|stpWV*MP1X8nB3!28KZmqL&P_49%{6jya1_al7_J*ju!$n33>U8L+K(85zZG`9j0#0uRF8K?WDHk2tC~9; z$=oT;AtjmzVI;LzZAZ%X5nEk~@@~Xnxf6GWF2oF^R%0UUL<5(Rov70&kvp&5Eh@6J zjJDl2s#G}Lrv2J5&dOl}2XwR|s<)F4S02Wn#ANh9D@K%X$siHFo8|&G_X}Y zZPB!u#%8LkelvR;K)a~v2-?UnyA!cX_MPN9RqR!$_=hX?84T!O@I1sON;FzTE_d9c!+mC>WNeZVqZHuaCctpiK`R2(V}%`Iud)!|?!;XJE`Q+;L(r2e<)(;L|T9~=n zb3r=K@7#U*h?@UU{bbL@wVwA+-Qy?Mf4Y1$+2?;beCPFJKi|H0`J)^B!c_@ed#88q z)80J#RUj7LuD+FeW(gJ=!Nnu%1FIVcze$|F^4@CC$n4?ozewKt<7VHn>tB6-f8=%# Yd^7dz{H=2*qfLBbd@{E-_Qtz^0dy6ay#N3J From 8187c774f21b3ddc6927c0ebfa3e689c7bcdc3ab Mon Sep 17 00:00:00 2001 From: Worive <13164341+Worive@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:14:22 +0100 Subject: [PATCH 2/8] Display custom name in MemoryCard tooltip (#614) Co-authored-by: Martin Robertz --- src/main/java/appeng/items/tools/ToolMemoryCard.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/appeng/items/tools/ToolMemoryCard.java b/src/main/java/appeng/items/tools/ToolMemoryCard.java index fab7d123f58..5fbd68962ab 100644 --- a/src/main/java/appeng/items/tools/ToolMemoryCard.java +++ b/src/main/java/appeng/items/tools/ToolMemoryCard.java @@ -56,7 +56,12 @@ public void addCheckedInformation(final ItemStack stack, final EntityPlayer play lines.add(String.format(local, freqTooltip)); } - if (data.hasKey("custom_name")) lines.add(data.getString("custom_name")); + + if (data.hasKey("custom_name")) { + lines.add(data.getString("custom_name")); + } else if (data.hasKey("display") && data.getCompoundTag("display").hasKey("Name")) { + lines.add(data.getCompoundTag("display").getString("Name")); + } } /** From 42f9451cbb601aea37a4f5b93ad4f13722b3ad9e Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Mon, 9 Dec 2024 18:24:13 +0100 Subject: [PATCH 3/8] update --- dependencies.gradle | 18 +++++++++--------- gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 3e6b4b36b14..a3dda3c46a9 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,21 +1,21 @@ // Add your dependencies here dependencies { - implementation('com.github.GTNewHorizons:NotEnoughItems:2.6.46-GTNH:dev') + implementation('com.github.GTNewHorizons:NotEnoughItems:2.6.51-GTNH:dev') implementation('curse.maven:cofh-core-69162:2388751') - compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta20:api') - compileOnly("com.github.GTNewHorizons:GTNHLib:0.5.20:dev") {transitive = false} + compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta25:api') + compileOnly("com.github.GTNewHorizons:GTNHLib:0.5.21:dev") {transitive = false} compileOnly('com.github.GTNewHorizons:ThaumicTinkerer:2.10.2:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.17:dev') {transitive = false} // required to compile CraftingV2Tests.java now + compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.19:dev') {transitive = false} // required to compile CraftingV2Tests.java now compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.5.0:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.50.70:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.00:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Jabba:1.4.6:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.0:api') {transitive = false} compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.27-GTNH:api') {transitive = false} compileOnly('com.github.GTNewHorizons:waila:1.8.2:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:Railcraft:9.15.14:api') {transitive = false} + compileOnly('com.github.GTNewHorizons:Railcraft:9.15.15:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false } compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:api') compileOnly('curse.maven:minefactory-reloaded-66672:2366150') @@ -34,7 +34,7 @@ dependencies { functionalTestImplementation('org.junit.platform:junit-platform-engine') functionalTestImplementation('org.junit.platform:junit-platform-launcher') functionalTestImplementation('org.junit.platform:junit-platform-reporting') - functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.50.70:dev') { + functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.00:dev') { exclude module: "Applied-Energistics-2-Unofficial" } @@ -42,6 +42,6 @@ dependencies { runtimeOnlyNonPublishable('com.github.GTNewHorizons:Baubles:1.0.4:dev') runtimeOnlyNonPublishable('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') runtimeOnlyNonPublishable('com.github.GTNewHorizons:ThaumicEnergistics:1.6.27-GTNH:dev') { transitive = false } - runtimeOnlyNonPublishable('com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.47-gtnh:dev') { transitive = false } - runtimeOnlyNonPublishable("com.github.GTNewHorizons:BloodMagic:1.6.7") { transitive = false } + runtimeOnlyNonPublishable('com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.51-gtnh:dev') { transitive = false } + runtimeOnlyNonPublishable("com.github.GTNewHorizons:BloodMagic:1.6.9") { transitive = false } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c4586c843d1d3e9090525f1898cde..a4b76b9530d66f5e68d973ea569d8e19de379189 100644 GIT binary patch delta 3990 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09523c0e549..e2847c82004 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index 06204f7d6d8..3ca43ea41ca 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.29' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.30' } From a390cb3107b68024df5c30e7431a90ba4b60703e Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Wed, 11 Dec 2024 00:02:13 +0200 Subject: [PATCH 4/8] Fix NEI Synchronization (#619) Co-authored-by: slprime --- src/main/java/appeng/client/me/ItemRepo.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/appeng/client/me/ItemRepo.java b/src/main/java/appeng/client/me/ItemRepo.java index 896a57e6ef1..ff23e490246 100644 --- a/src/main/java/appeng/client/me/ItemRepo.java +++ b/src/main/java/appeng/client/me/ItemRepo.java @@ -107,17 +107,14 @@ public void updateView() { this.dsp.ensureCapacity(this.list.size()); final Enum viewMode = this.sortSrc.getSortDisplay(); - final Enum searchMode = AEConfig.instance.settings.getSetting(Settings.SEARCH_MODE); final Enum typeFilter = this.sortSrc.getTypeFilter(); - Predicate itemFilter = getFilter(this.searchString); + Predicate itemFilter; if (NEI.searchField.existsSearchField()) { - if (searchMode == SearchBoxMode.NEI_AUTOSEARCH || searchMode == SearchBoxMode.NEI_MANUAL_SEARCH) { - NEI.searchField.setText(this.searchString); - } - final Predicate neiFilter = NEI.searchField.getFilter(this.searchString); itemFilter = is -> neiFilter.test(is.getItemStack()); + } else { + itemFilter = getFilter(this.searchString); } if (itemFilter == null) { @@ -180,7 +177,7 @@ public void updateView() { private Predicate getFilter(String innerSearch) { - if (innerSearch.length() == 0) { + if (innerSearch.isEmpty()) { return stack -> true; } @@ -266,5 +263,12 @@ public String getSearchString() { @Override public void setSearchString(@Nonnull final String searchString) { this.searchString = searchString; + + if (NEI.searchField.existsSearchField()) { + final Enum searchMode = AEConfig.instance.settings.getSetting(Settings.SEARCH_MODE); + if (searchMode == SearchBoxMode.NEI_AUTOSEARCH || searchMode == SearchBoxMode.NEI_MANUAL_SEARCH) { + NEI.searchField.setText(this.searchString); + } + } } } From 5ed3ea499e5c571b33b0fa244bf404747aabc2a7 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Thu, 12 Dec 2024 23:17:10 +0100 Subject: [PATCH 5/8] update --- dependencies.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index a3dda3c46a9..d56c723d068 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,12 +5,12 @@ dependencies { implementation('curse.maven:cofh-core-69162:2388751') compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta25:api') - compileOnly("com.github.GTNewHorizons:GTNHLib:0.5.21:dev") {transitive = false} + compileOnly("com.github.GTNewHorizons:GTNHLib:0.5.22:dev") {transitive = false} compileOnly('com.github.GTNewHorizons:ThaumicTinkerer:2.10.2:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.19:dev') {transitive = false} // required to compile CraftingV2Tests.java now compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.5.0:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.00:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.04:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Jabba:1.4.6:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.0:api') {transitive = false} compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.27-GTNH:api') {transitive = false} @@ -34,7 +34,7 @@ dependencies { functionalTestImplementation('org.junit.platform:junit-platform-engine') functionalTestImplementation('org.junit.platform:junit-platform-launcher') functionalTestImplementation('org.junit.platform:junit-platform-reporting') - functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.00:dev') { + functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.04:dev') { exclude module: "Applied-Energistics-2-Unofficial" } From 1db8e21eb7f1be3d5e1cf83e0b658f57a1e57d15 Mon Sep 17 00:00:00 2001 From: lordIcocain <62835225+lordIcocain@users.noreply.github.com> Date: Tue, 17 Dec 2024 18:18:34 +0200 Subject: [PATCH 6/8] Painted ME chest will not connect to different color ME chest/cable. (#623) Co-authored-by: Maya <10861407+serenibyss@users.noreply.github.com> --- src/main/java/appeng/tile/storage/TileChest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/appeng/tile/storage/TileChest.java b/src/main/java/appeng/tile/storage/TileChest.java index 4e04091ca22..46df57563c1 100644 --- a/src/main/java/appeng/tile/storage/TileChest.java +++ b/src/main/java/appeng/tile/storage/TileChest.java @@ -413,6 +413,7 @@ public boolean readFromStream_TileChest(final ByteBuf data) { this.type = data.readByte() & 0b11; final AEColor oldPaintedColor = this.paintedColor; this.paintedColor = AEColor.values()[data.readByte()]; + this.getProxy().setColor(this.paintedColor); final int item = data.readInt(); @@ -433,6 +434,7 @@ public void readFromNBT_TileChest(final NBTTagCompound data) { this.priority = data.getInteger("priority"); if (data.hasKey("paintedColor")) { this.paintedColor = AEColor.values()[data.getByte("paintedColor")]; + this.getProxy().setColor(this.paintedColor); } } @@ -715,8 +717,11 @@ public boolean recolourBlock(final ForgeDirection side, final AEColor newPainted if (this.paintedColor == newPaintedColor) { return false; } - this.paintedColor = newPaintedColor; + this.getProxy().setColor(this.paintedColor); + if (getGridNode(side) != null) { + getGridNode(side).updateState(); + } this.markDirty(); this.markForUpdate(); return true; From 4630ba29a0b3b1fd4bc16a446838f505d4f1d11d Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Tue, 17 Dec 2024 19:24:54 +0100 Subject: [PATCH 7/8] update --- dependencies.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index d56c723d068..d95c23905e5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,16 +4,16 @@ dependencies { implementation('com.github.GTNewHorizons:NotEnoughItems:2.6.51-GTNH:dev') implementation('curse.maven:cofh-core-69162:2388751') - compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta25:api') + compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta26:api') compileOnly("com.github.GTNewHorizons:GTNHLib:0.5.22:dev") {transitive = false} compileOnly('com.github.GTNewHorizons:ThaumicTinkerer:2.10.2:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.39:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:ForestryMC:4.9.19:dev') {transitive = false} // required to compile CraftingV2Tests.java now compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.5.0:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.04:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.10:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Jabba:1.4.6:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.0:api') {transitive = false} - compileOnly('com.github.GTNewHorizons:OpenComputers:1.10.27-GTNH:api') {transitive = false} + compileOnly('com.github.GTNewHorizons:OpenComputers:1.11.1-GTNH:api') {transitive = false} compileOnly('com.github.GTNewHorizons:waila:1.8.2:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Railcraft:9.15.15:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false } @@ -34,7 +34,7 @@ dependencies { functionalTestImplementation('org.junit.platform:junit-platform-engine') functionalTestImplementation('org.junit.platform:junit-platform-launcher') functionalTestImplementation('org.junit.platform:junit-platform-reporting') - functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.04:dev') { + functionalTestImplementation('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.10:dev') { exclude module: "Applied-Energistics-2-Unofficial" } From e1d47e96c06ad4409d56208d554bcc8ef8d3933b Mon Sep 17 00:00:00 2001 From: slprime <31038811+slprime@users.noreply.github.com> Date: Wed, 18 Dec 2024 06:26:51 +0200 Subject: [PATCH 8/8] Add Search Cache to Terminal (#621) Co-authored-by: slprime Co-authored-by: Maya <10861407+serenibyss@users.noreply.github.com> --- .../implementations/GuiInterfaceTerminal.java | 6 +- src/main/java/appeng/client/me/ItemRepo.java | 62 ++++++++++--------- .../modules/NEIHelpers/NEISearchField.java | 2 +- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java index c2c1305cf7a..38ed081b73d 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java +++ b/src/main/java/appeng/client/gui/implementations/GuiInterfaceTerminal.java @@ -909,11 +909,13 @@ private static boolean itemStackMatchesSearchTerm(final ItemStack itemStack, fin final NBTTagList tags = encodedValue.getTagList(in ? "in" : "out", NBT.TAG_COMPOUND); final boolean containsInvalidDisplayName = GuiText.UnknownItem.getLocal().toLowerCase().contains(searchTerm); - Predicate itemFilter = (is) -> Platform - .getItemDisplayName(AEApi.instance().storage().createItemStack(is)).toLowerCase().contains(searchTerm); + Predicate itemFilter; if (NEI.searchField.existsSearchField()) { itemFilter = NEI.searchField.getFilter(searchTerm); + } else { + itemFilter = is -> Platform.getItemDisplayName(AEApi.instance().storage().createItemStack(is)).toLowerCase() + .contains(searchTerm); } for (int i = 0; i < tags.tagCount(); i++) { diff --git a/src/main/java/appeng/client/me/ItemRepo.java b/src/main/java/appeng/client/me/ItemRepo.java index ff23e490246..127dea92772 100644 --- a/src/main/java/appeng/client/me/ItemRepo.java +++ b/src/main/java/appeng/client/me/ItemRepo.java @@ -11,6 +11,8 @@ package appeng.client.me; import java.util.ArrayList; +import java.util.Map; +import java.util.WeakHashMap; import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -52,6 +54,7 @@ public class ItemRepo implements IDisplayRepo { private int rowSize = 9; private String searchString = ""; + private Map searchCache = new WeakHashMap<>(); private IPartitionList myPartitionList; private boolean hasPower; @@ -108,48 +111,47 @@ public void updateView() { final Enum viewMode = this.sortSrc.getSortDisplay(); final Enum typeFilter = this.sortSrc.getTypeFilter(); - Predicate itemFilter; - - if (NEI.searchField.existsSearchField()) { - final Predicate neiFilter = NEI.searchField.getFilter(this.searchString); - itemFilter = is -> neiFilter.test(is.getItemStack()); - } else { - itemFilter = getFilter(this.searchString); - } - - if (itemFilter == null) { - return; + Predicate itemFilter = null; + + if (!this.searchString.trim().isEmpty()) { + if (NEI.searchField.existsSearchField()) { + final Predicate neiFilter = NEI.searchField.getFilter(this.searchString); + itemFilter = is -> neiFilter.test(is.getItemStack()); + } else { + itemFilter = getFilter(this.searchString); + } } IItemDisplayRegistry registry = AEApi.instance().registries().itemDisplay(); out: for (IAEItemStack is : this.list) { - if (registry.isBlacklisted(is.getItem()) || registry.isBlacklisted(is.getItem().getClass())) { + if (viewMode == ViewItems.CRAFTABLE && !is.isCraftable()) { continue; } - for (final BiPredicate filter : registry.getItemFilters()) { - if (!filter.test((TypeFilter) typeFilter, is)) continue out; + if (viewMode == ViewItems.STORED && is.getStackSize() == 0) { + continue; } if (this.myPartitionList != null && !this.myPartitionList.isListed(is)) { continue; } - if (viewMode == ViewItems.CRAFTABLE && !is.isCraftable()) { + if (registry.isBlacklisted(is.getItem()) || registry.isBlacklisted(is.getItem().getClass())) { continue; } - if (viewMode == ViewItems.CRAFTABLE) { - is = is.copy(); - is.setStackSize(0); + for (final BiPredicate filter : registry.getItemFilters()) { + if (!filter.test((TypeFilter) typeFilter, is)) continue out; } - if (viewMode == ViewItems.STORED && is.getStackSize() == 0) { - continue; - } + if (itemFilter == null || Boolean.TRUE.equals(this.searchCache.computeIfAbsent(is, itemFilter::test))) { + + if (viewMode == ViewItems.CRAFTABLE) { + is = is.copy(); + is.setStackSize(0); + } - if (itemFilter.test(is)) { this.view.add(is); } } @@ -262,13 +264,17 @@ public String getSearchString() { @Override public void setSearchString(@Nonnull final String searchString) { - this.searchString = searchString; - - if (NEI.searchField.existsSearchField()) { - final Enum searchMode = AEConfig.instance.settings.getSetting(Settings.SEARCH_MODE); - if (searchMode == SearchBoxMode.NEI_AUTOSEARCH || searchMode == SearchBoxMode.NEI_MANUAL_SEARCH) { - NEI.searchField.setText(this.searchString); + if (!searchString.equals(this.searchString)) { + this.searchString = searchString; + this.searchCache.clear(); + + if (NEI.searchField.existsSearchField()) { + final Enum searchMode = AEConfig.instance.settings.getSetting(Settings.SEARCH_MODE); + if (searchMode == SearchBoxMode.NEI_AUTOSEARCH || searchMode == SearchBoxMode.NEI_MANUAL_SEARCH) { + NEI.searchField.setText(this.searchString); + } } } + } } diff --git a/src/main/java/appeng/integration/modules/NEIHelpers/NEISearchField.java b/src/main/java/appeng/integration/modules/NEIHelpers/NEISearchField.java index 9fde078c51b..c3bae6c3195 100644 --- a/src/main/java/appeng/integration/modules/NEIHelpers/NEISearchField.java +++ b/src/main/java/appeng/integration/modules/NEIHelpers/NEISearchField.java @@ -76,7 +76,7 @@ public Predicate getFilter(String filterText) { if (searchField != null) { final ItemFilter filter = searchField.getFilter(filterText); - return stack -> filter.matches(stack); + return filter::matches; } return null;