diff --git a/dependencies.gradle b/dependencies.gradle index e7b85c8c..faf13cfa 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,7 +35,7 @@ */ dependencies { api('com.github.GTNewHorizons:NotEnoughItems:2.8.100-GTNH:dev') - api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-971-GTNH:dev') + api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-982-GTNH:dev') api('com.github.GTNewHorizons:waila:1.19.29:dev') api("com.github.GTNewHorizons:GTNHLib:0.11.4:dev") diff --git a/src/main/java/com/glodblock/github/crossmod/opencomputers/DriverDualFluidInterface.java b/src/main/java/com/glodblock/github/crossmod/opencomputers/DriverDualFluidInterface.java index fe437e0c..5c296069 100644 --- a/src/main/java/com/glodblock/github/crossmod/opencomputers/DriverDualFluidInterface.java +++ b/src/main/java/com/glodblock/github/crossmod/opencomputers/DriverDualFluidInterface.java @@ -13,7 +13,7 @@ import com.glodblock.github.util.DualityFluidInterface; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; -import appeng.api.parts.IPartHost; +import appeng.util.Platform; import li.cil.oc.api.driver.EnvironmentProvider; import li.cil.oc.api.driver.NamedBlock; import li.cil.oc.api.driver.SidedBlock; @@ -104,20 +104,19 @@ public class DriverDualFluidInterface implements SidedBlock { if (te instanceof TileFluidInterface) { return true; } - if (te instanceof IPartHost) { - return ((IPartHost) te).getPart(face) instanceof PartFluidInterface; - } + + return Platform.getPartFromTE(te, face) instanceof PartFluidInterface; } return false; } private static DualityFluidInterface getInterface(TileEntity te, ForgeDirection face) { if (te != null) { - if (te instanceof TileFluidInterface) { - return ((TileFluidInterface) te).getDualityFluid(); + if (te instanceof TileFluidInterface tile) { + return tile.getDualityFluid(); } - if (te instanceof IPartHost && ((IPartHost) te).getPart(face) instanceof PartFluidInterface) { - return ((PartFluidInterface) ((IPartHost) te).getPart(face)).getDualityFluid(); + if (Platform.getPartFromTE(te, face) instanceof PartFluidInterface part) { + return part.getDualityFluid(); } } return null; diff --git a/src/main/java/com/glodblock/github/crossmod/waila/WailaInit.java b/src/main/java/com/glodblock/github/crossmod/waila/WailaInit.java index 820cb660..6af8f6b0 100644 --- a/src/main/java/com/glodblock/github/crossmod/waila/WailaInit.java +++ b/src/main/java/com/glodblock/github/crossmod/waila/WailaInit.java @@ -4,6 +4,8 @@ import com.glodblock.github.common.tile.TileCertusQuartzTank; import com.glodblock.github.util.ModAndClassUtil; import appeng.api.parts.IPartHost; +import appeng.integration.IntegrationRegistry; +import appeng.integration.IntegrationType; import appeng.tile.AEBaseTile; import appeng.util.Platform; import codechicken.nei.guihook.GuiContainerManager; @@ -19,8 +21,12 @@ public class WailaInit { public static void register(final IWailaRegistrar registrar) { final IWailaDataProvider part = new PartWailaDataProvider(); - registrar.registerBodyProvider(part, IPartHost.class); - registrar.registerNBTProvider(part, IPartHost.class); + registerPartProvider(registrar, part, IPartHost.class); + if (IntegrationRegistry.INSTANCE.isEnabled(IntegrationType.FMP)) { + try { + registerPartProvider(registrar, part, Class.forName("codechicken.multipart.TileMultipart")); + } catch (final ClassNotFoundException ignored) {} + } if (Platform.isClient()) GuiContainerManager.addTooltipHandler(new FCTooltipHandlerWaila()); final IWailaDataProvider tile = new TileWailaDataProvider(); @@ -32,4 +38,10 @@ public class WailaInit { registrar.registerBodyProvider(certusQuartzTank, TileCertusQuartzTank.class); } } + + private static void registerPartProvider(final IWailaRegistrar registrar, final IWailaDataProvider provider, + final Class tileClass) { + registrar.registerBodyProvider(provider, tileClass); + registrar.registerNBTProvider(provider, tileClass); + } } diff --git a/src/main/java/com/glodblock/github/inventory/external/AEFluidInterfaceHandler.java b/src/main/java/com/glodblock/github/inventory/external/AEFluidInterfaceHandler.java index e6a13562..38d7df34 100644 --- a/src/main/java/com/glodblock/github/inventory/external/AEFluidInterfaceHandler.java +++ b/src/main/java/com/glodblock/github/inventory/external/AEFluidInterfaceHandler.java @@ -3,13 +3,12 @@ package com.glodblock.github.inventory.external; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import com.glodblock.github.util.Util; - import appeng.api.implementations.tiles.ITileStorageMonitorable; import appeng.api.networking.security.BaseActionSource; import appeng.api.storage.IExternalStorageHandler; import appeng.api.storage.IMEInventory; import appeng.api.storage.StorageChannel; +import appeng.util.Platform; public class AEFluidInterfaceHandler implements IExternalStorageHandler { @@ -18,7 +17,7 @@ public class AEFluidInterfaceHandler implements IExternalStorageHandler { if (channel == StorageChannel.FLUIDS) { if (te instanceof ITileStorageMonitorable) { return true; - } else return Util.getPart(te, d.getOpposite()) instanceof ITileStorageMonitorable; + } else return Platform.getPartFromTE(te, d.getOpposite()) instanceof ITileStorageMonitorable; } return false; } @@ -30,8 +29,8 @@ public class AEFluidInterfaceHandler implements IExternalStorageHandler { if (te instanceof ITileStorageMonitorable && ((ITileStorageMonitorable) te).getMonitorable(d, src) != null) { return ((ITileStorageMonitorable) te).getMonitorable(d, src).getFluidInventory(); - } else if (Util.getPart(te, d.getOpposite()) instanceof ITileStorageMonitorable part - && ((ITileStorageMonitorable) Util.getPart(te, d.getOpposite())).getMonitorable(d, src) != null) { + } else if (Platform.getPartFromTE(te, d.getOpposite()) instanceof ITileStorageMonitorable part + && part.getMonitorable(d, src) != null) { return part.getMonitorable(d, src).getFluidInventory(); } } diff --git a/src/main/java/com/glodblock/github/inventory/gui/PartGuiFactory.java b/src/main/java/com/glodblock/github/inventory/gui/PartGuiFactory.java index d2a7508d..40903d27 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/PartGuiFactory.java +++ b/src/main/java/com/glodblock/github/inventory/gui/PartGuiFactory.java @@ -6,7 +6,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; -import appeng.api.parts.IPartHost; +import appeng.util.Platform; public abstract class PartGuiFactory extends TileGuiFactory { @@ -17,12 +17,11 @@ public abstract class PartGuiFactory extends TileGuiFactory { @Nullable @Override protected T getInventory(TileEntity tile, ForgeDirection face) { - if (tile instanceof IPartHost) { - IPart part = ((IPartHost) tile).getPart(face); - if (invClass.isInstance(part)) { - return invClass.cast(part); - } + IPart part = Platform.getPartFromTE(tile, face); + if (invClass.isInstance(part)) { + return invClass.cast(part); } + return null; } } diff --git a/src/main/java/com/glodblock/github/inventory/gui/TileOrPartGuiFactory.java b/src/main/java/com/glodblock/github/inventory/gui/TileOrPartGuiFactory.java index a3d4b35a..ccaed879 100644 --- a/src/main/java/com/glodblock/github/inventory/gui/TileOrPartGuiFactory.java +++ b/src/main/java/com/glodblock/github/inventory/gui/TileOrPartGuiFactory.java @@ -6,7 +6,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; -import appeng.api.parts.IPartHost; +import appeng.util.Platform; public abstract class TileOrPartGuiFactory extends TileGuiFactory { @@ -17,12 +17,11 @@ public abstract class TileOrPartGuiFactory extends TileGuiFactory { @Nullable @Override protected T getInventory(TileEntity tile, ForgeDirection face) { - if (tile instanceof IPartHost) { - IPart part = ((IPartHost) tile).getPart(face); - if (invClass.isInstance(part)) { - return invClass.cast(part); - } + IPart part = Platform.getPartFromTE(tile, face); + if (invClass.isInstance(part)) { + return invClass.cast(part); } + return super.getInventory(tile, face); } } diff --git a/src/main/java/com/glodblock/github/network/CPacketLevelTerminalCommands.java b/src/main/java/com/glodblock/github/network/CPacketLevelTerminalCommands.java index 0538f7ea..31c24bb3 100644 --- a/src/main/java/com/glodblock/github/network/CPacketLevelTerminalCommands.java +++ b/src/main/java/com/glodblock/github/network/CPacketLevelTerminalCommands.java @@ -12,8 +12,6 @@ import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.util.BlockPos; import appeng.api.parts.ILevelEmitter; -import appeng.api.parts.IPart; -import appeng.api.parts.IPartHost; import appeng.container.AEBaseContainer; import appeng.container.PrimaryGui; import appeng.container.interfaces.IContainerSubGui; @@ -125,16 +123,13 @@ public class CPacketLevelTerminalCommands implements IMessage { TileEntity tile = DimensionManager.getWorld(message.dim) .getTileEntity(message.x, message.y, message.z); - if (tile instanceof IPartHost host) { - IPart part = host.getPart(message.side); - if (part instanceof ILevelEmitter) { - InventoryHandler.openGui( - player, - tile.getWorldObj(), - new BlockPos(tile), - message.side, - GuiType.LEVEL_EMITTER_PROXY); - } + if (Platform.getPartFromTE(tile, message.side) instanceof ILevelEmitter) { + InventoryHandler.openGui( + player, + tile.getWorldObj(), + new BlockPos(tile), + message.side, + GuiType.LEVEL_EMITTER_PROXY); } else { InventoryHandler.openGui( player, diff --git a/src/main/java/com/glodblock/github/util/Util.java b/src/main/java/com/glodblock/github/util/Util.java index 91b4e023..24a906c2 100644 --- a/src/main/java/com/glodblock/github/util/Util.java +++ b/src/main/java/com/glodblock/github/util/Util.java @@ -52,7 +52,6 @@ import appeng.api.util.DimensionalCoord; import appeng.container.AEBaseContainer; import appeng.items.tools.powered.ToolWirelessTerminal; import appeng.me.storage.NullInventory; -import appeng.tile.networking.TileCableBus; import appeng.util.Platform; import appeng.util.item.AEFluidStack; import appeng.util.item.AEItemStack; @@ -345,13 +344,6 @@ public final class Util { return null; } - public static IPart getPart(Object te, ForgeDirection face) { - if (te instanceof TileCableBus) { - return ((TileCableBus) te).getPart(face); - } - return null; - } - public static void writeFluidMapToBuf(Map list, ByteBuf buf) throws IOException { buf.writeInt(list.size()); for (Map.Entry fs : list.entrySet()) {