feat: eae扩展样板管理界面添加f键搜索支持

fix: 调整上传按钮位置
This commit is contained in:
C-H716 2025-09-14 00:43:04 +08:00
parent a3cd4d438b
commit 95ff0dd38d
3 changed files with 17 additions and 5 deletions

View File

@ -5,8 +5,10 @@ import appeng.client.gui.me.common.MEStorageScreen;
import com.extendedae_plus.ExtendedAEPlus; import com.extendedae_plus.ExtendedAEPlus;
import com.extendedae_plus.integration.jei.JeiRuntimeProxy; import com.extendedae_plus.integration.jei.JeiRuntimeProxy;
import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor; import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor;
import com.extendedae_plus.mixin.extendedae.accessor.GuiExPatternTerminalAccessor;
import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket; import com.extendedae_plus.network.OpenCraftFromJeiC2SPacket;
import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket; import com.extendedae_plus.network.PullFromJeiOrCraftC2SPacket;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
import mezz.jei.api.ingredients.ITypedIngredient; import mezz.jei.api.ingredients.ITypedIngredient;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
@ -121,6 +123,12 @@ public final class InputEvents {
return; return;
} catch (Throwable ignored) { } catch (Throwable ignored) {
} }
}else if (screen instanceof GuiExPatternTerminal<?> gpt) {
try {
GuiExPatternTerminalAccessor acc = (GuiExPatternTerminalAccessor) gpt;
acc.getSearchField().setValue(name);
event.setCanceled(true);
}catch (Throwable ignored) {}
} }
} }
} }

View File

@ -10,7 +10,7 @@ import appeng.menu.AEBaseMenu;
import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor; import com.extendedae_plus.mixin.accessor.AbstractContainerScreenAccessor;
import com.extendedae_plus.mixin.accessor.ScreenAccessor; import com.extendedae_plus.mixin.accessor.ScreenAccessor;
import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor; import com.extendedae_plus.mixin.ae2.accessor.AEBaseScreenAccessor;
import com.extendedae_plus.network.ModNetwork; import com.extendedae_plus.network.RequestProvidersListC2SPacket;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.renderer.Rect2i;
@ -42,7 +42,7 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
// 复用已存在的按钮实例避免重复创建 // 复用已存在的按钮实例避免重复创建
if (eap$uploadBtn == null) { if (eap$uploadBtn == null) {
eap$uploadBtn = new IconButton(btn -> PacketDistributor eap$uploadBtn = new IconButton(btn -> PacketDistributor
.sendToServer(com.extendedae_plus.network.RequestProvidersListC2SPacket.INSTANCE)) { .sendToServer(RequestProvidersListC2SPacket.INSTANCE)) {
private final float eap$scale = 0.75f; // 12x12 private final float eap$scale = 0.75f; // 12x12
@Override @Override
@ -106,15 +106,15 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).eap$getImageHeight(); int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).eap$getImageHeight();
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight); Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
var pos = ws.resolve(bounds); var pos = ws.resolve(bounds);
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16; int baseW = ws.getWidth() > 0 ? ws.getWidth() : 12;
int baseH = ws.getHeight() > 0 ? ws.getHeight() : 16; int baseH = ws.getHeight() > 0 ? ws.getHeight() : 12;
int targetW = Math.max(10, Math.round(baseW * 0.75f)); int targetW = Math.max(10, Math.round(baseW * 0.75f));
int targetH = Math.max(10, Math.round(baseH * 0.75f)); int targetH = Math.max(10, Math.round(baseH * 0.75f));
// 缩小为原尺寸的 0.75稍微变大于 8x8 // 缩小为原尺寸的 0.75稍微变大于 8x8
eap$uploadBtn.setWidth(targetW); eap$uploadBtn.setWidth(targetW);
eap$uploadBtn.setHeight(targetH); eap$uploadBtn.setHeight(targetH);
// 仍位于其左侧但整体向右微移减小间距 2px // 仍位于其左侧但整体向右微移减小间距 2px
eap$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2再右移 2px eap$uploadBtn.setX(pos.getX() - baseW - 2); // 原为 -targetW - 2再右移 2px
eap$uploadBtn.setY(pos.getY()); eap$uploadBtn.setY(pos.getY());
} catch (Throwable t) { } catch (Throwable t) {
// 回退放在界面右侧大致位置避免不可见 // 回退放在界面右侧大致位置避免不可见

View File

@ -1,5 +1,6 @@
package com.extendedae_plus.mixin.extendedae.accessor; package com.extendedae_plus.mixin.extendedae.accessor;
import appeng.client.gui.widgets.AETextField;
import appeng.client.gui.widgets.Scrollbar; import appeng.client.gui.widgets.Scrollbar;
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal; import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.Dist;
@ -20,4 +21,7 @@ public interface GuiExPatternTerminalAccessor {
@Accessor("rows") @Accessor("rows")
ArrayList<?> getRows(); ArrayList<?> getRows();
@Accessor("searchField")
AETextField getSearchField();
} }