diff --git a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java index 161faa5..0cc8580 100644 --- a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java @@ -33,8 +33,11 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen { @@ -291,9 +364,11 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen { @@ -315,6 +390,29 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen { + try { + net.minecraft.client.Minecraft minecraft = net.minecraft.client.Minecraft.getInstance(); + if (minecraft.level != null && minecraft.player != null) { + net.minecraft.server.level.ServerPlayer serverPlayer = minecraft.getSingleplayerServer() + .getPlayerList().getPlayer(minecraft.player.getUUID()); + if (serverPlayer != null) { + executePatternScalingOnServer(serverPlayer, "MULTIPLY", 5.0); + } else { + System.out.println("ExtendedAE Plus: 无法获取服务器端玩家实例"); + } + } else { + System.out.println("ExtendedAE Plus: 单机服务器未启动或玩家为null"); + } + } catch (Exception e) { + System.out.println("ExtendedAE Plus: 执行样板x5倍增时发生错误:" + e.getMessage()); + e.printStackTrace(); + } + }, NewIcon.MULTIPLY5); + this.x5Button.setVisibility(true); // /10 按钮 - 单机模式直接调用服务器端逻辑 this.divideBy10Button = new ActionEPPButton((b) -> { @@ -336,10 +434,38 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen { + try { + net.minecraft.client.Minecraft minecraft = net.minecraft.client.Minecraft.getInstance(); + if (minecraft.level != null && minecraft.player != null) { + net.minecraft.server.level.ServerPlayer serverPlayer = minecraft.getSingleplayerServer() + .getPlayerList().getPlayer(minecraft.player.getUUID()); + if (serverPlayer != null) { + executePatternScalingOnServer(serverPlayer, "DIVIDE", 5.0); + } else { + System.out.println("ExtendedAE Plus: 无法获取服务器端玩家实例"); + } + } else { + System.out.println("ExtendedAE Plus: 单机服务器未启动或玩家为null"); + } + } catch (Exception e) { + System.out.println("ExtendedAE Plus: 执行样板/5时发生错误:" + e.getMessage()); + e.printStackTrace(); + } + }, NewIcon.DIVIDE5); + this.divideBy5Button.setVisibility(true); + + // 注册新增按钮 + this.addRenderableWidget(this.divideBy5Button); + this.addRenderableWidget(this.x5Button); + this.addRenderableWidget(this.divideBy10Button); + this.addRenderableWidget(this.x10Button); } + + // 注意:不再注入 Screen#init,避免混入在某些映射情况下失败导致 TransformerError /** * 在服务器端执行样板缩放操作(单机模式)