From 5314850bfd73c21e1e9c7d31828b910c12b3aed1 Mon Sep 17 00:00:00 2001 From: xinyihl <1012737146@qq.com> Date: Mon, 25 Aug 2025 14:43:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=B7=E6=9D=BF=E7=BC=96=E7=A0=81=E7=8E=A9=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ContainerPatternEncodingTermMenuMixin.java | 10 +++++++ .../mixin/ae2/EncodedPatternItemMixin.java | 28 +++++++++++++++++++ .../assets/extendedae_plus/lang/zh_cn.json | 1 + .../resources/extendedae_plus.mixins.json | 1 + 4 files changed, 40 insertions(+) create mode 100644 src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java index 056f2b9..fa6c760 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/ContainerPatternEncodingTermMenuMixin.java @@ -9,6 +9,7 @@ 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 net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -16,6 +17,7 @@ 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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.Map; import java.util.function.Consumer; @@ -110,4 +112,12 @@ public abstract class ContainerPatternEncodingTermMenuMixin implements IActionHo } catch (Throwable ignored) { } } + + // 服务器端:在构造样板返回前插入编码玩家的名称 + @Inject(method = "encodePattern", at = @At("TAIL"), remap = false, cancellable = true) + private void eap$writeEncodePlayerToPattern(CallbackInfoReturnable cir) { + ItemStack itemStack = cir.getReturnValue(); + itemStack.getOrCreateTag().putString("encodePlayer", this.epp$player.getGameProfile().getName()); + cir.setReturnValue(itemStack); + } } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java new file mode 100644 index 0000000..930606b --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java @@ -0,0 +1,28 @@ +package com.extendedae_plus.mixin.ae2; + +import appeng.crafting.pattern.EncodedPatternItem; +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.spongepowered.asm.mixin.Mixin; +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.List; + +@Mixin(EncodedPatternItem.class) +public class EncodedPatternItemMixin { + // 客户端:在 HoverText 显示样板的编码玩家 + @Inject(method = "appendHoverText", at = @At("TAIL")) + public void epp$appendHoverText(ItemStack stack, Level level, List lines, TooltipFlag advancedTooltips, CallbackInfo ci){ + if (stack.hasTag()) { + CompoundTag tag = stack.getOrCreateTag(); + String name = tag.getString("encodePlayer"); + lines.add(Component.translatable("extendedae_plus.pattern.hovertext.player", name).withStyle(ChatFormatting.GRAY)); + } + } +} diff --git a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json index 5af7dbc..82e3da9 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -15,6 +15,7 @@ "extendedae_plus.screen.add_mapping": "增加映射", "extendedae_plus.screen.cn_name": "中文名", "extendedae_plus.button.choose_provider":"上传样板", + "extendedae_plus.pattern.hovertext.player": "由 %s 编码", "block.extendedae_plus.4x_crafting_accelerator": "4x并行处理单元", "block.extendedae_plus.16x_crafting_accelerator": "16x并行处理单元", diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index 9e0c12e..ebebd0c 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -9,6 +9,7 @@ "accessor.ScreenAccessor", "accessor.ScreenInvoker", "ae2.AEBaseScreenMixin", + "ae2.EncodedPatternItemMixin", "ae2.PatternEncodingTermScreenMixin", "ae2.PatternProviderScreenMixin", "ae2.QuartzCuttingKnifeItemMixin", From 462d3731a7a937f012c067e7e89d12834cf4344b Mon Sep 17 00:00:00 2001 From: xinyihl <1012737146@qq.com> Date: Sat, 30 Aug 2025 12:12:50 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=A0=B7=E6=9D=BF=E7=BC=96=E7=A0=81=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E9=85=8D=E7=BD=AE=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/extendedae_plus/config/ModConfigs.java | 9 +++++++++ .../mixin/ae2/EncodedPatternItemMixin.java | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/extendedae_plus/config/ModConfigs.java b/src/main/java/com/extendedae_plus/config/ModConfigs.java index 4a1409b..a0e9f19 100644 --- a/src/main/java/com/extendedae_plus/config/ModConfigs.java +++ b/src/main/java/com/extendedae_plus/config/ModConfigs.java @@ -7,6 +7,7 @@ public final class ModConfigs { public static final ForgeConfigSpec.IntValue PAGE_MULTIPLIER; public static final ForgeConfigSpec.DoubleValue WIRELESS_MAX_RANGE; public static final ForgeConfigSpec.BooleanValue WIRELESS_CROSS_DIM_ENABLE; + public static final ForgeConfigSpec.BooleanValue SHOW_ENCOD_PATTERN_PLAYER; static { ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); @@ -32,6 +33,14 @@ public final class ModConfigs { "是否允许无线收发器跨维度建立连接", "开启后,从端可连接到不同维度的主端(忽略距离限制)") .define("wirelessCrossDimEnable", true); + + SHOW_ENCOD_PATTERN_PLAYER = builder + .comment( + "是否显示样板编码玩家", + "开启后将在样板 HoverText 上添加样板的编码玩家" + ) + .define("showEncoderPatternPlayer", true); + builder.pop(); COMMON_SPEC = builder.build(); } diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java index 930606b..122d074 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodedPatternItemMixin.java @@ -1,6 +1,7 @@ package com.extendedae_plus.mixin.ae2; import appeng.crafting.pattern.EncodedPatternItem; +import com.extendedae_plus.config.ModConfigs; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -19,7 +20,7 @@ public class EncodedPatternItemMixin { // 客户端:在 HoverText 显示样板的编码玩家 @Inject(method = "appendHoverText", at = @At("TAIL")) public void epp$appendHoverText(ItemStack stack, Level level, List lines, TooltipFlag advancedTooltips, CallbackInfo ci){ - if (stack.hasTag()) { + if (stack.hasTag() && ModConfigs.SHOW_ENCOD_PATTERN_PLAYER.get()) { CompoundTag tag = stack.getOrCreateTag(); String name = tag.getString("encodePlayer"); lines.add(Component.translatable("extendedae_plus.pattern.hovertext.player", name).withStyle(ChatFormatting.GRAY));