aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_1by1_Turbine.java60
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/GUI_1by1_Turbine.java36
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java315
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java214
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks4.java39
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/turbine/LargeTurbineTextureHandler.java310
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_SHSteam.java15
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GT_MTE_LargeTurbine_Steam.java16
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/turbines/GregtechMetaTileEntity_LargerTurbineBase.java303
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechLargeTurbinesAndHeatExchanger.java4
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_1.pngbin0 -> 334 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_2.pngbin0 -> 448 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_3.pngbin0 -> 367 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_4.pngbin0 -> 461 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_5.pngbin0 -> 332 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_6.pngbin0 -> 505 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_7.pngbin0 -> 391 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_8.pngbin0 -> 446 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_9.pngbin0 -> 359 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_1.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_1.pngbin0 -> 546 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_2.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_2.pngbin0 -> 967 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_3.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_3.pngbin0 -> 608 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_4.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_4.pngbin0 -> 1123 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_5.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_5.pngbin0 -> 880 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_6.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_6.pngbin0 -> 1242 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_7.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_7.pngbin0 -> 656 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_8.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_8.pngbin0 -> 971 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_9.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_HP_ACTIVE_9.pngbin0 -> 644 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_1.pngbin0 -> 399 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_2.pngbin0 -> 445 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_3.pngbin0 -> 452 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_4.pngbin0 -> 479 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_5.pngbin0 -> 332 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_6.pngbin0 -> 494 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_7.pngbin0 -> 470 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_8.pngbin0 -> 466 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_9.pngbin0 -> 447 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_1.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_1.pngbin0 -> 625 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_2.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_2.pngbin0 -> 950 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_3.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_3.pngbin0 -> 653 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_4.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_4.pngbin0 -> 1103 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_5.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_5.pngbin0 -> 880 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_6.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_6.pngbin0 -> 1172 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_7.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_7.pngbin0 -> 681 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_8.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_8.pngbin0 -> 992 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_9.PNG.mcmeta3
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/BigTurbine/LARGE_TURBINE_LP_ACTIVE_9.pngbin0 -> 750 bytes
66 files changed, 1228 insertions, 145 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index feb2ea275d..baea21c3c3 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -300,6 +300,9 @@ public enum GregtechItemList implements GregtechItemContainer {
//Air Intake hatch
Hatch_Air_Intake,
+
+ //XL Turbine Rotor Hatch
+ Hatch_Turbine_Rotor,
//Custom Fluid Hatches
Hatch_Input_Cryotheum,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_1by1_Turbine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_1by1_Turbine.java
new file mode 100644
index 0000000000..d4d2fcacd7
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_1by1_Turbine.java
@@ -0,0 +1,60 @@
+package gtPlusPlus.xmod.gregtech.api.gui.hatches;
+
+import gregtech.api.gui.GT_Container_1by1;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.items.GT_MetaGenerated_Tool;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class CONTAINER_1by1_Turbine extends GT_Container_1by1 {
+
+ public CONTAINER_1by1_Turbine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
+ super(aInventoryPlayer, aTileEntity);
+ }
+
+ @Override
+ public void addSlots(InventoryPlayer aInventoryPlayer) {
+ addSlotToContainer(new SlotTurbine(mTileEntity, 0, 80, 35));
+ }
+
+ @Override
+ public int getShiftClickSlotCount() {
+ return 0;
+ }
+
+ @Override
+ public boolean canDragIntoSlot(Slot par1Slot) {
+ return false;
+ }
+
+ public class SlotTurbine extends Slot {
+ public SlotTurbine(final IInventory inventory, final int x, final int y, final int z) {
+ super(inventory, x, y, z);
+ }
+ @Override
+ public boolean isItemValid(final ItemStack itemstack) {
+ /*if (itemstack.getItem() instanceof GT_MetaGenerated_Tool) {
+ if (itemstack.getItemDamage() >= 170 && itemstack.getItemDamage() <= 176) {
+ return true;
+ }
+ }*/
+ return false;
+ }
+ @Override
+ public int getSlotStackLimit() {
+ return 1;
+ }
+ @Override
+ public boolean canTakeStack(EntityPlayer p_82869_1_) {
+ return false;
+ }
+ @Override
+ public void putStack(ItemStack p_75215_1_) {
+ // TODO Auto-generated method stub
+ super.putStack(p_75215_1_);
+ }
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/GUI_1by1_Turbine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/GUI_1by1_Turbine.java
new file mode 100644
index 0000000000..5623f0e224
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/GUI_1by1_Turbine.java
@@ -0,0 +1,36 @@
+package gtPlusPlus.xmod.gregtech.api.gui.hatches;
+
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import net.minecraft.entity.player.InventoryPlayer;
+
+import static gregtech.api.enums.GT_Values.RES_PATH_GUI;
+
+import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
+
+public class GUI_1by1_Turbine extends GT_GUIContainerMetaTile_Machine {
+
+ private final String mName;
+
+ public GUI_1by1_Turbine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName) {
+ super(new CONTAINER_1by1_Turbine(aInventoryPlayer, aTileEntity), RES_PATH_GUI + "1by1.png");
+ mName = aName;
+ }
+
+ public GUI_1by1_Turbine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName, String aBackground) {
+ super(new CONTAINER_1by1_Turbine(aInventoryPlayer, aTileEntity), RES_PATH_GUI + aBackground + "1by1.png");
+ mName = aName;
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int par1, int par2) {
+ fontRendererObj.drawString(mName, 8, 4, 4210752);
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {
+ super.drawGuiContainerBackgroundLayer(par1, par2, par3);
+ int x = (width - xSize) / 2;
+ int y = (height - ySize) / 2;
+ drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java
new file mode 100644
index 0000000000..d022bb60ce
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Turbine.java
@@ -0,0 +1,315 @@
+package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
+import gtPlusPlus.xmod.gregtech.api.gui.hatches.CONTAINER_1by1_Turbine;
+import gtPlusPlus.xmod.gregtech.api.gui.hatches.GUI_1by1_Turbine;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.turbine.LargeTurbineTextureHandler;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.turbines.GregtechMetaTileEntity_LargerTurbineBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.init.Items;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class GT_MetaTileEntity_Hatch_Turbine extends GT_MetaTileEntity_Hatch {
+
+ public boolean mHasController = false;
+ public boolean mUsingAnimation = true;
+ private String mControllerLocation;
+
+ public GT_MetaTileEntity_Hatch_Turbine(int aID, String aName, String aNameRegional, int aTier) {
+ super(aID, aName, aNameRegional, aTier, 16, new String[]{
+ "Turbine Rotor holder for XL Turbines"});
+ }
+
+ public GT_MetaTileEntity_Hatch_Turbine(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 1, aDescription, aTextures);
+ }
+
+ public GT_MetaTileEntity_Hatch_Turbine(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 1, aDescription, aTextures);
+ }
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, getFrontFacingTurbineTexture()};
+ }
+
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, getFrontFacingTurbineTexture()};
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return aFacing > 1;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public boolean isValidSlot(int aIndex) {
+ return false;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_Hatch_Turbine(mName, mTier, mDescriptionArray, mTextures);
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
+ if (aBaseMetaTileEntity.isClientSide()) return true;
+ //aBaseMetaTileEntity.openGUI(aPlayer);
+ PlayerUtils.messagePlayer(aPlayer, "[Turbine Assembly Data] Using Animations? "+usingAnimations());
+ PlayerUtils.messagePlayer(aPlayer, "[Turbine Assembly Data] Has Controller? "+this.mHasController);
+ if (mHasController) {
+ PlayerUtils.messagePlayer(aPlayer, "[Turbine Assembly Data] Controller Location: "+BlockPos.generateBlockPos(mControllerLocation).getLocationString());
+ PlayerUtils.messagePlayer(aPlayer, "[Turbine Assembly Data] Controller Active? "+this.isControllerActive());
+ }
+ PlayerUtils.messagePlayer(aPlayer, "[Turbine Assembly Data] Is Active? "+this.getBaseMetaTileEntity().isActive());
+ return true;
+ }
+
+ @Override
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mTier) {
+ default:
+ return new CONTAINER_1by1_Turbine(aPlayerInventory, aBaseMetaTileEntity);
+ }
+ }
+
+ @Override
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
+ switch (mTier) {
+ default:
+ return new GUI_1by1_Turbine(aPlayerInventory, aBaseMetaTileEntity, "Turbine Rotor Hatch");
+ }
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public int getInventoryStackLimit() {
+ return 1;
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setBoolean("mHasController", mHasController);
+ aNBT.setBoolean("mUsingAnimation", mUsingAnimation);
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ mHasController = aNBT.getBoolean("mHasController");
+ mUsingAnimation = aNBT.getBoolean("mUsingAnimation");
+ }
+
+ @Override
+ public void onScrewdriverRightClick(byte aSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ super.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ);
+ this.mUsingAnimation = Utils.invertBoolean(mUsingAnimation);
+ if (this.mUsingAnimation) {
+ PlayerUtils.messagePlayer(aPlayer, "Using Animated Turbine Texture.");
+ }
+ else {
+ PlayerUtils.messagePlayer(aPlayer, "Using Static Turbine Texture.");
+ }
+ PlayerUtils.messagePlayer(aPlayer, "Has Controller: "+this.mHasController);
+ if (mHasController) {
+ PlayerUtils.messagePlayer(aPlayer, "Controller Location: "+this.mControllerLocation);
+ }
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+ if (this.mHasController) {
+ if (aTick % 20 == 0) {
+ if (isControllerActive()) {
+ this.getBaseMetaTileEntity().setActive(true);
+ }
+ else {
+ this.getBaseMetaTileEntity().setActive(false);
+ }
+ }
+ }
+ else if (!this.mHasController && this.mControllerLocation != null) {
+ //Weird Invalid State
+ if (setController(BlockPos.generateBlockPos(mControllerLocation))) {
+ //Valid
+ }
+ }
+ else {
+ //No Controller
+ }
+ }
+
+ public boolean isControllerActive() {
+ GregtechMetaTileEntity_LargerTurbineBase x = getController();
+ if (x != null) {
+ Logger.INFO("Checking Status of Controller.");
+ return x.isMachineRunning();
+ }
+ Logger.INFO("Status of Controller failed, controller is null.");
+ return false;
+ }
+
+ public GregtechMetaTileEntity_LargerTurbineBase getController() {
+ if (this.mHasController && this.mControllerLocation != null && this.mControllerLocation.length() > 0) {
+ BlockPos p = BlockPos.generateBlockPos(mControllerLocation);
+ if (p != null) {
+ //Logger.INFO(p.getLocationString());
+ IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntity(p.xPos, p.yPos,
+ p.zPos);
+ if (tTileEntity != null && tTileEntity.getMetaTileEntity() instanceof GregtechMetaTileEntity_LargerTurbineBase) {
+ return (GregtechMetaTileEntity_LargerTurbineBase) tTileEntity.getMetaTileEntity();
+ }
+ else {
+ if (tTileEntity == null) {
+ Logger.INFO("Controller MTE is null, somehow?");
+ }
+ else {
+ Logger.INFO("Controller is a different MTE to expected");
+ }
+ }
+ }
+ }
+ //Logger.INFO("Failed to Get Controller.");
+ return null;
+ }
+
+ public boolean canSetNewController() {
+ if ((mControllerLocation != null && mControllerLocation.length() > 0) || this.mHasController) {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean setController(BlockPos aPos) {
+ clearController();
+ if (canSetNewController()) {
+ mControllerLocation = aPos.getUniqueIdentifier();
+ mHasController = true;
+ Logger.INFO("Successfully injected controller into this Turbine Assembly Hatch.");
+ }
+ return mHasController;
+ }
+
+ public void clearController() {
+ this.mControllerLocation = null;
+ this.mHasController = false;
+ }
+
+ public boolean usingAnimations() {
+ return mUsingAnimation;
+ }
+
+ private ITexture getFrontFacingTurbineTexture() {
+ if (!mHasController) {
+ return this.getBaseMetaTileEntity().isActive() ? new GT_RenderedTexture(LargeTurbineTextureHandler.frontFaceHPActive_4) : new GT_RenderedTexture(LargeTurbineTextureHandler.frontFace_4 );
+ }
+ else {
+ if (usingAnimations()) {
+ if (isControllerActive()) {
+ return getController().frontFaceActive;
+ }
+ }
+ return getController().frontFace;
+ }
+ }
+
+ @Override
+ public long getMinimumStoredEU() {
+ return 0;
+ }
+
+ @Override
+ public boolean isItemValidForSlot(int aIndex, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public int[] getAccessibleSlotsFromSide(int aSide) {
+ return new int[] {};
+ }
+
+ @Override
+ public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) {
+ return false;
+ }
+
+ @Override
+ public boolean onWrenchRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY,
+ float aZ) {
+ // TODO Auto-generated method stub
+ return super.onWrenchRightClick(aSide, aWrenchingSide, aPlayer, aX, aY, aZ);
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer, byte aSide, float aX,
+ float aY, float aZ) {
+ //Do Super
+ boolean aSuper = super.onRightclick(aBaseMetaTileEntity, aPlayer, aSide, aX, aY, aZ);
+ // Do Things
+ if (this.getBaseMetaTileEntity().isServerSide()) {
+ ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem();
+ if (tCurrentItem != null) {
+ if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sSoftHammerList)) {
+ if (mControllerLocation != null && mControllerLocation.length() > 0) {
+ if (setController(BlockPos.generateBlockPos(mControllerLocation))) {
+ if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 1000, aPlayer)) {
+ String tChat = "Trying to Reset linked Controller";
+ IGregTechTileEntity g = this.getBaseMetaTileEntity();
+ GT_Utility.sendChatToPlayer(aPlayer, tChat);
+ GT_Utility.sendSoundToPlayers(g.getWorld(), GregTech_API.sSoundList.get(101), 1.0F, -1,
+ g.getXCoord(), g.getYCoord(), g.getZCoord());
+ }
+ }
+ }
+ }
+ }
+ }
+ return aSuper;
+ }
+
+ public void setActive(boolean b) {
+ this.getBaseMetaTileEntity().setActive(b);
+ }
+
+
+
+
+
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index c53ad80737..5641ba0c3f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -22,17 +22,23 @@ import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords;
import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.objects.GT_ItemStack;
+import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.recipe.common.CI;
@@ -505,7 +511,12 @@ GT_MetaTileEntity_MultiBlockBase {
}
log("Error generating recipe, returning null.");
return null;
-
+ }
+
+ public boolean isMachineRunning() {
+ boolean aRunning = this.getBaseMetaTileEntity().isActive();
+ Logger.INFO("Queried Multiblock is currently running: "+aRunning);
+ return aRunning;
}
@Override
@@ -638,10 +649,41 @@ GT_MetaTileEntity_MultiBlockBase {
}
return b;
}
+
+
+ public <E> boolean addToMachineListInternal(ArrayList<E> aList, final IMetaTileEntity aTileEntity,
+ final int aBaseCasingIndex) {
+ if (aList.isEmpty()) {