Skip to content

Commit dceccd8

Browse files
authored
Merge pull request #169 from Alecsioo/improve_top_integration_machinery
Improved TOP integration for machinery hatches
2 parents 974d20f + a0cf903 commit dceccd8

File tree

4 files changed

+60
-3
lines changed

4 files changed

+60
-3
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package github.kasuminova.mmce.common.integration.theoneprobe;
2+
3+
import appeng.api.implementations.IPowerChannelState;
4+
import appeng.integration.modules.theoneprobe.TheOneProbeText;
5+
import github.kasuminova.mmce.common.tile.base.MEMachineComponent;
6+
import mcjty.theoneprobe.api.IProbeHitData;
7+
import mcjty.theoneprobe.api.IProbeInfo;
8+
import mcjty.theoneprobe.api.IProbeInfoProvider;
9+
import mcjty.theoneprobe.api.ProbeMode;
10+
import net.minecraft.block.state.IBlockState;
11+
import net.minecraft.entity.player.EntityPlayer;
12+
import net.minecraft.tileentity.TileEntity;
13+
import net.minecraft.world.World;
14+
15+
public class MachineryHatchInfoProvider implements IProbeInfoProvider {
16+
@Override
17+
public String getID() {
18+
return "modularmachinery:machinery_hatch_info_provider";
19+
}
20+
21+
@Override
22+
public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, EntityPlayer entityPlayer, World world, IBlockState iBlockState, IProbeHitData iProbeHitData) {
23+
if (!iBlockState.getBlock().hasTileEntity(iBlockState)) {
24+
return;
25+
}
26+
TileEntity tileEntity = world.getTileEntity(iProbeHitData.getPos());
27+
if (!(tileEntity instanceof MEMachineComponent meHatch)) {
28+
return;
29+
}
30+
31+
// Implementation taken from appeng.integration.modules.theoneprobe.PartInfoProvider
32+
final IPowerChannelState state = meHatch;
33+
34+
final boolean isActive = state.isActive();
35+
final boolean isPowered = state.isPowered();
36+
37+
if (isActive && isPowered) {
38+
iProbeInfo.text(TheOneProbeText.DEVICE_ONLINE.getLocal());
39+
} else if (isPowered) {
40+
iProbeInfo.text(TheOneProbeText.DEVICE_MISSING_CHANNEL.getLocal());
41+
} else {
42+
iProbeInfo.text(TheOneProbeText.DEVICE_OFFLINE.getLocal());
43+
}
44+
}
45+
}

src/main/java/github/kasuminova/mmce/common/tile/base/MEMachineComponent.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package github.kasuminova.mmce.common.tile.base;
22

3+
import appeng.api.implementations.IPowerChannelState;
34
import appeng.api.networking.GridFlags;
45
import appeng.api.networking.IGridNode;
56
import appeng.api.networking.security.IActionHost;
@@ -24,7 +25,7 @@
2425
import javax.annotation.Nonnull;
2526
import javax.annotation.Nullable;
2627

27-
public abstract class MEMachineComponent extends TileColorableMachineComponent implements SelectiveUpdateTileEntity, MachineComponentTile, IActionHost, IGridProxyable {
28+
public abstract class MEMachineComponent extends TileColorableMachineComponent implements SelectiveUpdateTileEntity, MachineComponentTile, IActionHost, IGridProxyable, IPowerChannelState {
2829

2930
protected final AENetworkProxy proxy = new AENetworkProxy(this, "aeProxy", getVisualItemStack(), true);
3031
protected final IActionSource source;
@@ -132,4 +133,13 @@ public void validate() {
132133
Sides.SERVER.runIfPresent(() -> ModularMachinery.EXECUTE_MANAGER.addSyncTask(proxy::onReady));
133134
}
134135

136+
@Override
137+
public boolean isPowered() {
138+
return proxy.isPowered();
139+
}
140+
141+
@Override
142+
public boolean isActive() {
143+
return proxy.isActive();
144+
}
135145
}

src/main/java/hellfirepvp/modularmachinery/common/CommonProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public void init() {
171171
IntegrationTypeHelper.filterModIdRequirementTypes();
172172

173173
if (Mods.TOP.isPresent()) {
174-
ModIntegrationTOP.registerProvider();
174+
ModIntegrationTOP.registerProviders();
175175
ModularMachinery.log.info("[ModularMachinery-CE] TheOneProbe integration is enabled! Stop looking at the dark controller gui!");
176176
}
177177
if (Mods.GREGTECHCEU.isPresent()) {

src/main/java/hellfirepvp/modularmachinery/common/integration/ModIntegrationTOP.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package hellfirepvp.modularmachinery.common.integration;
22

3+
import github.kasuminova.mmce.common.integration.theoneprobe.MachineryHatchInfoProvider;
34
import hellfirepvp.modularmachinery.common.integration.theoneprobe.MMInfoProvider;
45
import mcjty.theoneprobe.TheOneProbe;
56
import mcjty.theoneprobe.apiimpl.TheOneProbeImp;
@@ -16,10 +17,11 @@ public class ModIntegrationTOP {
1617
public static boolean showRecipeProgressBarDecimalPoints = true;
1718
public static boolean showParallelControllerInfo = true;
1819

19-
public static void registerProvider() {
20+
public static void registerProviders() {
2021
TheOneProbeImp top = TheOneProbe.theOneProbeImp;
2122

2223
top.registerProvider(new MMInfoProvider());
24+
top.registerProvider(new MachineryHatchInfoProvider());
2325
}
2426

2527
public static void loadFromConfig(Configuration cfg) {

0 commit comments

Comments
 (0)