From e911f77cb65f2cad66adb68fee32b1763093883c Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Sun, 31 May 2026 18:05:45 +0300 Subject: [PATCH 1/2] add search bar to ender link --- .../cover/ender/AbstractEnderLinkCover.java | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java index 4bf27b5d4d7..9a5216ff061 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.common.cover.ender; +import brachy.modularui.drawable.GuiTextures; +import brachy.modularui.utils.MutableSingletonList; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -51,6 +53,7 @@ import java.nio.charset.StandardCharsets; import java.util.*; import java.util.function.IntSupplier; +import java.util.function.Predicate; import java.util.regex.Pattern; @SuppressWarnings("SameParameterValue") @@ -225,9 +228,12 @@ public void pasteConfig(ServerPlayer player, CompoundTag tag) { super.pasteConfig(player, tag); } - private List getVirtualEntries() { + private List getVirtualEntries(Predicate filter) { return VirtualEnderRegistry.get((ServerLevel) coverHolder.getLevel()).getEntries(getOwner(), getEntryType()) - .values().stream().toList(); + .values() + .stream() + .filter(filter) + .toList(); } protected enum Permissions { @@ -277,9 +283,11 @@ public void createCoverUIRows(Flow column, SidedPosGuiData data, PanelSyncManage .tooltip(1, t -> t.addLine(Text.lang(Permissions.PROTECTED.tooltip))) .tooltip(2, t -> t.addLine(Text.lang(Permissions.PRIVATE.tooltip))) .value(new EnumSyncValue<>(Permissions.class, this::getPermission, - this::setPermission))) + this::setPermission) + .allowC2S())) .child(new TextFieldWidget() - .value(new StringSyncValue(this::getColorStr, this::setColorStr)) + .value(new StringSyncValue(this::getColorStr, this::setColorStr) + .allowC2S()) .setMaxLength(8) .setValidator(str -> COLOR_INPUT_PATTERN.matcher(str).replaceAll("")) .addTooltipLine(Text.lang("cover.ender_link.tooltip.channel_name"))) @@ -294,7 +302,8 @@ public void createCoverUIRows(Flow column, SidedPosGuiData data, PanelSyncManage .setMaxLength(32) .widthRel(1f) .addTooltipLine(Text.lang("cover.ender_link.tooltip.channel_description")) - .value(new StringSyncValue(this::getDescription, this::setDescription)))); + .value(new StringSyncValue(this::getDescription, this::setDescription) + .allowC2S()))); Flow bottomRow = coverUIRow(); bottomRow.child(GTMuiWidgets.createPowerButton(this)); @@ -347,8 +356,24 @@ protected ModularPanel createChannelManagerPanel(GuiData data, PanelSyncManag .closeOnOutOfBoundsClick(true) .child(GTMuiWidgets.createTitleBar(() -> getAttachItem(), 176, GTGuiTextures.BACKGROUND)); + MutableSingletonList searchString = new MutableSingletonList<>(""); + var searchSync = SyncHandlers.string(searchString::get, searchString::set) + .allowC2S(); + Flow col = Flow.col() + .childPadding(4) + .widthRel(1) + .marginTop(7); + panel.child(col); + col.child(Flow.row() + .coverChildrenHeight() + .widthRel(0.8f) + .child(GuiTextures.SEARCH.asWidget()) + .child(new TextFieldWidget() + .widthRelOffset(1f, -20) + .value(searchSync))); + var entries = new GenericListSyncHandler.Builder() - .getter(this::getVirtualEntries) + .getter(() -> this.getVirtualEntries(entry -> entry.getDescription().contains(searchString.get()))) .adapter(new VirtualEntryAdapter()) .build(); syncManager.syncValue("entries", entries); @@ -377,9 +402,8 @@ protected ModularPanel createChannelManagerPanel(GuiData data, PanelSyncManag } }); - panel.child(new DynamicSyncedWidget<>() - .syncHandler(dynamicLinkedSyncHandler) - .top(7).margin(7, 0) + col.child(new DynamicSyncedWidget<>() + .syncHandler(dynamicLinkedSyncHandler).margin(7, 0) .widthRel(1.0f).coverChildrenHeight()); return panel; From 2a606240fa2bc12f9b1012eee9dabd572250968a Mon Sep 17 00:00:00 2001 From: TarLaboratories Date: Tue, 2 Jun 2026 12:35:53 +0300 Subject: [PATCH 2/2] spotless --- .../gtceu/common/cover/ender/AbstractEnderLinkCover.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java index 9a5216ff061..40386783dc0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ender/AbstractEnderLinkCover.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.common.cover.ender; -import brachy.modularui.drawable.GuiTextures; -import brachy.modularui.utils.MutableSingletonList; import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.api.capability.recipe.IO; @@ -29,6 +27,7 @@ import brachy.modularui.api.drawable.IDrawable; import brachy.modularui.api.drawable.Text; import brachy.modularui.api.widget.IWidget; +import brachy.modularui.drawable.GuiTextures; import brachy.modularui.drawable.Rectangle; import brachy.modularui.factory.GuiData; import brachy.modularui.factory.SidedPosGuiData; @@ -39,6 +38,7 @@ import brachy.modularui.utils.Alignment; import brachy.modularui.utils.Color; import brachy.modularui.utils.MouseData; +import brachy.modularui.utils.MutableSingletonList; import brachy.modularui.utils.serialization.network.IByteBufAdapter; import brachy.modularui.value.sync.*; import brachy.modularui.widget.EmptyWidget;