From 729bfdbc2d3bc29efad1dd5b1f43d99b6960b1a0 Mon Sep 17 00:00:00 2001 From: JuiceyBeans <75553966+JuiceyBeans@users.noreply.github.com> Date: Mon, 5 Jan 2026 14:44:55 +0400 Subject: [PATCH] LDPE Jade provider --- .../resources/assets/gtceu/lang/en_ud.json | 5 ++ .../resources/assets/gtceu/lang/en_us.json | 5 ++ .../gtceu/data/lang/IntegrationLang.java | 5 ++ .../gtceu/data/lang/LangHandler.java | 1 + .../gtceu/integration/jade/GTJadePlugin.java | 2 + .../jade/provider/LDPEndpointProvider.java | 57 +++++++++++++++++++ 6 files changed, 75 insertions(+) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java diff --git a/src/generated/resources/assets/gtceu/lang/en_ud.json b/src/generated/resources/assets/gtceu/lang/en_ud.json index 5f7ddfe6700..3ddb5f009a4 100644 --- a/src/generated/resources/assets/gtceu/lang/en_ud.json +++ b/src/generated/resources/assets/gtceu/lang/en_ud.json @@ -1912,6 +1912,7 @@ "config.jade.plugin_gtceu.energy_converter_provider": "ǝpoW ɹǝʇɹǝʌuoƆ ʎbɹǝuƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.exhaust_vent_info": "oɟuI ʇuǝΛ ʇsnɐɥxƎ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.hazard_cleaner_provider": "ɹǝuɐǝןƆ pɹɐzɐH ]nƎƆ⟘⅁[", + "config.jade.plugin_gtceu.ldp_endpoint": "oɟuI ʇuıodpuƎ ǝuıןǝdıԀ ǝɔuɐʇsıᗡ buoꞀ ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.machine_mode": "ǝpoW ǝuıɥɔɐW ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.maintenance_info": "oɟuI ǝɔuɐuǝʇuıɐW ]nƎƆ⟘⅁[", "config.jade.plugin_gtceu.me_pattern_buffer": "oɟuI ɹǝɟɟnᗺ uɹǝʇʇɐԀ ]nƎƆ⟘⅁[", @@ -3859,6 +3860,10 @@ "gtceu.top.fuel_none": "ןǝnɟ oN", "gtceu.top.invalid_structure": "ǝʇǝןdɯoɔuI ǝɹnʇɔnɹʇS", "gtceu.top.item_auto_output": "%s :ʇndʇnO ɯǝʇI", + "gtceu.top.ldp_endpoint.io_type": "%s :ǝdʎ⟘ OI", + "gtceu.top.ldp_endpoint.is_formed": "ɹ§pǝɯɹoℲ ǝuıןǝdıԀɐ§", + "gtceu.top.ldp_endpoint.not_formed": "ɹ§ǝʇǝןdɯoɔuI ǝuıןǝdıԀɔ§", + "gtceu.top.ldp_endpoint.output_direction": "%s :uoıʇɔǝɹıᗡ ʇndʇnO", "gtceu.top.link_cover.color": ":ɹoןoƆ", "gtceu.top.machine_mode": " :ǝpoW ǝuıɥɔɐW", "gtceu.top.maintenance.crowbar": "ǝɹǝɥʇ buoןǝq ʇ,usǝop ʇɐɥ⟘", diff --git a/src/generated/resources/assets/gtceu/lang/en_us.json b/src/generated/resources/assets/gtceu/lang/en_us.json index 18b9a4c3d0e..39a1e4828ab 100644 --- a/src/generated/resources/assets/gtceu/lang/en_us.json +++ b/src/generated/resources/assets/gtceu/lang/en_us.json @@ -1912,6 +1912,7 @@ "config.jade.plugin_gtceu.energy_converter_provider": "[GTCEu] Energy Converter Mode", "config.jade.plugin_gtceu.exhaust_vent_info": "[GTCEu] Exhaust Vent Info", "config.jade.plugin_gtceu.hazard_cleaner_provider": "[GTCEu] Hazard Cleaner", + "config.jade.plugin_gtceu.ldp_endpoint": "[GTCEu] Long Distance Pipeline Endpoint Info", "config.jade.plugin_gtceu.machine_mode": "[GTCEu] Machine Mode", "config.jade.plugin_gtceu.maintenance_info": "[GTCEu] Maintenance Info", "config.jade.plugin_gtceu.me_pattern_buffer": "[GTCEu] Pattern Buffer Info", @@ -3859,6 +3860,10 @@ "gtceu.top.fuel_none": "No fuel", "gtceu.top.invalid_structure": "Structure Incomplete", "gtceu.top.item_auto_output": "Item Output: %s", + "gtceu.top.ldp_endpoint.io_type": "IO Type: %s", + "gtceu.top.ldp_endpoint.is_formed": "§aPipeline Formed§r", + "gtceu.top.ldp_endpoint.not_formed": "§cPipeline Incomplete§r", + "gtceu.top.ldp_endpoint.output_direction": "Output Direction: %s", "gtceu.top.link_cover.color": "Color:", "gtceu.top.machine_mode": "Machine Mode: ", "gtceu.top.maintenance.crowbar": "That doesn't belong there", diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java index f53652dc788..ec15a7bd5b4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/IntegrationLang.java @@ -105,6 +105,11 @@ private static void initWailaLikeLang(RegistrateLangProvider provider) { provider.add("gtceu.top.progress_computation", " / %s CWU"); provider.add("gtceu.top.progress_sec", " / %s s"); provider.add("gtceu.top.progress_tick", " / %s t"); + + provider.add("gtceu.top.ldp_endpoint.is_formed", "§aPipeline Formed§r"); + provider.add("gtceu.top.ldp_endpoint.not_formed", "§cPipeline Incomplete§r"); + provider.add("gtceu.top.ldp_endpoint.io_type", "IO Type: %s"); + provider.add("gtceu.top.ldp_endpoint.output_direction", "Output Direction: %s"); } private static void initMinimapLang(RegistrateLangProvider provider) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index 79e553a3aca..8a903d631d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -1227,6 +1227,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("config.jade.plugin_gtceu.me_pattern_buffer", "[GTCEu] Pattern Buffer Info"); provider.add("config.jade.plugin_gtceu.me_pattern_buffer_proxy", "[GTCEu] Pattern Buffer Proxy Info"); provider.add("config.jade.plugin_gtceu.energy_converter_provider", "[GTCEu] Energy Converter Mode"); + provider.add("config.jade.plugin_gtceu.ldp_endpoint", "[GTCEu] Long Distance Pipeline Endpoint Info"); // gui provider.add("gtceu.button.ore_veins", "Show GT Ore Veins"); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java index b1ca1bb47eb..9228bc795a6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/GTJadePlugin.java @@ -44,6 +44,7 @@ public void register(IWailaCommonRegistration registration) { registration.registerBlockDataProvider(new PrimitivePumpBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new DataBankBlockProvider(), BlockEntity.class); registration.registerBlockDataProvider(new EnergyConverterModeProvider(), BlockEntity.class); + registration.registerBlockDataProvider(new LDPEndpointProvider(), BlockEntity.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockDataProvider(new MEPatternBufferProvider(), BlockEntity.class); registration.registerBlockDataProvider(new MEPatternBufferProxyProvider(), BlockEntity.class); @@ -74,6 +75,7 @@ public void registerClient(IWailaClientRegistration registration) { registration.registerBlockComponent(new TransformerBlockProvider(), Block.class); registration.registerBlockComponent(new PrimitivePumpBlockProvider(), Block.class); registration.registerBlockComponent(new DataBankBlockProvider(), Block.class); + registration.registerBlockComponent(new LDPEndpointProvider(), Block.class); registration.registerBlockComponent(new EnergyConverterModeProvider(), Block.class); if (GTCEu.Mods.isAE2Loaded()) { registration.registerBlockComponent(new MEPatternBufferProvider(), Block.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java new file mode 100644 index 00000000000..9ac7dfc3025 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/jade/provider/LDPEndpointProvider.java @@ -0,0 +1,57 @@ +package com.gregtechceu.gtceu.integration.jade.provider; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.common.machine.storage.LongDistanceEndpointMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; + +import net.minecraft.ChatFormatting; +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; + +public class LDPEndpointProvider implements IBlockComponentProvider, IServerDataProvider { + + @Override + public void appendTooltip(ITooltip iTooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) { + if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { + MetaMachine machine = blockEntity.getMetaMachine(); + if (machine instanceof LongDistanceEndpointMachine) { + boolean isFormed = blockAccessor.getServerData().getBoolean("isFormed"); + String ioType = blockAccessor.getServerData().getString("ioType"); + String outputDirection = blockAccessor.getServerData().getString("outputDirection"); + + iTooltip.add(Component.translatable( + isFormed ? "gtceu.top.ldp_endpoint.is_formed" : "gtceu.top.ldp_endpoint.not_formed")); + iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.io_type", Component.translatable(ioType) + .withStyle(ioType.contains("import") ? ChatFormatting.GREEN : ChatFormatting.RED))); + iTooltip.add(Component.translatable("gtceu.top.ldp_endpoint.output_direction", + FormattingUtil.toEnglishName((outputDirection)))); + } + } + } + + @Override + public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) { + if (blockAccessor.getBlockEntity() instanceof IMachineBlockEntity blockEntity) { + MetaMachine machine = blockEntity.getMetaMachine(); + if (machine instanceof LongDistanceEndpointMachine ldpEndpoint) { + compoundTag.putBoolean("isFormed", ldpEndpoint.getLink() == null ? false : true); + compoundTag.putString("ioType", ldpEndpoint.getIoType().getTooltip()); + compoundTag.putString("outputDirection", ldpEndpoint.getOutputFacing().getName()); + } + } + } + + @Override + public ResourceLocation getUid() { + return GTCEu.id("ldp_endpoint"); + } +}