diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java index 1768b5b..db9cb94 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -15,7 +15,8 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; -import magicbees.tileentity.TileEntityApiamancersDrainer; +import magicbees.tileentity.TileEntityApiamancersDrainerCommon; +import magicbees.tileentity.TileEntityApiamancersDrainerGT; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; @@ -35,7 +36,8 @@ public class BlockApiamancersDrainer extends BlockContainer { @Override public TileEntity createNewTileEntity(World world, int metadata) { - return new TileEntityApiamancersDrainer(); + return TileEntityApiamancersDrainerGT.isGTLoaded ? new TileEntityApiamancersDrainerGT() + : new TileEntityApiamancersDrainerCommon(); } @Override @@ -45,7 +47,7 @@ public class BlockApiamancersDrainer extends BlockContainer { return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityApiamancersDrainer) { + if (tile instanceof TileEntityApiamancersDrainerCommon) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); @@ -54,14 +56,14 @@ public class BlockApiamancersDrainer extends BlockContainer { && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) .getAspects()[0]; - ((TileEntityApiamancersDrainer) tile).setAspect(tLocked); + ((TileEntityApiamancersDrainerCommon) tile).setAspect(tLocked); // TODO: improve text player.addChatMessage( new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); } } else { - ((TileEntityApiamancersDrainer) tile).setAspect(null); + ((TileEntityApiamancersDrainerCommon) tile).setAspect(null); // TODO: improve text player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index aa1433e..64ce033 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -57,11 +57,7 @@ import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; -import magicbees.tileentity.TileEntityApiamancersDrainer; -import magicbees.tileentity.TileEntityEffectJar; -import magicbees.tileentity.TileEntityMagicApiary; -import magicbees.tileentity.TileEntityManaAuraProvider; -import magicbees.tileentity.TileEntityVisAuraProvider; +import magicbees.tileentity.*; /** * A class to hold some data related to mod state & functions. @@ -505,7 +501,10 @@ public class Config { apiamancersDrainer = new BlockApiamancersDrainer(); GameRegistry.registerBlock(apiamancersDrainer, "apiamancersDrainer"); - GameRegistry.registerTileEntity(TileEntityApiamancersDrainer.class, "apiamancersDrainer"); + GameRegistry.registerTileEntity( + TileEntityApiamancersDrainerGT.isGTLoaded ? TileEntityApiamancersDrainerGT.class + : TileEntityApiamancersDrainerCommon.class, + "apiamancersDrainer"); } } diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java similarity index 98% rename from src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java rename to src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index 49dbf90..95a9e73 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -28,7 +28,7 @@ import thaumcraft.api.aspects.AspectList; import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; -public class TileEntityApiamancersDrainer extends TileEntity implements IAspectContainer, IEssentiaTransport { +public class TileEntityApiamancersDrainerCommon extends TileEntity implements IAspectContainer, IEssentiaTransport { public Aspect aspect; public AspectList essentia = new AspectList(); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java new file mode 100644 index 0000000..c429218 --- /dev/null +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -0,0 +1,41 @@ +package magicbees.tileentity; + +import java.util.Set; +import java.util.stream.Collectors; + +import net.minecraft.tileentity.TileEntity; + +import org.apache.commons.lang3.ClassUtils; + +import cpw.mods.fml.common.Loader; +import forestry.api.apiculture.*; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary; +import magicbees.main.utils.LogHelper; + +public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon { + + public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); + + @Override + protected IBeeHousing beeHousing() { + TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + boolean isGTMetaTileEntity = above instanceof BaseMetaTileEntity; + + if (isGTMetaTileEntity) { + BaseMetaTileEntity metaTileEntity = (BaseMetaTileEntity) above; + IMetaTileEntity underlyingMetaTileEntity = metaTileEntity.getMetaTileEntity(); + + if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; + + Set classes = ClassUtils.getAllInterfaces(underlyingMetaTileEntity.getClass()).stream() + .map(Class::getName).collect(Collectors.toSet()); + LogHelper.warn(classes); + + return (IBeeHousing) underlyingMetaTileEntity; + } + + return null; + } +}