完成按钮去除有线终端的格子绘制

This commit is contained in:
GaLi 2025-08-09 02:42:27 +08:00
parent 552c1eff42
commit bccf0bf4c9
3 changed files with 71 additions and 1 deletions

2
.gitignore vendored
View File

@ -86,7 +86,7 @@ classes/
*.zip
# Reference source code (should not be tracked)
# ExtendedAE-1.20-1.4.2-forge/
ExtendedAE-1.20-1.4.2-forge/
GTLCore/
# Gradle wrapper (optional - some prefer to commit this)

View File

@ -0,0 +1,32 @@
package com.extendedae_plus.mixin;
import appeng.menu.guisync.GuiSync;
import com.glodblock.github.extendedae.container.ContainerExPatternTerminal;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ContainerExPatternTerminal.class)
public abstract class ContainerExPatternTerminalMixin {
@GuiSync(11452)
@Unique
public boolean hidePatternSlots = false;
@Unique
public boolean isHidePatternSlots() {
return this.hidePatternSlots;
}
@Unique
public void setHidePatternSlots(boolean hide) {
this.hidePatternSlots = hide;
}
@Unique
public void toggleHidePatternSlots() {
this.hidePatternSlots = !this.hidePatternSlots;
}
}

View File

@ -0,0 +1,38 @@
package com.extendedae_plus.mixin;
import appeng.client.gui.layout.SlotGridLayout;
import appeng.client.Point;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(SlotGridLayout.class)
public abstract class SlotGridLayoutMixin {
@Unique
private static final int SLOTS_PER_PAGE = 36;
@Inject(method = "getRowBreakPosition", at = @At("HEAD"), cancellable = true, remap = false)
private static void onGetRowBreakPosition(int x, int y, int semanticIdx, int cols, CallbackInfoReturnable<Point> cir) {
// 只处理BREAK_AFTER_9COLS布局
if (cols != 9) {
return;
}
// 计算当前页码
int currentPage = semanticIdx / SLOTS_PER_PAGE;
// 计算在当前页中的位置
int slotInPage = semanticIdx % SLOTS_PER_PAGE;
int row = slotInPage / 9; // 0-3
int col = slotInPage % 9; // 0-8
// 计算目标位置始终在前4行
int targetX = x + col * 18;
int targetY = y + row * 18;
cir.setReturnValue(new Point(targetX, targetY));
}
}