This commit is contained in:
GaLicn 2025-09-06 18:51:59 +08:00
parent 0d5ce9261e
commit 8f1fab8c58
4 changed files with 10 additions and 47 deletions

View File

@ -42,7 +42,7 @@ public abstract class PatternEncodingTermScreenMixin<T extends AEBaseMenu> {
// 复用已存在的按钮实例避免重复创建
if (eap$uploadBtn == null) {
eap$uploadBtn = new IconButton(btn -> PacketDistributor
.sendToServer(new com.extendedae_plus.network.RequestProvidersListC2SPacket())) {
.sendToServer(com.extendedae_plus.network.RequestProvidersListC2SPacket.INSTANCE)) {
private final float eap$scale = 0.75f; // 12x12
@Override

View File

@ -1,58 +1,22 @@
package com.extendedae_plus.mixin.ae2WTlib;
import com.extendedae_plus.util.ExtendedAEPatternUploadUtil;
import com.glodblock.github.extendedae.xmod.wt.ContainerUWirelessExPAT;
import com.glodblock.github.extendedae.xmod.wt.HostUWirelessExPAT;
import com.glodblock.github.glodium.network.packet.sync.IActionHolder;
import com.glodblock.github.glodium.network.packet.sync.Paras;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
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;
import java.util.Map;
import java.util.function.Consumer;
/**
* 为通用无线样板访问终端AE2WTlib 集成容器注册通用动作CGenericPacket 分发
*/
@Pseudo
@Mixin(ContainerUWirelessExPAT.class)
public abstract class ContainerUWirelessExPatternTerminalMixin implements IActionHolder {
@Unique
private final Map<String, Consumer<Paras>> eap$actions = createHolder();
@Unique
private Player eap$player;
@Mixin(targets = "com.glodblock.github.extendedae.xmod.wt.ContainerUWirelessExPAT", remap = false)
public abstract class ContainerUWirelessExPatternTerminalMixin {
// 1.21 环境下Glodium IActionHolder 已被移除改为 no-op 保留占位以便未来扩展
// 明确目标构造签名<init>(int, Inventory, HostUWirelessExPAT)
@Inject(method = "<init>(ILnet/minecraft/world/entity/player/Inventory;Lcom/glodblock/github/extendedae/xmod/wt/HostUWirelessExPAT;)V", at = @At("TAIL"), remap = false)
private void init(int id, net.minecraft.world.entity.player.Inventory playerInventory, HostUWirelessExPAT host, CallbackInfo ci) {
this.eap$player = playerInventory.player;
// 注册上传动作参数顺序必须与客户端 CGenericPacket 保持一致
this.eap$actions.put("upload", p -> {
try {
Object o0 = p.get(0);
Object o1 = p.get(1);
int playerSlotIndex = (o0 instanceof Number) ? ((Number) o0).intValue() : Integer.parseInt(String.valueOf(o0));
long providerId = (o1 instanceof Number) ? ((Number) o1).longValue() : Long.parseLong(String.valueOf(o1));
var sp = (ServerPlayer) this.eap$player;
ExtendedAEPatternUploadUtil.uploadPatternToProvider(sp, playerSlotIndex, providerId);
} catch (Throwable t) {
}
});
}
@NotNull
@Override
public Map<String, Consumer<Paras>> getActionMap() {
return this.eap$actions;
private void init(int id, net.minecraft.world.entity.player.Inventory playerInventory, Object host, CallbackInfo ci) {
// no-op
}
}

View File

@ -1,7 +1,5 @@
package com.extendedae_plus.mixin.extendedae.container;
import com.glodblock.github.extendedae.xmod.wt.ContainerWirelessExPAT;
import com.glodblock.github.extendedae.xmod.wt.HostWirelessExPAT;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.At;
@ -12,14 +10,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
* 为无线样板访问终端容器注册通用动作CGenericPacket 分发
*/
@Pseudo
@Mixin(value = ContainerWirelessExPAT.class, remap = false)
@Mixin(targets = "com.glodblock.github.extendedae.xmod.wt.ContainerWirelessExPAT", remap = false)
public abstract class ContainerWirelessExPatternTerminalMixin {
// 1.21 版本中 ExtendedAE 不再使用 glodium IActionHolder
// 保留空混入以便后续需要时扩展
// 构造方法注入显式签名 ExtendedAE 源码保持一致
@Inject(method = "<init>(ILnet/minecraft/world/entity/player/Inventory;Lcom/glodblock/github/extendedae/xmod/wt/HostWirelessExPAT;)V", at = @At("TAIL"), require = 0, remap = false)
private void init$eap(int id, net.minecraft.world.entity.player.Inventory playerInventory, HostWirelessExPAT host, CallbackInfo ci) {
private void init$eap(int id, net.minecraft.world.entity.player.Inventory playerInventory, Object host, CallbackInfo ci) {
// no-op
}
}

View File

@ -27,7 +27,8 @@
"ae2.accessor.AEBaseScreenAccessor",
"accessor.AbstractContainerScreenAccessor",
"accessor.ScreenAccessor",
"extendedae.accessor.GuiExPatternTerminalAccessor"
"extendedae.accessor.GuiExPatternTerminalAccessor",
"ae2WTlib.WETScreenMixin"
],
"injectors": {
"defaultRequire": 1