添加显示样板编码玩家

This commit is contained in:
xinyihl 2025-08-25 14:43:10 +08:00
parent 8423e8a215
commit 5314850bfd
4 changed files with 40 additions and 0 deletions

View File

@ -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<ItemStack> cir) {
ItemStack itemStack = cir.getReturnValue();
itemStack.getOrCreateTag().putString("encodePlayer", this.epp$player.getGameProfile().getName());
cir.setReturnValue(itemStack);
}
}

View File

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

View File

@ -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并行处理单元",

View File

@ -9,6 +9,7 @@
"accessor.ScreenAccessor",
"accessor.ScreenInvoker",
"ae2.AEBaseScreenMixin",
"ae2.EncodedPatternItemMixin",
"ae2.PatternEncodingTermScreenMixin",
"ae2.PatternProviderScreenMixin",
"ae2.QuartzCuttingKnifeItemMixin",