feat: 调整无线收发器继承AEBaseBlockEntity以支持ae方块重命名功能; 添加jade从节点方块显示主节点名称

This commit is contained in:
C-H716 2025-09-15 14:50:22 +08:00
parent 9f98768ee2
commit fa37427dda
3 changed files with 15 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package com.extendedae_plus.content.wireless;
import appeng.api.networking.*; import appeng.api.networking.*;
import appeng.api.util.AECableType; import appeng.api.util.AECableType;
import appeng.blockentity.AEBaseBlockEntity;
import com.extendedae_plus.init.ModBlockEntities; import com.extendedae_plus.init.ModBlockEntities;
import com.extendedae_plus.init.ModItems; import com.extendedae_plus.init.ModItems;
import com.extendedae_plus.wireless.IWirelessEndpoint; import com.extendedae_plus.wireless.IWirelessEndpoint;
@ -12,7 +13,6 @@ import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -26,7 +26,7 @@ import java.util.Objects;
* - 集成 AE2 节点 * - 集成 AE2 节点
* - 集成无线主/从逻辑 * - 集成无线主/从逻辑
*/ */
public class WirelessTransceiverBlockEntity extends BlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost { public class WirelessTransceiverBlockEntity extends AEBaseBlockEntity implements IWirelessEndpoint, IInWorldGridNodeHost {
private IManagedGridNode managedNode; private IManagedGridNode managedNode;
@ -187,7 +187,7 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
/* ===================== NBT ===================== */ /* ===================== NBT ===================== */
@Override @Override
protected void saveAdditional(CompoundTag tag) { public void saveAdditional(CompoundTag tag) {
super.saveAdditional(tag); super.saveAdditional(tag);
tag.putLong("frequency", frequency); tag.putLong("frequency", frequency);
tag.putBoolean("master", masterMode); tag.putBoolean("master", masterMode);
@ -198,15 +198,15 @@ public class WirelessTransceiverBlockEntity extends BlockEntity implements IWire
} }
@Override @Override
public void load(CompoundTag tag) { public void loadTag(CompoundTag tag) {
super.load(tag); super.loadTag(tag);
this.frequency = tag.getLong("frequency"); this.frequency = tag.getLong("frequency");
this.masterMode = tag.getBoolean("master"); this.masterMode = tag.getBoolean("master");
this.locked = tag.getBoolean("locked"); this.locked = tag.getBoolean("locked");
if (managedNode != null) { if (managedNode != null) {
managedNode.loadFromNBT(tag); managedNode.loadFromNBT(tag);
} }
// 应用到链接器
if (masterMode) { if (masterMode) {
masterLink.setFrequency(frequency); masterLink.setFrequency(frequency);
} else { } else {

View File

@ -37,7 +37,12 @@ public enum WirelessTransceiverJadePluginComponents implements IBlockComponentPr
if (data.contains("masterMode") && !data.getBoolean("masterMode") && data.contains("masterPos")) { if (data.contains("masterMode") && !data.getBoolean("masterMode") && data.contains("masterPos")) {
BlockPos pos = BlockPos.of(data.getLong("masterPos")); BlockPos pos = BlockPos.of(data.getLong("masterPos"));
String dim = data.contains("masterDim") ? data.getString("masterDim") : ""; String dim = data.contains("masterDim") ? data.getString("masterDim") : "";
tooltip.add(Component.literal("主节点位置: (" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")")); String customName = data.contains("customName") ? data.getString("customName") : null;
if (customName != null) {
tooltip.add(Component.literal("主节点: " + customName + "(" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")"));
} else {
tooltip.add(Component.literal("主节点位置: (" + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + ")"));
}
if (!dim.isEmpty()) { if (!dim.isEmpty()) {
tooltip.add(Component.literal("维度: " + dim)); tooltip.add(Component.literal("维度: " + dim));
} }

View File

@ -46,6 +46,9 @@ public enum WirelessTransceiverProvider implements IServerDataProvider<BlockAcce
long freq = blockEntity.getFrequency(); long freq = blockEntity.getFrequency();
IWirelessEndpoint master = WirelessMasterRegistry.get(level, freq); IWirelessEndpoint master = WirelessMasterRegistry.get(level, freq);
if (master != null && !master.isEndpointRemoved()) { if (master != null && !master.isEndpointRemoved()) {
if (master instanceof WirelessTransceiverBlockEntity masterBlockEntity && masterBlockEntity.getCustomName() != null) {
data.putString("customName", masterBlockEntity.getCustomName().getString());
}
BlockPos pos = master.getBlockPos(); BlockPos pos = master.getBlockPos();
if (pos != null) { if (pos != null) {
data.putLong("masterPos", pos.asLong()); data.putLong("masterPos", pos.asLong());