From 30bb52e2e9ad6997ce1ef803ca96cf228b57cd67 Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sun, 5 Oct 2025 12:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E7=BA=BF=E6=94=B6=E5=8F=91=E5=99=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0jade=E6=98=BE=E7=A4=BA=E6=89=80=E6=9C=89?= =?UTF-8?q?=E8=80=85/=E5=9B=A2=E9=98=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wireless/WirelessTransceiverBlock.java | 6 ++--- .../WirelessTransceiverBlockEntity.java | 26 +++++++++++++++++-- ...relessTransceiverJadePluginComponents.java | 16 ++++++++++++ .../jade/WirelessTransceiverProvider.java | 16 +++++++++++- .../assets/extendedae_plus/lang/en_us.json | 5 ++++ .../assets/extendedae_plus/lang/zh_cn.json | 5 ++++ 6 files changed, 68 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java index 8d2b47a..8041566 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlock.java @@ -39,7 +39,7 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (!level.isClientSide && placer instanceof Player player) { BlockEntity be = level.getBlockEntity(pos); if (be instanceof WirelessTransceiverBlockEntity te) { - te.setPlacerId(player.getUUID()); + te.setPlacerId(player.getUUID(), player.getName().getString()); } } } @@ -87,15 +87,15 @@ public class WirelessTransceiverBlock extends Block implements EntityBlock { if (cardOwner != null) { // 写入频道卡的所有者到收发器 - te.setPlacerId(cardOwner); String teamName = ChannelCardItem.getTeamName(channelCard); + te.setPlacerId(cardOwner, teamName); player.displayClientMessage( Component.literal("已将收发器绑定至:" + (teamName != null ? teamName : cardOwner.toString().substring(0, 8))), true ); } else { // 频道卡未绑定所有者,使用当前玩家 - te.setPlacerId(player.getUUID()); + te.setPlacerId(player.getUUID(), player.getName().getString()); player.displayClientMessage(Component.literal("频道卡未绑定,已使用当前玩家"), true); } } diff --git a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java index 1c6bd07..ca61349 100644 --- a/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java +++ b/src/main/java/com/extendedae_plus/content/wireless/WirelessTransceiverBlockEntity.java @@ -38,6 +38,8 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements @Nullable private UUID placerId; // 放置者UUID,用于队伍隔离 + @Nullable + private String placerName; // 放置者名称,用于显示 private WirelessMasterLink masterLink; private WirelessSlaveLink slaveLink; @@ -103,9 +105,9 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements /* ===================== 公共方法(交互调用) ===================== */ /** - * 设置放置者UUID(在方块放置时调用) + * 设置放置者UUID和名称(在方块放置时调用) */ - public void setPlacerId(@Nullable UUID placerId) { + public void setPlacerId(@Nullable UUID placerId, @Nullable String placerName) { if (this.placerId != null && !this.placerId.equals(placerId)) { // 如果所有者改变,需要重新注册 if (this.masterMode) { @@ -115,16 +117,29 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements } } this.placerId = placerId; + this.placerName = placerName; this.masterLink.setPlacerId(placerId); this.slaveLink.setPlacerId(placerId); setChanged(); } + /** + * 仅设置UUID(兼容旧代码) + */ + public void setPlacerId(@Nullable UUID placerId) { + setPlacerId(placerId, null); + } + @Nullable public UUID getPlacerId() { return placerId; } + @Nullable + public String getPlacerName() { + return placerName; + } + public long getFrequency() { return frequency; } @@ -224,6 +239,9 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements if (placerId != null) { tag.putUUID("placerId", placerId); } + if (placerName != null) { + tag.putString("placerName", placerName); + } if (managedNode != null) { managedNode.saveToNBT(tag); } @@ -241,6 +259,10 @@ public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements this.masterLink.setPlacerId(this.placerId); this.slaveLink.setPlacerId(this.placerId); } + + if (tag.contains("placerName")) { + this.placerName = tag.getString("placerName"); + } if (managedNode != null) { managedNode.loadFromNBT(tag); diff --git a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java index a9c7543..2c06c2b 100644 --- a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java +++ b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverJadePluginComponents.java @@ -83,6 +83,22 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr } } } + }, + OWNER("wt_owner") { + @Override + protected void add(BlockAccessor accessor, ITooltip tooltip, IPluginConfig config, CompoundTag data) { + if (data.contains("ownerName")) { + String ownerName = data.getString("ownerName"); + tooltip.add(Component.translatable("extendedae_plus.tooltip.owner", ownerName)); + } else if (data.contains("placerId")) { + // 有placerId但没有名称,显示UUID + java.util.UUID placerId = data.getUUID("placerId"); + tooltip.add(Component.translatable("extendedae_plus.tooltip.owner", placerId.toString().substring(0, 8) + "...")); + } else { + // 没有所有者信息(旧版本存档) + tooltip.add(Component.translatable("extendedae_plus.tooltip.owner.unset")); + } + } }; private final ResourceLocation uid; diff --git a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverProvider.java b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverProvider.java index 83213fe..d5ea951 100644 --- a/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverProvider.java +++ b/src/main/java/com/extendedae_plus/integration/jade/WirelessTransceiverProvider.java @@ -5,8 +5,10 @@ import appeng.api.networking.IGridNode; import com.extendedae_plus.ae.wireless.IWirelessEndpoint; import com.extendedae_plus.ae.wireless.WirelessMasterRegistry; import com.extendedae_plus.content.wireless.WirelessTransceiverBlockEntity; +import com.extendedae_plus.util.WirelessTeamUtil; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import snownee.jade.api.BlockAccessor; import snownee.jade.api.IServerDataProvider; @@ -62,11 +64,23 @@ public enum WirelessTransceiverProvider implements IServerDataProvider