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] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=BE=E7=A4=BA=E6=A0=B7?= =?UTF-8?q?=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",