更换贴图

This commit is contained in:
GaLicn 2025-09-07 13:35:03 +08:00
parent a4ee7651d3
commit c3c43df68b
17 changed files with 27 additions and 16 deletions

View File

@ -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 {
}
}
}
}
}

View File

@ -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
);
}

View File

@ -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,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 383 B