修正版本号1.3.0

This commit is contained in:
GaLicn 2025-08-16 21:31:35 +08:00
parent b9c07200fb
commit 8730742123
2 changed files with 69 additions and 19 deletions

View File

@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
loom.platform = forge loom.platform = forge
# Mod properties # Mod properties
mod_version = 1.2.2 mod_version = 1.3.0
maven_group = com.extendedae_plus maven_group = com.extendedae_plus
archives_name = extendedae_plus archives_name = extendedae_plus

View File

@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.renderer.Rect2i;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
@ -44,10 +45,55 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
if (extendedae_plus$uploadBtn == null) { if (extendedae_plus$uploadBtn == null) {
extendedae_plus$uploadBtn = new IconButton(btn -> ModNetwork.CHANNEL extendedae_plus$uploadBtn = new IconButton(btn -> ModNetwork.CHANNEL
.sendToServer(new com.extendedae_plus.network.RequestProvidersListC2SPacket())) { .sendToServer(new com.extendedae_plus.network.RequestProvidersListC2SPacket())) {
@Override private final float extendedae_plus$scale = 0.75f; // 12x12
protected Icon getIcon() {
return Icon.ARROW_UP; @Override
} protected Icon getIcon() {
return Icon.ARROW_UP;
}
@Override
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partial) {
// 参照 AE2 IconButton 实现改为自定义缩放
if (this.visible) {
var icon = this.getIcon();
var blitter = icon.getBlitter();
if (!this.active) {
blitter.opacity(0.5f);
}
// 动态更新宽高用于聚焦边框/命中框
this.width = Math.round(16 * extendedae_plus$scale);
this.height = Math.round(16 * extendedae_plus$scale);
com.mojang.blaze3d.systems.RenderSystem.disableDepthTest();
com.mojang.blaze3d.systems.RenderSystem.enableBlend();
if (isFocused()) {
guiGraphics.fill(getX() - 1, getY() - 1, getX() + width + 1, getY(), 0xFFFFFFFF);
guiGraphics.fill(getX() - 1, getY(), getX(), getY() + height, 0xFFFFFFFF);
guiGraphics.fill(getX() + width, getY(), getX() + width + 1, getY() + height, 0xFFFFFFFF);
guiGraphics.fill(getX() - 1, getY() + height, getX() + width + 1, getY() + height + 1, 0xFFFFFFFF);
}
var pose = guiGraphics.pose();
pose.pushPose();
pose.translate(getX(), getY(), 0.0F);
pose.scale(extendedae_plus$scale, extendedae_plus$scale, 1.f);
if (!this.isDisableBackground()) {
Icon.TOOLBAR_BUTTON_BACKGROUND.getBlitter().dest(0, 0).blit(guiGraphics);
}
blitter.dest(0, 0).blit(guiGraphics);
pose.popPose();
com.mojang.blaze3d.systems.RenderSystem.enableDepthTest();
}
}
@Override
public Rect2i getTooltipArea() {
return new Rect2i(getX(), getY(), Math.round(16 * extendedae_plus$scale), Math.round(16 * extendedae_plus$scale));
}
}; };
extendedae_plus$uploadBtn.setTooltip(Tooltip.create(Component.translatable("extendedae_plus.button.choose_provider"))); extendedae_plus$uploadBtn.setTooltip(Tooltip.create(Component.translatable("extendedae_plus.button.choose_provider")));
} }
@ -62,22 +108,24 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageHeight(); int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$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 targetW = ws.getWidth() > 0 ? ws.getWidth() : 18; int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
int targetH = ws.getHeight() > 0 ? ws.getHeight() : 18; int baseH = ws.getHeight() > 0 ? ws.getHeight() : 16;
// 尺寸与 encodePattern 一致 int targetW = Math.max(10, Math.round(baseW * 0.75f));
int targetH = Math.max(10, Math.round(baseH * 0.75f));
// 缩小为原尺寸的 0.75稍微变大于 8x8
extendedae_plus$uploadBtn.setWidth(targetW); extendedae_plus$uploadBtn.setWidth(targetW);
extendedae_plus$uploadBtn.setHeight(targetH); extendedae_plus$uploadBtn.setHeight(targetH);
// 放在其左侧紧挨预留 2px 间距 // 仍位于其左侧但整体向右微移减小间距 2px
extendedae_plus$uploadBtn.setX(pos.getX() - targetW - 2); extendedae_plus$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2再右移 2px
extendedae_plus$uploadBtn.setY(pos.getY()); extendedae_plus$uploadBtn.setY(pos.getY());
} catch (Throwable t) { } catch (Throwable t) {
// 回退放在界面右侧大致位置避免不可见 // 回退放在界面右侧大致位置避免不可见
extendedae_plus$uploadBtn.setWidth(18); extendedae_plus$uploadBtn.setWidth(12);
extendedae_plus$uploadBtn.setHeight(18); extendedae_plus$uploadBtn.setHeight(12);
int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos(); int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos();
int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos(); int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos();
int imageWidth = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageWidth(); int imageWidth = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageWidth();
extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 18 - 8); extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2); // 向右微移 2px
extendedae_plus$uploadBtn.setY(topPos + 88); extendedae_plus$uploadBtn.setY(topPos + 88);
} }
@ -113,19 +161,21 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageHeight(); int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$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 targetW = ws.getWidth() > 0 ? ws.getWidth() : 18; int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
int targetH = ws.getHeight() > 0 ? ws.getHeight() : 18; int baseH = ws.getHeight() > 0 ? ws.getHeight() : 16;
int targetW = Math.max(10, Math.round(baseW * 0.75f));
int targetH = Math.max(10, Math.round(baseH * 0.75f));
extendedae_plus$uploadBtn.setWidth(targetW); extendedae_plus$uploadBtn.setWidth(targetW);
extendedae_plus$uploadBtn.setHeight(targetH); extendedae_plus$uploadBtn.setHeight(targetH);
extendedae_plus$uploadBtn.setX(pos.getX() - targetW - 2); extendedae_plus$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2再右移 2px
extendedae_plus$uploadBtn.setY(pos.getY()); extendedae_plus$uploadBtn.setY(pos.getY());
} catch (Throwable t) { } catch (Throwable t) {
int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos(); int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos();
int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos(); int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos();
int imageWidth = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageWidth(); int imageWidth = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageWidth();
extendedae_plus$uploadBtn.setWidth(18); extendedae_plus$uploadBtn.setWidth(12);
extendedae_plus$uploadBtn.setHeight(18); extendedae_plus$uploadBtn.setHeight(12);
extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 18 - 8); extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2);
extendedae_plus$uploadBtn.setY(topPos + 88); extendedae_plus$uploadBtn.setY(topPos + 88);
} }
var accessor2 = (ScreenAccessor) (Object) this; var accessor2 = (ScreenAccessor) (Object) this;