v2.3.9
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package thaumicenergistics.common.integration.jade;
|
||||
|
||||
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.IBlockComponentProvider;
|
||||
import snownee.jade.api.IServerDataProvider;
|
||||
import snownee.jade.api.ITooltip;
|
||||
import snownee.jade.api.config.IPluginConfig;
|
||||
import thaumicenergistics.ThaumicEnergistics;
|
||||
import thaumicenergistics.common.tiles.TileArcaneAssembler;
|
||||
|
||||
/**
|
||||
* 奥术装配器 Jade 显示:
|
||||
* <ul>
|
||||
* <li>网络状态:在线(节点 active)/ 无频道(有能量)/ 离线(无能量)</li>
|
||||
* <li>要素状态:已连接(内存卡配置了 vis 源频率)/ 未连接</li>
|
||||
* </ul>
|
||||
* 服务端把状态写入 NBT,客户端渲染。
|
||||
*/
|
||||
public enum AssemblerProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
|
||||
INSTANCE;
|
||||
|
||||
private static final String TAG_ONLINE = "NetworkOnline";
|
||||
private static final String TAG_POWERED = "NodePowered";
|
||||
private static final String TAG_VIS = "VisConnected";
|
||||
|
||||
@Override
|
||||
public void appendServerData(CompoundTag data, BlockAccessor accessor) {
|
||||
if (accessor.getBlockEntity() instanceof TileArcaneAssembler assembler) {
|
||||
data.putBoolean(TAG_ONLINE, assembler.isActive());
|
||||
data.putBoolean(TAG_POWERED, assembler.isNodePowered());
|
||||
data.putBoolean(TAG_VIS, assembler.getVisSourceFreq() != 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfig config) {
|
||||
if (!accessor.getServerData().contains(TAG_ONLINE)) return;
|
||||
|
||||
boolean online = accessor.getServerData().getBoolean(TAG_ONLINE);
|
||||
boolean powered = accessor.getServerData().getBoolean(TAG_POWERED);
|
||||
boolean visConnected = accessor.getServerData().getBoolean(TAG_VIS);
|
||||
|
||||
String statusKey;
|
||||
int color;
|
||||
if (online) {
|
||||
statusKey = "thaumicenergistics.jade.provider.online";
|
||||
color = 0xFF55FF55;
|
||||
} else if (powered) {
|
||||
statusKey = "thaumicenergistics.jade.provider.no_channel";
|
||||
color = 0xFFFFAA55;
|
||||
} else {
|
||||
statusKey = "thaumicenergistics.jade.provider.offline";
|
||||
color = 0xFFFF5555;
|
||||
}
|
||||
|
||||
tooltip.add(Component.translatable("thaumicenergistics.jade.provider.network",
|
||||
Component.translatable(statusKey).withStyle(style -> style.withColor(color))));
|
||||
|
||||
// 要素源状态:已连接(绿)/ 未连接(灰)
|
||||
tooltip.add(Component.translatable("thaumicenergistics.jade.assembler.vis_source",
|
||||
Component.translatable(visConnected
|
||||
? "thaumicenergistics.jade.assembler.vis_connected"
|
||||
: "thaumicenergistics.jade.assembler.vis_disconnected")
|
||||
.withStyle(style -> style.withColor(visConnected ? 0xFF55FF55 : 0xFFAAAAAA))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getUid() {
|
||||
return ResourceLocation.fromNamespaceAndPath(ThaumicEnergistics.MODID, "assembler");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user