diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/appeng/MetaTileEntityAEHostablePart.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/appeng/MetaTileEntityAEHostablePart.java index 6212144fec7..5fec49de898 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/appeng/MetaTileEntityAEHostablePart.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/appeng/MetaTileEntityAEHostablePart.java @@ -234,6 +234,10 @@ public boolean onWireCutterClick(EntityPlayer playerIn, EnumHand hand, EnumFacin return true; } + public boolean isOnline() { + return isOnline; + } + @Override public NBTTagCompound writeToNBT(NBTTagCompound data) { super.writeToNBT(data); diff --git a/src/main/java/gregtech/integration/hwyla/HWYLAModule.java b/src/main/java/gregtech/integration/hwyla/HWYLAModule.java index f93bdf6ee1a..9b298bda3f1 100644 --- a/src/main/java/gregtech/integration/hwyla/HWYLAModule.java +++ b/src/main/java/gregtech/integration/hwyla/HWYLAModule.java @@ -4,6 +4,7 @@ import gregtech.api.modules.GregTechModule; import gregtech.api.util.Mods; import gregtech.integration.IntegrationSubmodule; +import gregtech.integration.hwyla.provider.AEMultiblockHatchProvider; import gregtech.integration.hwyla.provider.ActiveTransformerDataProvider; import gregtech.integration.hwyla.provider.BatteryBufferDataProvider; import gregtech.integration.hwyla.provider.BlockOreDataProvider; @@ -59,6 +60,7 @@ public void register(IWailaRegistrar registrar) { ActiveTransformerDataProvider.INSTANCE.register(registrar); BatteryBufferDataProvider.INSTANCE.register(registrar); QuantumStorageProvider.INSTANCE.register(registrar); + AEMultiblockHatchProvider.INSTANCE.register(registrar); } /** Render an ItemStack. */ diff --git a/src/main/java/gregtech/integration/hwyla/provider/AEMultiblockHatchProvider.java b/src/main/java/gregtech/integration/hwyla/provider/AEMultiblockHatchProvider.java new file mode 100644 index 00000000000..1724980aff5 --- /dev/null +++ b/src/main/java/gregtech/integration/hwyla/provider/AEMultiblockHatchProvider.java @@ -0,0 +1,59 @@ +package gregtech.integration.hwyla.provider; + +import gregtech.api.GTValues; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityAEHostablePart; + +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class AEMultiblockHatchProvider implements IWailaDataProvider { + + private static final String NBT_KEY = "ae_part_online"; + + public static final AEMultiblockHatchProvider INSTANCE = new AEMultiblockHatchProvider(); + + public void register(@NotNull IWailaRegistrar registrar) { + registrar.registerBodyProvider(this, IGregTechTileEntity.class); + registrar.registerNBTProvider(this, IGregTechTileEntity.class); + registrar.addConfig(GTValues.MOD_NAME, "gregtech.ae_multiblock_hatch_provider"); + } + + @Override + public @NotNull NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, + BlockPos pos) { + if (te instanceof IGregTechTileEntity gtte && + gtte.getMetaTileEntity() instanceof MetaTileEntityAEHostablePartaeHostablePart) { + tag.setBoolean(NBT_KEY, aeHostablePart.isOnline()); + } + + return tag; + } + + @Override + public @NotNull List getWailaBody(ItemStack itemStack, List tooltip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + if (accessor.getNBTData().hasKey(NBT_KEY)) { + if (accessor.getNBTData().getBoolean(NBT_KEY)) { + tooltip.add(I18n.format("gregtech.gui.me_network.online")); + } else { + tooltip.add(I18n.format("gregtech.gui.me_network.offline")); + } + } + + return tooltip; + } +} diff --git a/src/main/java/gregtech/integration/theoneprobe/TheOneProbeModule.java b/src/main/java/gregtech/integration/theoneprobe/TheOneProbeModule.java index 4ce285fc92e..0e26ab8f899 100644 --- a/src/main/java/gregtech/integration/theoneprobe/TheOneProbeModule.java +++ b/src/main/java/gregtech/integration/theoneprobe/TheOneProbeModule.java @@ -46,6 +46,7 @@ public void init(FMLInitializationEvent event) { oneProbe.registerProvider(new QuantumStorageProvider()); oneProbe.registerProvider(new ActiveTransformerInfoProvider()); oneProbe.registerProvider(new BatteryBufferInfoProvider()); + oneProbe.registerProvider(new AEMultiblockHatchProvider()); // Dev environment debug providers oneProbe.registerProvider(new DebugPipeNetInfoProvider()); diff --git a/src/main/java/gregtech/integration/theoneprobe/provider/AEMultiblockHatchProvider.java b/src/main/java/gregtech/integration/theoneprobe/provider/AEMultiblockHatchProvider.java new file mode 100644 index 00000000000..de734d109f2 --- /dev/null +++ b/src/main/java/gregtech/integration/theoneprobe/provider/AEMultiblockHatchProvider.java @@ -0,0 +1,35 @@ +package gregtech.integration.theoneprobe.provider; + +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityAEHostablePart; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +import mcjty.theoneprobe.api.IProbeHitData; +import mcjty.theoneprobe.api.IProbeInfo; +import mcjty.theoneprobe.api.IProbeInfoProvider; +import mcjty.theoneprobe.api.ProbeMode; + +public class AEMultiblockHatchProvider implements IProbeInfoProvider { + + @Override + public String getID() { + return ":ae_multiblock_hatch_provider"; + } + + @Override + public void addProbeInfo(ProbeMode probeMode, IProbeInfo probeInfo, EntityPlayer entityPlayer, World world, + IBlockState blockState, IProbeHitData probeHitData) { + if (blockState.getBlock().hasTileEntity(blockState) && + world.getTileEntity(probeHitData.getPos()) instanceof IGregTechTileEntity gtte && + gtte.getMetaTileEntity() instanceof MetaTileEntityAEHostablePartaeHostablePart) { + if (aeHostablePart.isOnline()) { + probeInfo.text("{*gregtech.gui.me_network.online*}"); + } else { + probeInfo.text("{*gregtech.gui.me_network.offline*}"); + } + } + } +} diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 9e86c2e951a..806a61f8ddd 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -5624,8 +5624,8 @@ gregtech.gui.multiblock_fluid_voiding=Voiding Mode/n§7Voiding §9Fluids gregtech.gui.multiblock_item_fluid_voiding=Voiding Mode/n§7Voiding §6Items §7and §9Fluids gregtech.gui.multiblock_no_voiding=Voiding Mode/n§7Voiding Nothing gregtech.gui.multiblock_voiding_not_supported=This Multiblock does not support Voiding Mode -gregtech.gui.me_network.online=Network Status: §2Online§r -gregtech.gui.me_network.offline=Network Status: §4Offline§r +gregtech.gui.me_network.online=Network: §aOnline§r +gregtech.gui.me_network.offline=Network: §4Offline§r gregtech.gui.waiting_list=Sending Queue: gregtech.gui.config_slot=§fConfig Slot§r gregtech.gui.config_slot.set=§7Click to §bset/select§7 config slot.§r