mixin
This commit is contained in:
parent
0d5ce9261e
commit
8f1fab8c58
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@
|
|||
"ae2.accessor.AEBaseScreenAccessor",
|
||||
"accessor.AbstractContainerScreenAccessor",
|
||||
"accessor.ScreenAccessor",
|
||||
"extendedae.accessor.GuiExPatternTerminalAccessor"
|
||||
"extendedae.accessor.GuiExPatternTerminalAccessor",
|
||||
"ae2WTlib.WETScreenMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user