修正版本号1.3.0

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

View File

@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
loom.platform = forge
# Mod properties
mod_version = 1.2.2
mod_version = 1.3.0
maven_group = com.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 net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.Rect2i;
import net.minecraft.network.chat.Component;
@ -44,10 +45,55 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
if (extendedae_plus$uploadBtn == null) {
extendedae_plus$uploadBtn = new IconButton(btn -> ModNetwork.CHANNEL
.sendToServer(new com.extendedae_plus.network.RequestProvidersListC2SPacket())) {
@Override
protected Icon getIcon() {
return Icon.ARROW_UP;
}
private final float extendedae_plus$scale = 0.75f; // 12x12
@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")));
}
@ -62,22 +108,24 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageHeight();
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
var pos = ws.resolve(bounds);
int targetW = ws.getWidth() > 0 ? ws.getWidth() : 18;
int targetH = ws.getHeight() > 0 ? ws.getHeight() : 18;
// 尺寸与 encodePattern 一致
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
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));
// 缩小为原尺寸的 0.75稍微变大于 8x8
extendedae_plus$uploadBtn.setWidth(targetW);
extendedae_plus$uploadBtn.setHeight(targetH);
// 放在其左侧紧挨预留 2px 间距
extendedae_plus$uploadBtn.setX(pos.getX() - targetW - 2);
// 仍位于其左侧但整体向右微移减小间距 2px
extendedae_plus$uploadBtn.setX(pos.getX() - targetW); // 原为 -targetW - 2再右移 2px
extendedae_plus$uploadBtn.setY(pos.getY());
} catch (Throwable t) {
// 回退放在界面右侧大致位置避免不可见
extendedae_plus$uploadBtn.setWidth(18);
extendedae_plus$uploadBtn.setHeight(18);
extendedae_plus$uploadBtn.setWidth(12);
extendedae_plus$uploadBtn.setHeight(12);
int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos();
int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos();
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);
}
@ -113,19 +161,21 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
int imageHeight = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageHeight();
Rect2i bounds = new Rect2i(leftPos, topPos, imageWidth, imageHeight);
var pos = ws.resolve(bounds);
int targetW = ws.getWidth() > 0 ? ws.getWidth() : 18;
int targetH = ws.getHeight() > 0 ? ws.getHeight() : 18;
int baseW = ws.getWidth() > 0 ? ws.getWidth() : 16;
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.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());
} catch (Throwable t) {
int leftPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getLeftPos();
int topPos = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getTopPos();
int imageWidth = ((AbstractContainerScreenAccessor<?>) (Object) this).extendedae_plus$getImageWidth();
extendedae_plus$uploadBtn.setWidth(18);
extendedae_plus$uploadBtn.setHeight(18);
extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 18 - 8);
extendedae_plus$uploadBtn.setWidth(12);
extendedae_plus$uploadBtn.setHeight(12);
extendedae_plus$uploadBtn.setX(leftPos + imageWidth - 12 - 8 + 2);
extendedae_plus$uploadBtn.setY(topPos + 88);
}
var accessor2 = (ScreenAccessor) (Object) this;