Skip to content

Commit 53ac12e

Browse files
authored
Add the network status of ME parts to TOP/WAILA/HWYLA (#2787)
1 parent 5ac270b commit 53ac12e

File tree

6 files changed

+103
-2
lines changed

6 files changed

+103
-2
lines changed

src/main/java/gregtech/common/metatileentities/multi/multiblockpart/appeng/MetaTileEntityAEHostablePart.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ public boolean onWireCutterClick(EntityPlayer playerIn, EnumHand hand, EnumFacin
234234
return true;
235235
}
236236

237+
public boolean isOnline() {
238+
return isOnline;
239+
}
240+
237241
@Override
238242
public NBTTagCompound writeToNBT(NBTTagCompound data) {
239243
super.writeToNBT(data);

src/main/java/gregtech/integration/hwyla/HWYLAModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import gregtech.api.modules.GregTechModule;
55
import gregtech.api.util.Mods;
66
import gregtech.integration.IntegrationSubmodule;
7+
import gregtech.integration.hwyla.provider.AEMultiblockHatchProvider;
78
import gregtech.integration.hwyla.provider.ActiveTransformerDataProvider;
89
import gregtech.integration.hwyla.provider.BatteryBufferDataProvider;
910
import gregtech.integration.hwyla.provider.BlockOreDataProvider;
@@ -59,6 +60,7 @@ public void register(IWailaRegistrar registrar) {
5960
ActiveTransformerDataProvider.INSTANCE.register(registrar);
6061
BatteryBufferDataProvider.INSTANCE.register(registrar);
6162
QuantumStorageProvider.INSTANCE.register(registrar);
63+
AEMultiblockHatchProvider.INSTANCE.register(registrar);
6264
}
6365

6466
/** Render an ItemStack. */
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package gregtech.integration.hwyla.provider;
2+
3+
import gregtech.api.GTValues;
4+
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
5+
import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityAEHostablePart;
6+
7+
import net.minecraft.client.resources.I18n;
8+
import net.minecraft.entity.player.EntityPlayerMP;
9+
import net.minecraft.item.ItemStack;
10+
import net.minecraft.nbt.NBTTagCompound;
11+
import net.minecraft.tileentity.TileEntity;
12+
import net.minecraft.util.math.BlockPos;
13+
import net.minecraft.world.World;
14+
15+
import mcp.mobius.waila.api.IWailaConfigHandler;
16+
import mcp.mobius.waila.api.IWailaDataAccessor;
17+
import mcp.mobius.waila.api.IWailaDataProvider;
18+
import mcp.mobius.waila.api.IWailaRegistrar;
19+
import org.jetbrains.annotations.NotNull;
20+
21+
import java.util.List;
22+
23+
public class AEMultiblockHatchProvider implements IWailaDataProvider {
24+
25+
private static final String NBT_KEY = "ae_part_online";
26+
27+
public static final AEMultiblockHatchProvider INSTANCE = new AEMultiblockHatchProvider();
28+
29+
public void register(@NotNull IWailaRegistrar registrar) {
30+
registrar.registerBodyProvider(this, IGregTechTileEntity.class);
31+
registrar.registerNBTProvider(this, IGregTechTileEntity.class);
32+
registrar.addConfig(GTValues.MOD_NAME, "gregtech.ae_multiblock_hatch_provider");
33+
}
34+
35+
@Override
36+
public @NotNull NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world,
37+
BlockPos pos) {
38+
if (te instanceof IGregTechTileEntity gtte &&
39+
gtte.getMetaTileEntity() instanceof MetaTileEntityAEHostablePart<?>aeHostablePart) {
40+
tag.setBoolean(NBT_KEY, aeHostablePart.isOnline());
41+
}
42+
43+
return tag;
44+
}
45+
46+
@Override
47+
public @NotNull List<String> getWailaBody(ItemStack itemStack, List<String> tooltip, IWailaDataAccessor accessor,
48+
IWailaConfigHandler config) {
49+
if (accessor.getNBTData().hasKey(NBT_KEY)) {
50+
if (accessor.getNBTData().getBoolean(NBT_KEY)) {
51+
tooltip.add(I18n.format("gregtech.gui.me_network.online"));
52+
} else {
53+
tooltip.add(I18n.format("gregtech.gui.me_network.offline"));
54+
}
55+
}
56+
57+
return tooltip;
58+
}
59+
}

src/main/java/gregtech/integration/theoneprobe/TheOneProbeModule.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public void init(FMLInitializationEvent event) {
4646
oneProbe.registerProvider(new QuantumStorageProvider());
4747
oneProbe.registerProvider(new ActiveTransformerInfoProvider());
4848
oneProbe.registerProvider(new BatteryBufferInfoProvider());
49+
oneProbe.registerProvider(new AEMultiblockHatchProvider());
4950

5051
// Dev environment debug providers
5152
oneProbe.registerProvider(new DebugPipeNetInfoProvider());
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package gregtech.integration.theoneprobe.provider;
2+
3+
import gregtech.api.metatileentity.interfaces.IGregTechTileEntity;
4+
import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityAEHostablePart;
5+
6+
import net.minecraft.block.state.IBlockState;
7+
import net.minecraft.entity.player.EntityPlayer;
8+
import net.minecraft.world.World;
9+
10+
import mcjty.theoneprobe.api.IProbeHitData;
11+
import mcjty.theoneprobe.api.IProbeInfo;
12+
import mcjty.theoneprobe.api.IProbeInfoProvider;
13+
import mcjty.theoneprobe.api.ProbeMode;
14+
15+
public class AEMultiblockHatchProvider implements IProbeInfoProvider {
16+
17+
@Override
18+
public String getID() {
19+
return ":ae_multiblock_hatch_provider";
20+
}
21+
22+
@Override
23+
public void addProbeInfo(ProbeMode probeMode, IProbeInfo probeInfo, EntityPlayer entityPlayer, World world,
24+
IBlockState blockState, IProbeHitData probeHitData) {
25+
if (blockState.getBlock().hasTileEntity(blockState) &&
26+
world.getTileEntity(probeHitData.getPos()) instanceof IGregTechTileEntity gtte &&
27+
gtte.getMetaTileEntity() instanceof MetaTileEntityAEHostablePart<?>aeHostablePart) {
28+
if (aeHostablePart.isOnline()) {
29+
probeInfo.text("{*gregtech.gui.me_network.online*}");
30+
} else {
31+
probeInfo.text("{*gregtech.gui.me_network.offline*}");
32+
}
33+
}
34+
}
35+
}

src/main/resources/assets/gregtech/lang/en_us.lang

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5624,8 +5624,8 @@ gregtech.gui.multiblock_fluid_voiding=Voiding Mode/n§7Voiding §9Fluids
56245624
gregtech.gui.multiblock_item_fluid_voiding=Voiding Mode/n§7Voiding §6Items §7and §9Fluids
56255625
gregtech.gui.multiblock_no_voiding=Voiding Mode/n§7Voiding Nothing
56265626
gregtech.gui.multiblock_voiding_not_supported=This Multiblock does not support Voiding Mode
5627-
gregtech.gui.me_network.online=Network Status: §2Online§r
5628-
gregtech.gui.me_network.offline=Network Status: §4Offline§r
5627+
gregtech.gui.me_network.online=Network: §aOnline§r
5628+
gregtech.gui.me_network.offline=Network: §4Offline§r
56295629
gregtech.gui.waiting_list=Sending Queue:
56305630
gregtech.gui.config_slot=§fConfig Slot§r
56315631
gregtech.gui.config_slot.set=§7Click to §bset/select§7 config slot.§r

0 commit comments

Comments
 (0)