更换贴图
|
|
@ -3,6 +3,7 @@ package com.extendedae_plus.mixin.extendedae.client;
|
|||
import com.glodblock.github.extendedae.client.button.HighlightButton;
|
||||
import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal;
|
||||
import net.minecraft.client.gui.components.Button;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
|
@ -55,7 +56,23 @@ public abstract class HighlightButtonMixin {
|
|||
boolean posEqual = Objects.equals(btnPos, infoPos);
|
||||
boolean faceEqual = (btnFace == null && infoFace == null) || Objects.equals(btnFace, infoFace);
|
||||
if (posEqual && faceEqual) {
|
||||
// 当前仅执行高亮和坐标提示功能,避免反射调用不存在的方法导致告警。
|
||||
// 选中当前供应器:使用 mixin 新增的 setter(通过反射调用以兼容编译期)
|
||||
try {
|
||||
long serverId = (long) entry.getKey();
|
||||
var setter = terminal.getClass().getMethod("setCurrentlyChoicePatternProvider", long.class);
|
||||
setter.setAccessible(true);
|
||||
setter.invoke(terminal, serverId);
|
||||
|
||||
// 提示玩家已选择供应器
|
||||
if (minecraft.player != null) {
|
||||
minecraft.player.displayClientMessage(
|
||||
Component.literal("ExtendedAE Plus: 已选择样板供应器 (ID=" + serverId + "),可按住Shift左键快速上传样板"),
|
||||
true
|
||||
);
|
||||
}
|
||||
} catch (Throwable t2) {
|
||||
LOGGER.warn("设置当前样板供应器ID失败", t2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -65,5 +82,4 @@ public abstract class HighlightButtonMixin {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -141,22 +141,16 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen<AEBaseMenu>
|
|||
ItemStack itemToUpload = this.minecraft.player.getInventory().getItem(playerSlotIndex);
|
||||
|
||||
if (!itemToUpload.isEmpty() && PatternDetailsHelper.isEncodedPattern(itemToUpload)) {
|
||||
// 通过反射调用 ExtendedAE 的网络发送(软依赖)
|
||||
// 改用我们自己的网络包,直接将玩家槽位与选择的供应器ID发送到服务器
|
||||
try {
|
||||
Class<?> EPPNetworkHandlerClass = Class.forName("com.glodblock.github.extendedae.network.EPPNetworkHandler");
|
||||
Object handlerInstance = EPPNetworkHandlerClass.getField("INSTANCE").get(null);
|
||||
|
||||
Class<?> packetClass = Class.forName("com.glodblock.github.glodium.network.packet.CGenericPacket");
|
||||
Constructor<?> constructor = packetClass.getConstructor(String.class, Object[].class);
|
||||
Object packet = constructor.newInstance("upload", new Object[]{playerSlotIndex, eap$currentlyChoicePatterProvider});
|
||||
|
||||
Class<?> iMessage = Class.forName("com.glodblock.github.glodium.network.packet.IMessage");
|
||||
Method sendToServer = EPPNetworkHandlerClass.getMethod("sendToServer", iMessage);
|
||||
|
||||
sendToServer.invoke(handlerInstance, packet);
|
||||
PacketDistributor.sendToServer(new com.extendedae_plus.network.UploadInventoryPatternToProviderC2SPacket(
|
||||
playerSlotIndex,
|
||||
eap$currentlyChoicePatterProvider
|
||||
));
|
||||
} catch (Throwable t) {
|
||||
// 理论上不会失败,若失败则给出简要提示
|
||||
this.minecraft.player.displayClientMessage(
|
||||
Component.literal("❌ ExtendedAE Plus: 未找到 ExtendedAE 网络支持(可能未安装或版本不兼容)"),
|
||||
Component.literal("❌ ExtendedAE Plus: 客户端发送上传请求失败"),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ public class ModNetwork {
|
|||
registrar.playToServer(CraftingMonitorOpenProviderC2SPacket.TYPE, CraftingMonitorOpenProviderC2SPacket.STREAM_CODEC, CraftingMonitorOpenProviderC2SPacket::handle);
|
||||
registrar.playToServer(OpenProviderUiC2SPacket.TYPE, OpenProviderUiC2SPacket.STREAM_CODEC, OpenProviderUiC2SPacket::handle);
|
||||
registrar.playToServer(UploadEncodedPatternToProviderC2SPacket.TYPE, UploadEncodedPatternToProviderC2SPacket.STREAM_CODEC, UploadEncodedPatternToProviderC2SPacket::handle);
|
||||
registrar.playToServer(UploadInventoryPatternToProviderC2SPacket.TYPE, UploadInventoryPatternToProviderC2SPacket.STREAM_CODEC, UploadInventoryPatternToProviderC2SPacket::handle);
|
||||
// 新增:JEI 中键打开合成界面 & 无线终端拾取方块物品
|
||||
registrar.playToServer(com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.TYPE,
|
||||
com.extendedae_plus.network.OpenCraftFromJeiC2SPacket.STREAM_CODEC,
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 300 B |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 383 B |