From dc6eebc891ede514ded36c7f28d57303c1db55be Mon Sep 17 00:00:00 2001 From: TheDarkDnKTv Date: Thu, 1 Apr 2021 08:37:16 +0300 Subject: [PATCH] Added big plasma turbine! Also all turbines logic moved to separetaed class Closes #69 --- src/main/java/gregtechmod/GT_Mod.java | 2 +- .../api/gui/GT_GUIContainer_MultiMachine.java | 10 +- .../GT_MetaTileEntity_Hatch_Dynamo.java | 4 +- .../MTEWorkableMultiblock.java | 2 +- .../java/gregtechmod/api/recipe/Recipe.java | 4 +- .../gregtechmod/common/GT_GUIHandler.java | 8 +- .../common/blocks/GT_BlockMetaID_Block.java | 71 +++- .../gregtechmod/common/recipe/RecipeMaps.java | 2 + .../recipe/logic/GeneratorRecipeLogic.java | 6 + .../production/multi/AbstractTurbine.java | 335 ++++++++++++++++++ .../GT_MetaTileEntity_Multi_GasTurbine.java | 57 +++ .../GT_MetaTileEntity_Multi_SteamTurbine.java | 62 ++++ .../production/multi/MultiPlasmaTurbine.java | 59 +++ .../GT_MetaTileEntity_Multi_GasTurbine.java | 242 ------------- .../GT_MetaTileEntity_Multi_SteamTurbine.java | 220 ------------ ...GT_MetaTileEntity_Multi_ThermalBoiler.java | 2 +- .../loaders/load/GT_LiquidAndFuelLoader.java | 3 + .../postload/GT_BookAndLootLoader.java | 6 +- .../postload/GT_CraftingRecipeLoader.java | 4 + .../loaders/preload/GT_ItemLoader.java | 15 - .../preload/GT_MetaTileEntityLoader.java | 6 +- .../assets/gregtech_addon/lang/en_US.lang | 4 +- .../tile.PlasmaTurbine/PlasmaTurbine1.png | Bin 0 -> 426 bytes .../tile.PlasmaTurbine/PlasmaTurbine2.png | Bin 0 -> 436 bytes .../tile.PlasmaTurbine/PlasmaTurbine3.png | Bin 0 -> 467 bytes .../tile.PlasmaTurbine/PlasmaTurbine4.png | Bin 0 -> 446 bytes .../tile.PlasmaTurbine/PlasmaTurbine5.png | Bin 0 -> 360 bytes .../tile.PlasmaTurbine/PlasmaTurbine6.png | Bin 0 -> 463 bytes .../tile.PlasmaTurbine/PlasmaTurbine7.png | Bin 0 -> 449 bytes .../tile.PlasmaTurbine/PlasmaTurbine8.png | Bin 0 -> 424 bytes .../tile.PlasmaTurbine/PlasmaTurbine9.png | Bin 0 -> 440 bytes .../PlasmaTurbineActive1.png | Bin 0 -> 587 bytes .../PlasmaTurbineActive1.png.mcmeta | 3 + .../PlasmaTurbineActive2.png | Bin 0 -> 800 bytes .../PlasmaTurbineActive2.png.mcmeta | 3 + .../PlasmaTurbineActive3.png | Bin 0 -> 660 bytes .../PlasmaTurbineActive3.png.mcmeta | 3 + .../PlasmaTurbineActive4.png | Bin 0 -> 910 bytes .../PlasmaTurbineActive4.png.mcmeta | 3 + .../PlasmaTurbineActive5.png | Bin 0 -> 883 bytes .../PlasmaTurbineActive5.png.mcmeta | 3 + .../PlasmaTurbineActive6.png | Bin 0 -> 976 bytes .../PlasmaTurbineActive6.png.mcmeta | 3 + .../PlasmaTurbineActive7.png | Bin 0 -> 645 bytes .../PlasmaTurbineActive7.png.mcmeta | 3 + .../PlasmaTurbineActive8.png | Bin 0 -> 765 bytes .../PlasmaTurbineActive8.png.mcmeta | 3 + .../PlasmaTurbineActive9.png | Bin 0 -> 693 bytes .../PlasmaTurbineActive9.png.mcmeta | 3 + 49 files changed, 650 insertions(+), 501 deletions(-) create mode 100644 src/main/java/gregtechmod/common/tileentities/energy/production/multi/AbstractTurbine.java create mode 100644 src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_GasTurbine.java create mode 100644 src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_SteamTurbine.java create mode 100644 src/main/java/gregtechmod/common/tileentities/energy/production/multi/MultiPlasmaTurbine.java delete mode 100644 src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_GasTurbine.java delete mode 100644 src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_SteamTurbine.java create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine1.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine2.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine3.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine4.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine5.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine6.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine7.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine8.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine9.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive1.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive1.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive2.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive2.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive3.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive3.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive4.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive4.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive6.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive6.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive7.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive7.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive8.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive8.png.mcmeta create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive9.png create mode 100644 src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive9.png.mcmeta diff --git a/src/main/java/gregtechmod/GT_Mod.java b/src/main/java/gregtechmod/GT_Mod.java index 2641f39..de10fe7 100644 --- a/src/main/java/gregtechmod/GT_Mod.java +++ b/src/main/java/gregtechmod/GT_Mod.java @@ -412,7 +412,7 @@ public class GT_Mod implements IGT_Mod { GT_Worldgenerator.sGeneratedOres[11] = GregTech_API.sWorldgenFile.get("worldgen.end", "Olivineore" , true); GT_Worldgenerator.sGeneratedOres[12] = GregTech_API.sWorldgenFile.get("worldgen.end", "Sodaliteore" , true); - GT_Config.system = (Calendar.getInstance().get(2) + 1 == 4 && Calendar.getInstance().get(5) >= 1 && Calendar.getInstance().get(5) <= 2); + GT_Config.system = (!GregTech_API.DEBUG_MODE && Calendar.getInstance().get(Calendar.MONTH) + 1 == 4 && Calendar.getInstance().get(Calendar.DATE) >= 1 && Calendar.getInstance().get(Calendar.DATE) <= 2); Materials.init(GregTech_API.sMaterialProperties); GT_Log.log.info("Saving Configs"); diff --git a/src/main/java/gregtechmod/api/gui/GT_GUIContainer_MultiMachine.java b/src/main/java/gregtechmod/api/gui/GT_GUIContainer_MultiMachine.java index 739edb8..6beccc7 100644 --- a/src/main/java/gregtechmod/api/gui/GT_GUIContainer_MultiMachine.java +++ b/src/main/java/gregtechmod/api/gui/GT_GUIContainer_MultiMachine.java @@ -2,6 +2,7 @@ package gregtechmod.api.gui; import gregtechmod.api.GregTech_API; import gregtechmod.api.interfaces.IGregTechTileEntity; +import gregtechmod.api.interfaces.IMetaTileEntity; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; @@ -16,14 +17,15 @@ public class GT_GUIContainer_MultiMachine extends GT_GUIContainerMetaTile_Machin String mName = ""; - public GT_GUIContainer_MultiMachine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aName, String aTextureFile) { - super(new GT_Container_MultiMachine(aInventoryPlayer, aTileEntity), GregTech_API.GUI_PATH + aTextureFile); - mName = aName; + public GT_GUIContainer_MultiMachine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) { + super(new GT_Container_MultiMachine(aInventoryPlayer, aTileEntity), GregTech_API.GUI_PATH + "MultiblockDisplay.png"); + IMetaTileEntity mte = aTileEntity.getMetaTileEntity(); + mName = mte != null ? String.format("metatileentity.%s.name", mte.getInventoryName()) : "null"; } @Override protected void drawGuiContainerForegroundLayer(int par1, int par2) { - fontRenderer.drawString(I18n.format("metatileentity." + mName), 10, 8, 16448255); + fontRenderer.drawString(I18n.format(mName), 10, 8, 16448255); if (mContainer != null) { GT_Container_MultiMachine m = (GT_Container_MultiMachine) mContainer; diff --git a/src/main/java/gregtechmod/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Dynamo.java b/src/main/java/gregtechmod/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Dynamo.java index ed6d800..c340544 100644 --- a/src/main/java/gregtechmod/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Dynamo.java +++ b/src/main/java/gregtechmod/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Dynamo.java @@ -23,8 +23,8 @@ public class GT_MetaTileEntity_Hatch_Dynamo extends MetaTileEntity { @Override public boolean isOutputFacing(byte aSide) {return aSide==getBaseMetaTileEntity().getFrontFacing();} @Override public int getInvSize() {return 0;} @Override public int getMinimumStoredEU() {return 512;} - @Override public int maxEUOutput() {return Math.max(0, Math.min(getEUVar() - getMinimumStoredEU(), GregTech_API.VOLTAGE_EXTREME));} - @Override public int maxEUStore() {return GregTech_API.VOLTAGE_EXTREME * 4 + getMinimumStoredEU();} + @Override public int maxEUOutput() {return Math.max(0, Math.min(getEUVar() - getMinimumStoredEU(), GregTech_API.VOLTAGE_INSANE));} + @Override public int maxEUStore() {return GregTech_API.VOLTAGE_INSANE * 4 + getMinimumStoredEU();} @Override public String getSpecialVoltageToolTip() {return "metatileentity.TileEntity_EUp_OUT.Dynamo_Hatch.tooltip";} @Override diff --git a/src/main/java/gregtechmod/api/metatileentity/implementations/MTEWorkableMultiblock.java b/src/main/java/gregtechmod/api/metatileentity/implementations/MTEWorkableMultiblock.java index 24d13b2..6e49be5 100644 --- a/src/main/java/gregtechmod/api/metatileentity/implementations/MTEWorkableMultiblock.java +++ b/src/main/java/gregtechmod/api/metatileentity/implementations/MTEWorkableMultiblock.java @@ -40,7 +40,7 @@ public abstract class MTEWorkableMultiblock extends MetaTileEntityMultiblock imp @Override public ItemStack getStackIn(int idx) { - return super.getStackInSlot(idx); + return this.getStackInSlot(idx); } @Override diff --git a/src/main/java/gregtechmod/api/recipe/Recipe.java b/src/main/java/gregtechmod/api/recipe/Recipe.java index e036fe9..5a48595 100644 --- a/src/main/java/gregtechmod/api/recipe/Recipe.java +++ b/src/main/java/gregtechmod/api/recipe/Recipe.java @@ -179,7 +179,7 @@ public class Recipe { itemAmountInSlots[i] = itemInSlot == null ? 0 : itemInSlot.stackSize; } - for (Ingredient ingr : itemInputs) { + for (Ingredient ingr : getInputs()) { int ingrAmount = ingr.getCount(); boolean consumed = false; @@ -213,7 +213,7 @@ public class Recipe { fluidAmountInSlots[i] = fluidInSlot == null ? 0 : fluidInSlot.amount; } - for (FluidStack ingr : fluidInputs) { + for (FluidStack ingr : getFluidInputs()) { int ingrAmount = ingr.amount; boolean consumed = false; diff --git a/src/main/java/gregtechmod/common/GT_GUIHandler.java b/src/main/java/gregtechmod/common/GT_GUIHandler.java index 36141ca..35862f4 100644 --- a/src/main/java/gregtechmod/common/GT_GUIHandler.java +++ b/src/main/java/gregtechmod/common/GT_GUIHandler.java @@ -219,8 +219,7 @@ public class GT_GUIHandler implements IGuiHandler { if (ID == 154) return new GT_Container_BasicTank (player.inventory, (IGregTechTileEntity) tTileEntity); if (ID == 155) return new GT_Container_MaintenanceHatch (player.inventory, (IGregTechTileEntity) tTileEntity); if (ID == 156) return new GT_Container_MultiMachine (player.inventory, (IGregTechTileEntity) tTileEntity); - if (ID == 157) return new GT_Container_MultiMachine (player.inventory, (IGregTechTileEntity) tTileEntity); - if (ID == 158) return new GT_Container_MultiMachine (player.inventory, (IGregTechTileEntity) tTileEntity); + // free 157-158 if (ID == 159) return new GT_Container_BasicMachine (player.inventory, (IGregTechTileEntity) tTileEntity); if (ID == 160) return new GT_Container_AdvancedWorkbench (player.inventory, (IGregTechTileEntity) tTileEntity); if (ID == 161) return new GT_Container_BronzeWorkbench (player.inventory, (IGregTechTileEntity) tTileEntity); @@ -317,9 +316,8 @@ public class GT_GUIHandler implements IGuiHandler { if (ID == 153) return new GT_GUIContainer_Hatch_Input (player.inventory, (IGregTechTileEntity)tTileEntity); if (ID == 154) return new GT_GUIContainer_Hatch_Output (player.inventory, (IGregTechTileEntity)tTileEntity); if (ID == 155) return new GT_GUIContainer_MaintenanceHatch (player.inventory, (IGregTechTileEntity)tTileEntity); - if (ID == 156) return new GT_GUIContainer_MultiMachine (player.inventory, (IGregTechTileEntity)tTileEntity, "GT_Multi_GasTurbine.name", "MultiblockDisplay.png"); - if (ID == 157) return new GT_GUIContainer_MultiMachine (player.inventory, (IGregTechTileEntity)tTileEntity, "GT_Multi_SteamTurbine.name", "MultiblockDisplay.png"); - if (ID == 158) return new GT_GUIContainer_MultiMachine (player.inventory, (IGregTechTileEntity)tTileEntity, "GT_Multi_ThermalBoiler.name", "MultiblockDisplay.png"); + if (ID == 156) return new GT_GUIContainer_MultiMachine (player.inventory, (IGregTechTileEntity)tTileEntity); + // free 157-158 if (ID == 159) return new GT_GUIContainer_BasicMachine_Lathe (player.inventory, (IGregTechTileEntity)tTileEntity, "GT_Lathe.name", "Lathe.png"); if (ID == 160) return new GT_GUIContainer_AdvancedWorkbench (player.inventory, (IGregTechTileEntity)tTileEntity); if (ID == 161) return new GT_GUIContainer_BronzeWorkbench (player.inventory, (IGregTechTileEntity)tTileEntity); diff --git a/src/main/java/gregtechmod/common/blocks/GT_BlockMetaID_Block.java b/src/main/java/gregtechmod/common/blocks/GT_BlockMetaID_Block.java index 4bfddf6..d1a3211 100644 --- a/src/main/java/gregtechmod/common/blocks/GT_BlockMetaID_Block.java +++ b/src/main/java/gregtechmod/common/blocks/GT_BlockMetaID_Block.java @@ -4,8 +4,9 @@ import gregtechmod.api.GregTech_API; import gregtechmod.api.interfaces.IGregTechTileEntity; import gregtechmod.api.util.GT_Config; import gregtechmod.api.util.GT_OreDictUnificator; -import gregtechmod.common.tileentities.machines.multi.GT_MetaTileEntity_Multi_SteamTurbine; -import gregtechmod.common.tileentities.machines.multi.GT_MetaTileEntity_Multi_GasTurbine; +import gregtechmod.common.tileentities.energy.production.multi.GT_MetaTileEntity_Multi_GasTurbine; +import gregtechmod.common.tileentities.energy.production.multi.GT_MetaTileEntity_Multi_SteamTurbine; +import gregtechmod.common.tileentities.energy.production.multi.MultiPlasmaTurbine; import java.util.List; import java.util.Random; @@ -27,7 +28,13 @@ import cpw.mods.fml.relauncher.SideOnly; public class GT_BlockMetaID_Block extends Block { - public static IIcon[] mIcons = new IIcon[52], mIconGasTurbine = new IIcon[9], mIconGasTurbineActive = new IIcon[9], mIconSteamTurbine = new IIcon[9], mIconSteamTurbineActive = new IIcon[9]; + public static IIcon[] mIcons = new IIcon[52], + mIconGasTurbine = new IIcon[9], + mIconGasTurbineActive = new IIcon[9], + mIconSteamTurbine = new IIcon[9], + mIconSteamTurbineActive = new IIcon[9], + mIconPlasmaTurbine = new IIcon[9], + mIconPlasmaTurbineActive= new IIcon[9]; public static boolean mConnectedMachineTextures = true; @@ -49,6 +56,8 @@ public class GT_BlockMetaID_Block extends Block { for (int i = 0; i < mIconGasTurbineActive .length; i++) mIconGasTurbineActive [i] = par1IconRegister.registerIcon(GregTech_API.TEXTURE_PATH_BLOCK + (GT_Config.system?"troll":"tile.GasTurbine/GasTurbineActive" + (i+1))); for (int i = 0; i < mIconSteamTurbine .length; i++) mIconSteamTurbine [i] = par1IconRegister.registerIcon(GregTech_API.TEXTURE_PATH_BLOCK + (GT_Config.system?"troll":"tile.SteamTurbine/SteamTurbine" + (i+1))); for (int i = 0; i < mIconSteamTurbineActive .length; i++) mIconSteamTurbineActive [i] = par1IconRegister.registerIcon(GregTech_API.TEXTURE_PATH_BLOCK + (GT_Config.system?"troll":"tile.SteamTurbine/SteamTurbineActive" + (i+1))); + for (int i = 0; i < mIconPlasmaTurbine .length; i++) mIconPlasmaTurbine [i] = par1IconRegister.registerIcon(GregTech_API.TEXTURE_PATH_BLOCK + (GT_Config.system?"troll":"tile.PlasmaTurbine/PlasmaTurbine" + (i+1))); + for (int i = 0; i < mIconPlasmaTurbineActive.length; i++) mIconPlasmaTurbineActive [i] = par1IconRegister.registerIcon(GregTech_API.TEXTURE_PATH_BLOCK + (GT_Config.system?"troll":"tile.PlasmaTurbine/PlasmaTurbineActive" + (i+1))); if(GregTech_API.sPostloadFinished) { GregTech_API.registerCover(GT_OreDictUnificator.getOres("plateSilver") , mIcons[ 3]); @@ -270,6 +279,62 @@ public class GT_BlockMetaID_Block extends Block { } } + if (tMeta == 15) { + TileEntity tTileEntity; + Object tMetaTileEntity; + if (aSide == 2 || aSide == 3) { + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==3?+1:-1), yCoord - 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[0]; return mIconPlasmaTurbine[0]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==3?+1:-1), yCoord , zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[3]; return mIconPlasmaTurbine[3]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==3?+1:-1), yCoord + 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[6]; return mIconPlasmaTurbine[6]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord , yCoord - 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[1]; return mIconPlasmaTurbine[1]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord , yCoord + 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[7]; return mIconPlasmaTurbine[7]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==2?+1:-1), yCoord + 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[8]; return mIconPlasmaTurbine[8]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==2?+1:-1), yCoord , zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[5]; return mIconPlasmaTurbine[5]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord + (aSide==2?+1:-1), yCoord - 1, zCoord)) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[2]; return mIconPlasmaTurbine[2]; + } + } else if (aSide == 4 || aSide == 5) { + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord + (aSide==4?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[0]; return mIconPlasmaTurbine[0]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord , zCoord + (aSide==4?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[3]; return mIconPlasmaTurbine[3]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord + (aSide==4?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[6]; return mIconPlasmaTurbine[6]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord )) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[1]; return mIconPlasmaTurbine[1]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord )) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[7]; return mIconPlasmaTurbine[7]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord + 1, zCoord + (aSide==5?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[8]; return mIconPlasmaTurbine[8]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord , zCoord + (aSide==5?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[5]; return mIconPlasmaTurbine[5]; + } + if (null != (tTileEntity = aWorld.getTileEntity(xCoord, yCoord - 1, zCoord + (aSide==5?+1:-1))) && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getFrontFacing() == aSide && null != (tMetaTileEntity = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity()) && tMetaTileEntity instanceof MultiPlasmaTurbine) { + if (((IGregTechTileEntity)tTileEntity).isActive()) return mIconPlasmaTurbineActive[2]; return mIconPlasmaTurbine[2]; + } + } + } + boolean[] tConnectedSides = { aWorld.getBlock(xCoord, yCoord-1, zCoord) == this && aWorld.getBlockMetadata(xCoord, yCoord-1, zCoord) == tMeta, aWorld.getBlock(xCoord, yCoord+1, zCoord) == this && aWorld.getBlockMetadata(xCoord, yCoord+1, zCoord) == tMeta, diff --git a/src/main/java/gregtechmod/common/recipe/RecipeMaps.java b/src/main/java/gregtechmod/common/recipe/RecipeMaps.java index 1f8bbe9..5db4b0d 100644 --- a/src/main/java/gregtechmod/common/recipe/RecipeMaps.java +++ b/src/main/java/gregtechmod/common/recipe/RecipeMaps.java @@ -49,6 +49,8 @@ public class RecipeMaps { public static final RecipeMap PLASMA_FUELS = new RecipeMap<>(0, 1, 0, 1, 0, 1, 0, 0, new GeneratorRecipeFactory()); public static final RecipeMap MAGIC_FUELS = new RecipeMap<>(0, 1, 0, 1, 0, 1, 0, 0, new GeneratorRecipeFactory()); + public static final RecipeMap STEAM_FUELS = new RecipeMap<>(0, 0, 0, 0, 0, 1, 0, 1, new GeneratorRecipeFactory()); + // Fake RecipeMaps public static final IC2RecipeMap MACERATION = new IC2RecipeMap(1, 2, 1, 2, GT_ModHandler::getMaceratorResult); public static final IC2RecipeMap EXTRACTION = new IC2RecipeMap(1, 2, 1, 2, GT_ModHandler::getExtractorResult); diff --git a/src/main/java/gregtechmod/common/recipe/logic/GeneratorRecipeLogic.java b/src/main/java/gregtechmod/common/recipe/logic/GeneratorRecipeLogic.java index 7900fec..120c446 100644 --- a/src/main/java/gregtechmod/common/recipe/logic/GeneratorRecipeLogic.java +++ b/src/main/java/gregtechmod/common/recipe/logic/GeneratorRecipeLogic.java @@ -102,6 +102,12 @@ public class GeneratorRecipeLogic extends RecipeLogic { } } + @Override + public void stop() { + super.stop(); + leftEU = 0; + } + @Override public void saveToNBT(NBTTagCompound data) { super.saveToNBT(data); diff --git a/src/main/java/gregtechmod/common/tileentities/energy/production/multi/AbstractTurbine.java b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/AbstractTurbine.java new file mode 100644 index 0000000..de18d49 --- /dev/null +++ b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/AbstractTurbine.java @@ -0,0 +1,335 @@ +package gregtechmod.common.tileentities.energy.production.multi; + +import java.lang.ref.WeakReference; +import java.util.List; +import java.util.Map; +import java.util.function.IntSupplier; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtechmod.api.GregTech_API; +import gregtechmod.api.enums.GT_Items; +import gregtechmod.api.interfaces.IGregTechTileEntity; +import gregtechmod.api.interfaces.IMetaTileEntity; +import gregtechmod.api.interfaces.IRecipeWorkable; +import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; +import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; +import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; +import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; +import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; +import gregtechmod.api.metatileentity.implementations.MTEWorkableMultiblock; +import gregtechmod.api.recipe.Recipe; +import gregtechmod.api.recipe.RecipeLogic; +import gregtechmod.api.recipe.RecipeMap; +import gregtechmod.api.util.GT_ModHandler; +import gregtechmod.api.util.GT_Utility; +import gregtechmod.api.util.InfoBuilder; +import gregtechmod.common.recipe.logic.GeneratorRecipeLogic; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fluids.FluidStack; + +/** An class of common multitubine logic, usually an shape of multiblock and simple logic + * @author TheDarkDnKTv + * + */ +public abstract class AbstractTurbine extends MTEWorkableMultiblock { + + private static ItemStack RC_TURBINE; + + + protected int mEfficiencyIncrease = 0; + protected int MAX_EFFICIENCY = 10_000; + protected int TURBINE_OUTPUT_EU = 800; + protected boolean NEED_AN_MUFFLER = false; + + @Override public void updateEfficiency() {} + @Override public void endProcess() {} + @Override public boolean allowToCheckRecipe() {return true;} + @Override public boolean isGivingInformation() {return true;} + @Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;} + @Override public int maxEUOutput() {return TURBINE_OUTPUT_EU;} + @Override public RecipeLogic getRecipeLogic() {return recipeLogic;} + @Override public int increaseProgress(int aProgress) {recipeLogic.increaseProgressTime(aProgress);return recipeLogic.getMaxProgressTime()-recipeLogic.getProgressTime();} + @Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 156, GregTech_API.gregtechmod);} + + public AbstractTurbine(int aID, String aName, RecipeMap map) { + super(aID, aName, map); + } + + public AbstractTurbine(RecipeMap map) { + super(map); + } + + protected abstract Pair getHull(); + + /** + * Called right after resources was consumed + */ + protected void onRecipeUpdateTick() { + mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); + } + + protected int getCurrentEfficiency() { + return getMaxEfficiency(mInventory[1]); + } + + private final boolean checkAir() { + int tAirCount = 0; + for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) for (byte k = -1; k < 2; k++) { + if (getBaseMetaTileEntity().getAirOffset(i, j, k)) tAirCount++; + } + if (tAirCount != 10) return false; + + return true; + } + + @Override + protected final boolean checkMachine(ItemStack aStack) { + byte tSide = getBaseMetaTileEntity().getBackFacing(); + if (getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 1) && getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 2)) { + TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 3); + if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Dynamo) { + mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)((IGregTechTileEntity)tTileEntity).getMetaTileEntity()); + } else { + return false; + } + + for (byte i = 2; i < 6; i++) { + if (null != (tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(i, 2)) && tTileEntity instanceof IGregTechTileEntity) { + if (((IGregTechTileEntity)tTileEntity).getFrontFacing() == getBaseMetaTileEntity().getFrontFacing() && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { + if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity().getClass() == this.getClass()) return false; + } + } + } + + int tX = getBaseMetaTileEntity().getXCoord(), tY = getBaseMetaTileEntity().getYCoord(), tZ = getBaseMetaTileEntity().getZCoord(); + for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) if (i != 0 || j != 0) for (byte k = 0; k < 4; k++) { + Pair hull = this.getHull(); + + if ((i == 0 || j == 0) && (k == 1 || k == 2)) { + if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != hull.getKey() || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != hull.getValue()) { + tTileEntity = getBaseMetaTileEntity().getTileEntity(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)); + if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { + IMetaTileEntity mte = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity(); + if (mte instanceof GT_MetaTileEntity_Hatch_Maintenance) { + maintenanceHatch = new WeakReference<>((GT_MetaTileEntity_Hatch_Maintenance)mte); + } else if (mte instanceof GT_MetaTileEntity_Hatch_Input) { + mInputHatches.add((GT_MetaTileEntity_Hatch_Input)mte); + } else if (mte instanceof GT_MetaTileEntity_Hatch_Output) { + mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)mte); + } else if (NEED_AN_MUFFLER && mte instanceof GT_MetaTileEntity_Hatch_Muffler) { + mufflerHatch = new WeakReference<>((GT_MetaTileEntity_Hatch_Muffler)mte); + } else { + return false; + } + } else { + return false; + } + } + } else { + if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != hull.getKey() || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != hull.getValue()) { + return false; + } + } + } + } else { + return false; + } + + return NEED_AN_MUFFLER ? (mufflerHatch != null && mufflerHatch.get() != null) : true; + } + + @Override + protected void initRecipeLogic(RecipeMap map) { + recipeLogic = new MultiTurbineLogic(() -> mEfficiency / 100, map, this); + } + + @Override + public void stopMachine() { + recipeLogic.stop(); + mEfficiencyIncrease = 0; + mEfficiency = 0; + getBaseMetaTileEntity().setActive(false); + } + + @Override + public void startProcess() { + if (GT_Items.Component_Turbine_Bronze.isStackEqual(mInventory[1], true, true)) { + mEfficiencyIncrease = 10; + } else if (GT_Items.Component_Turbine_Steel.isStackEqual(mInventory[1], true, true)) { + mEfficiencyIncrease = 20; + } else if (GT_Items.Component_Turbine_Magnalium.isStackEqual(mInventory[1], true, true)) { + mEfficiencyIncrease = 50; + } else if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(mInventory[1], true, true)) { + mEfficiencyIncrease = 15; + } else if (GT_Items.Component_Turbine_Carbon.isStackEqual(mInventory[1], true, true)) { + mEfficiencyIncrease = 100; + } else { + mEfficiencyIncrease = 20; + } + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + super.saveNBTData(aNBT); + aNBT.setInteger("mEfficiencyIncrease", mEfficiencyIncrease); + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + super.loadNBTData(aNBT); + mEfficiencyIncrease = aNBT.getInteger("mEfficiencyIncrease"); + } + + @Override + public void onServerStart() { + RC_TURBINE = GT_ModHandler.getRCItem("part.turbine.rotor", 1, GregTech_API.ITEM_WILDCARD_DAMAGE); + } + + @Override + public Map> getInfoData() { + InfoBuilder b = InfoBuilder.create() + .newKey("metatileentity.turbine.speed", GT_Utility.parseNumberToString(mEfficiency * 100.0D / MAX_EFFICIENCY)) + .newKey("metatileentity.multiblock.dynamo_output", (int)(TURBINE_OUTPUT_EU * mEfficiency * 1.0D / MAX_EFFICIENCY)) + .newKey("metatileentity.multiblock.malfunction_amount", getIdealStatus() - getRepairStatus()); + if (isCorrectMachinePart(mInventory[1])) { + int damage = mInventory[1].getMaxDamage() - mInventory[1].getItemDamage(); + if (RC_TURBINE != null && mInventory[1].getItem() == RC_TURBINE.getItem()) + damage /= 2; + b.newKey("metatileentity.turbine.durability", GT_Utility.parseNumberToString(damage)); + } else { + b.newKey("metatileentity.turbine.no_turbine"); + } + return b.build(); + } + + @Override + public final boolean isCorrectMachinePart(ItemStack aStack) { + return this.getMaxEfficiency(aStack) > 0; + } + + @Override + public final int getMaxEfficiency(ItemStack aStack) { + if (GT_Items.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) return 60_00; + if (GT_Items.Component_Turbine_Steel.isStackEqual(aStack, true, true)) return 80_00; + if (GT_Items.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) return 100_00; + if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) return 90_00; + if (GT_Items.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) return 125_00; + if (GT_Utility.areStacksEqual(aStack, RC_TURBINE)) return 80_00; + + return 0; + } + + @Override + public final int getDamageToComponent(ItemStack aStack) { + return GT_Utility.areStacksEqual(aStack, RC_TURBINE) ? 2 : 1; + } + + @Override + public final boolean explodesOnComponentBreak(ItemStack aStack) { + return true; + } + + public static class MultiTurbineLogic extends GeneratorRecipeLogic { + + protected MultiTurbineLogic(IntSupplier efficiency, RecipeMap recipeMap, IRecipeWorkable machine) { + super(efficiency, recipeMap, machine); + metadataVerifier = rec -> rec.getInputs().isEmpty() && rec.getAllOutputs().isEmpty(); // only fluid recipes allow + } + + protected boolean depleteInputs() { + int fluidMult = (int) (getMachine().maxEUOutput() / leftEU); + + if (previousRecipe != null) { + for (FluidStack fluid : previousRecipe.getFluidInputs()) { + FluidStack dummy = fluid.copy(); + dummy.amount *= fluidMult; + if (!getMachine().depleteInput(dummy)) + return false; + } + } + + return true; + } + + @Override + public boolean update() { + boolean success = false; + IGregTechTileEntity base = getMachine().getBaseMetaTileEntity(); + + + if (base.isAllowedToWork()) { + if (leftEU > 0) { + long tmp = leftEU; + success = updateRecipeProgress(); + if (tmp == 0 && !success) { + throw new IllegalStateException(); + } + } + + + if (leftEU == 0) { + if (getMachine().hasInventoryBeenModified() || base.hasWorkJustBeenEnabled() || success || base.getTimer() % 600 == 0) { + trySerachRecipe(); + } + } + } else if (leftEU > 0) getMachine().stopMachine(); + + return success; + } + + @Override + protected void trySerachRecipe() { + if (getMachine().allowToCheckRecipe()) { + if (previousRecipe != null) { + if (match(previousRecipe)) { + startRecipe(previousRecipe); + } else { + previousRecipe = null; + getMachine().stopMachine(); + } + } else { + // find new recipe + Recipe resRec = findRecipe(); + if (resRec != null) + startRecipe(resRec); + } + } + } + + @Override + protected boolean updateRecipeProgress() { + if ((getMachine().getBaseMetaTileEntity().getTimer() % 10 == 0 ? getMachine().checkAir() : true) && depleteInputs()) { + getMachine().onRecipeUpdateTick(); + int EU = (int) (getMachine().maxEUOutput() * (efficiency.getAsInt() / 100.0D)); + getMachine().addEnergyOutput(EU); + } else getMachine().stopMachine(); + + return false; + } + + @Override + protected void startRecipe(Recipe recipe) { + if (getMachine().spaceForOutput(recipe)) { + previousRecipe = recipe; + progressTime = 1; + leftEU = recipe.getDuration() * recipe.getEUt(); + maxProgressTime = (int) Math.ceil(leftEU * 1.0D / getMachine().maxEUOutput()); + triggerMachine(true); + getMachine().startProcess(); + } else { + getMachine().stopMachine(); + } + } + + @Override + protected AbstractTurbine getMachine() { + return (AbstractTurbine) metaTileEntity.get(); + } + } +} diff --git a/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_GasTurbine.java b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_GasTurbine.java new file mode 100644 index 0000000..082d524 --- /dev/null +++ b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_GasTurbine.java @@ -0,0 +1,57 @@ +package gregtechmod.common.tileentities.energy.production.multi; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtechmod.api.GregTech_API; +import gregtechmod.api.interfaces.IGregTechTileEntity; +import gregtechmod.api.metatileentity.MetaTileEntity; + +import gregtechmod.common.blocks.GT_BlockMetaID_Block; +import gregtechmod.common.recipe.RecipeMaps; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class GT_MetaTileEntity_Multi_GasTurbine extends AbstractTurbine { + + public GT_MetaTileEntity_Multi_GasTurbine(int aID, String mName) { + super(aID, mName, RecipeMaps.TURBINE_FUELS); + TURBINE_OUTPUT_EU = 675; + NEED_AN_MUFFLER = true; + } + + public GT_MetaTileEntity_Multi_GasTurbine() { + super(RecipeMaps.TURBINE_FUELS); + TURBINE_OUTPUT_EU = 675; + NEED_AN_MUFFLER = true; + } + + @Override + public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_Multi_GasTurbine(); + } + + @Override + protected Pair getHull() { + return Pair.of(GregTech_API.sBlockList[0], Integer.valueOf(14)); + } + + @Override + public IIcon getTextureIcon(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { + if (aSide == aFacing) { + if (aActive) return GT_BlockMetaID_Block.mIconGasTurbineActive[4]; + return GT_BlockMetaID_Block.mIconGasTurbine[4]; + } + return null; + } + + @Override + public int getPollutionPerTick(ItemStack aStack) { + return 1; + } + + @Override + public String getDescription() { + return "metatileentity.GT_Multi_GasTurbine.tooltip"; + } +} diff --git a/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_SteamTurbine.java b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_SteamTurbine.java new file mode 100644 index 0000000..d5c506d --- /dev/null +++ b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/GT_MetaTileEntity_Multi_SteamTurbine.java @@ -0,0 +1,62 @@ +package gregtechmod.common.tileentities.energy.production.multi; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtechmod.api.GregTech_API; +import gregtechmod.api.interfaces.IGregTechTileEntity; +import gregtechmod.api.metatileentity.MetaTileEntity; +import gregtechmod.api.util.GT_ModHandler; + +import gregtechmod.common.blocks.GT_BlockMetaID_Block; +import gregtechmod.common.recipe.RecipeMaps; +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class GT_MetaTileEntity_Multi_SteamTurbine extends AbstractTurbine { + + public GT_MetaTileEntity_Multi_SteamTurbine(int aID, String mName) { + super(aID, mName, RecipeMaps.STEAM_FUELS); + TURBINE_OUTPUT_EU = 800; + } + + public GT_MetaTileEntity_Multi_SteamTurbine() { + super(RecipeMaps.STEAM_FUELS); + TURBINE_OUTPUT_EU = 800; + } + + @Override + protected void onRecipeUpdateTick() { + super.onRecipeUpdateTick(); + addOutput(GT_ModHandler.getWater(10)); + } + + @Override + protected Pair getHull() { + return Pair.of(GregTech_API.sBlockList[0], Integer.valueOf(13)); + } + + @Override + public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_Multi_SteamTurbine(); + } + + @Override + public IIcon getTextureIcon(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { + if (aSide == aFacing) { + if (aActive) return GT_BlockMetaID_Block.mIconSteamTurbineActive[4]; + return GT_BlockMetaID_Block.mIconSteamTurbine[4]; + } + return null; + } + + @Override + public int getPollutionPerTick(ItemStack aStack) { + return 0; + } + + @Override + public String getDescription() { + return "metatileentity.GT_Multi_SteamTurbine.tooltip"; + } +} diff --git a/src/main/java/gregtechmod/common/tileentities/energy/production/multi/MultiPlasmaTurbine.java b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/MultiPlasmaTurbine.java new file mode 100644 index 0000000..c57379c --- /dev/null +++ b/src/main/java/gregtechmod/common/tileentities/energy/production/multi/MultiPlasmaTurbine.java @@ -0,0 +1,59 @@ +package gregtechmod.common.tileentities.energy.production.multi; + +import org.apache.commons.lang3.tuple.Pair; + +import gregtechmod.api.GregTech_API; +import gregtechmod.api.interfaces.IGregTechTileEntity; +import gregtechmod.api.interfaces.IMetaTileEntity; +import gregtechmod.common.blocks.GT_BlockMetaID_Block; +import gregtechmod.common.recipe.RecipeMaps; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +/** + * @author TheDarkDnKTv + * + */ +public class MultiPlasmaTurbine extends AbstractTurbine { + + public MultiPlasmaTurbine(int aID, String aName) { + super(aID, aName, RecipeMaps.PLASMA_FUELS); + TURBINE_OUTPUT_EU = 8192; + } + + public MultiPlasmaTurbine() { + super(RecipeMaps.PLASMA_FUELS); + TURBINE_OUTPUT_EU = 8192; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new MultiPlasmaTurbine(); + } + + @Override + public IIcon getTextureIcon(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { + if (aSide == aFacing) { + if (aActive) return GT_BlockMetaID_Block.mIconPlasmaTurbineActive[4]; + return GT_BlockMetaID_Block.mIconPlasmaTurbine[4]; + } + return null; + } + + @Override + public String getDescription() { + return "metatileentity.GT_Multi_PlasmaTurbine.tooltip"; + } + + @Override + protected Pair getHull() { + return Pair.of(GregTech_API.sBlockList[0], Integer.valueOf(15)); + } + + @Override + public int getPollutionPerTick(ItemStack aStack) { + return 0; + } +} diff --git a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_GasTurbine.java b/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_GasTurbine.java deleted file mode 100644 index 0951e3f..0000000 --- a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_GasTurbine.java +++ /dev/null @@ -1,242 +0,0 @@ -package gregtechmod.common.tileentities.machines.multi; - -import java.lang.ref.WeakReference; -import java.util.function.IntSupplier; - -import gregtechmod.api.GregTech_API; -import gregtechmod.api.enums.GT_Items; -import gregtechmod.api.interfaces.IGregTechTileEntity; -import gregtechmod.api.interfaces.IMetaTileEntity; -import gregtechmod.api.interfaces.IRecipeWorkable; -import gregtechmod.api.metatileentity.MetaTileEntity; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Muffler; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; -import gregtechmod.api.metatileentity.implementations.MTEWorkableMultiblock; -import gregtechmod.api.recipe.Recipe; -import gregtechmod.api.recipe.RecipeMap; -import gregtechmod.api.util.GT_Log; -import gregtechmod.api.util.GT_ModHandler; -import gregtechmod.api.util.GT_Utility; -import gregtechmod.common.blocks.GT_BlockMetaID_Block; -import gregtechmod.common.recipe.RecipeMaps; -import gregtechmod.common.recipe.logic.GeneratorRecipeLogic; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; - -public class GT_MetaTileEntity_Multi_GasTurbine extends MTEWorkableMultiblock { - - protected int mEfficiencyIncrease = 0; - - @Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;} - @Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 156, GregTech_API.gregtechmod);} - @Override public int maxEUOutput() {return 675;} - - public GT_MetaTileEntity_Multi_GasTurbine(int aID, String mName) { - super(aID, mName, RecipeMaps.TURBINE_FUELS); - } - - public GT_MetaTileEntity_Multi_GasTurbine() { - super(RecipeMaps.TURBINE_FUELS); - } - - @Override - public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { - return new GT_MetaTileEntity_Multi_GasTurbine(); - } - - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return this.getMaxEfficiency(aStack) > 0; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack aStack) { - return true; - } - - @Override - public int getDamageToComponent(ItemStack aStack) { - return GT_Utility.areStacksEqual(GT_ModHandler.getRCItem("part.turbine.rotor", 1, GregTech_API.ITEM_WILDCARD_DAMAGE), aStack)?2:1; - } - - @Override - protected void initRecipeLogic(RecipeMap map) { - recipeLogic = new GeneratorMultiblockRecipeLogic(() -> mEfficiency / 100, map, this); - } - - @Override - public int getMaxEfficiency(ItemStack aStack) { - if (GT_Items.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) return 60_00; - if (GT_Items.Component_Turbine_Steel.isStackEqual(aStack, true, true)) return 80_00; - if (GT_Items.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) return 100_00; - if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) return 90_00; - if (GT_Items.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) return 125_00; - if (GT_Utility.areStacksEqual(aStack, GT_ModHandler.getRCItem("part.turbine.rotor", 1, GregTech_API.ITEM_WILDCARD_DAMAGE))) return 80_00; - return 0; - } - - @Override - public boolean checkMachine(ItemStack aStack) { - byte tSide = getBaseMetaTileEntity().getBackFacing(); - if (getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 1) && getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 2)) { - TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 3); - if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Dynamo) { - mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)((IGregTechTileEntity)tTileEntity).getMetaTileEntity()); - } else { - return false; - } - - int tAirCount = 0; - for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) for (byte k = -1; k < 2; k++) { - if (getBaseMetaTileEntity().getAirOffset(i, j, k)) tAirCount++; - } - if (tAirCount != 10) return false; - for (byte i = 2; i < 6; i++) { - if (null != (tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(i, 2)) && tTileEntity instanceof IGregTechTileEntity) { - if (((IGregTechTileEntity)tTileEntity).getFrontFacing() == getBaseMetaTileEntity().getFrontFacing() && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { - if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_Multi_GasTurbine) return false; - } - } - } - - int tX = getBaseMetaTileEntity().getXCoord(), tY = getBaseMetaTileEntity().getYCoord(), tZ = getBaseMetaTileEntity().getZCoord(); - for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) if (i != 0 || j != 0) for (byte k = 0; k < 4; k++) { - if ((i == 0 || j == 0) && (k == 1 || k == 2)) { - if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != GregTech_API.sBlockList[0] || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != 14) { - tTileEntity = getBaseMetaTileEntity().getTileEntity(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)); - if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { - IMetaTileEntity mte = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity(); - if (mte instanceof GT_MetaTileEntity_Hatch_Maintenance) { - maintenanceHatch = new WeakReference<>((GT_MetaTileEntity_Hatch_Maintenance)mte); - } else if (mte instanceof GT_MetaTileEntity_Hatch_Input) { - mInputHatches.add((GT_MetaTileEntity_Hatch_Input)mte); - } else if (mte instanceof GT_MetaTileEntity_Hatch_Output) { - mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)mte); - } else if (mte instanceof GT_MetaTileEntity_Hatch_Muffler) { - mufflerHatch = new WeakReference<>((GT_MetaTileEntity_Hatch_Muffler)mte); - } else { - return false; - } - } else { - return false; - } - } - } else { - if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != GregTech_API.sBlockList[0] || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != 14) { - return false; - } - } - } - } else { - return false; - } - return true; - } - - @Override - public void startProcess() { - if (GT_Items.Component_Turbine_Bronze.isStackEqual(mInventory[1], true, true)) { - mEfficiencyIncrease = 10; - } else if (GT_Items.Component_Turbine_Steel.isStackEqual(mInventory[1], true, true)) { - mEfficiencyIncrease = 20; - } else if (GT_Items.Component_Turbine_Magnalium.isStackEqual(mInventory[1], true, true)) { - mEfficiencyIncrease = 50; - } else if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(mInventory[1], true, true)) { - mEfficiencyIncrease = 15; - } else if (GT_Items.Component_Turbine_Carbon.isStackEqual(mInventory[1], true, true)) { - mEfficiencyIncrease = 100; - } else { - mEfficiencyIncrease = 20; - } - } - - @Override - public IIcon getTextureIcon(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { - if (aSide == aFacing) { - if (aActive) return GT_BlockMetaID_Block.mIconGasTurbineActive[4]; - return GT_BlockMetaID_Block.mIconGasTurbine[4]; - } - return null; - } - - @Override - public int getPollutionPerTick(ItemStack aStack) { - return 1; - } - - @Override - public String getDescription() { - return "metatileentity.GT_Multi_GasTurbine.tooltip"; - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - super.saveNBTData(aNBT); - aNBT.setInteger("mEfficiencyIncrease", mEfficiencyIncrease); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - super.loadNBTData(aNBT); - mEfficiencyIncrease = aNBT.getInteger("mEfficiencyIncrease"); - } - - protected class GeneratorMultiblockRecipeLogic extends GeneratorRecipeLogic { - - protected GeneratorMultiblockRecipeLogic(IntSupplier efficiency, RecipeMap recipeMap, IRecipeWorkable tile) { - super(efficiency, recipeMap, tile); - } - - @Override - protected boolean updateRecipeProgress() { - if (leftEU > 0) { - int EU = (int) (Math.min(((MetaTileEntity) getMachine()).maxEUOutput(), leftEU) * (efficiency.getAsInt() / 100.0D)); - leftEU -= EU; - if (addEnergyOutput(EU)) { - if (leftEU <= 0) { - progressTime = 0; - maxProgressTime = 0; - EUt = 0; - leftEU = 0; - - endRecipe(previousRecipe); - getMachine().endProcess(); - return true; - } - } - } - - return false; - } - - @Override - protected void startRecipe(Recipe recipe) { - if (getMachine().spaceForOutput(recipe)) { - previousRecipe = recipe; - progressTime = 1; - leftEU = recipe.getDuration() * recipe.getEUt(); - maxProgressTime = (int) Math.ceil(leftEU * 1.0D / ((MetaTileEntity) getMachine()).maxEUOutput()); - if (consumeInputs(recipe)) { - triggerMachine(true); - getMachine().startProcess(); - } else { - GT_Log.log.catching(new IllegalStateException("Error state detected! RecipeMap passed recipe, but it's not matching! Report about this!!!")); - leftEU = 0; - progressTime = 0; - maxProgressTime = 0; - previousRecipe = null; - } - } else { - triggerMachine(false); - } - } - - } -} diff --git a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_SteamTurbine.java b/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_SteamTurbine.java deleted file mode 100644 index 7f42544..0000000 --- a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_SteamTurbine.java +++ /dev/null @@ -1,220 +0,0 @@ -package gregtechmod.common.tileentities.machines.multi; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.Map; - -import gregtechmod.api.GregTech_API; -import gregtechmod.api.enums.GT_Items; -import gregtechmod.api.interfaces.IGregTechTileEntity; -import gregtechmod.api.interfaces.IMetaTileEntity; -import gregtechmod.api.metatileentity.MetaTileEntity; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Dynamo; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Maintenance; -import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Output; -import gregtechmod.api.metatileentity.implementations.MetaTileEntityMultiblock; -import gregtechmod.api.util.GT_ModHandler; -import gregtechmod.api.util.GT_Utility; -import gregtechmod.api.util.InfoBuilder; -import gregtechmod.common.blocks.GT_BlockMetaID_Block; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; - -public class GT_MetaTileEntity_Multi_SteamTurbine extends MetaTileEntityMultiblock { - - public static final int TURBINE_OUTPUT_EU = 800; - public static final int MAX_EFFICIENCY = 100_00; - - protected int mEfficiencyIncrease = 0; - - @Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;} - @Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 157, GregTech_API.gregtechmod);} - @Override public boolean isGivingInformation() {return true;} - @Override public void updateEfficiency() {} - - public GT_MetaTileEntity_Multi_SteamTurbine(int aID, String mName) { - super(aID, mName); - mEfficiency = MAX_EFFICIENCY; - } - - public GT_MetaTileEntity_Multi_SteamTurbine() { - mEfficiency = MAX_EFFICIENCY; - } - - @Override - public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { - return new GT_MetaTileEntity_Multi_SteamTurbine(); - } - - @Override - public boolean isCorrectMachinePart(ItemStack aStack) { - return this.getMaxEfficiency(aStack) > 0; - } - - @Override - public int getDamageToComponent(ItemStack aStack) { - return GT_Utility.areStacksEqual(GT_ModHandler.getRCItem("part.turbine.rotor", 1, GregTech_API.ITEM_WILDCARD_DAMAGE), aStack)?2:1; - } - - @Override - public void onPostTick() { - super.onPostTick(); - if (getBaseMetaTileEntity().isServerSide()) { - if (this.checkRecipe(mInventory[1]) && getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getAirAtSide(getBaseMetaTileEntity().getFrontFacing())) { - mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); - this.addEnergyOutput((int)(TURBINE_OUTPUT_EU * mEfficiency * 1.0D / MAX_EFFICIENCY)); - if (!getBaseMetaTileEntity().isActive()) getBaseMetaTileEntity().setActive(true); - if (!doRandomMaintenanceDamage() || !polluteEnvironment(getPollutionPerTick(mInventory[1]))) { - stopMachine(); - } - } else { - mEfficiency = 0; - mEfficiencyIncrease = 0; - stopMachine(); - } - } - } - - public boolean checkRecipe(ItemStack aStack) { - if (depleteInput(GT_ModHandler.getSteam(TURBINE_OUTPUT_EU * 2)) || depleteInput(GT_ModHandler.getIC2Steam(TURBINE_OUTPUT_EU * 2))) { - if (GT_Items.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) { - this.mEfficiencyIncrease = 10; - } else if (GT_Items.Component_Turbine_Steel.isStackEqual(aStack, true, true)) { - this.mEfficiencyIncrease = 20; - } else if (GT_Items.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) { - this.mEfficiencyIncrease = 50; - } else if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) { - this.mEfficiencyIncrease = 15; - } else if (GT_Items.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) { - this.mEfficiencyIncrease = 100; - } else { - this.mEfficiencyIncrease = 20; - } - addOutput(GT_ModHandler.getWater(10)); - return true; - } - return false; - } - - @Override - public boolean checkMachine(ItemStack aStack) { - byte tSide = getBaseMetaTileEntity().getBackFacing(); - if (getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 1) && getBaseMetaTileEntity().getAirAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 2)) { - TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(getBaseMetaTileEntity().getBackFacing(), 3); - if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_Dynamo) { - mDynamoHatches.add((GT_MetaTileEntity_Hatch_Dynamo)((IGregTechTileEntity)tTileEntity).getMetaTileEntity()); - } else { - return false; - } - - int tAirCount = 0; - for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) for (byte k = -1; k < 2; k++) { - if (getBaseMetaTileEntity().getAirOffset(i, j, k)) tAirCount++; - } - if (tAirCount != 10) return false; - for (byte i = 2; i < 6; i++) { - if (null != (tTileEntity = getBaseMetaTileEntity().getTileEntityAtSideAndDistance(i, 2)) && tTileEntity instanceof IGregTechTileEntity) { - if (((IGregTechTileEntity)tTileEntity).getFrontFacing() == getBaseMetaTileEntity().getFrontFacing() && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { - if (((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof GT_MetaTileEntity_Multi_SteamTurbine) return false; - } - } - } - - int tX = getBaseMetaTileEntity().getXCoord(), tY = getBaseMetaTileEntity().getYCoord(), tZ = getBaseMetaTileEntity().getZCoord(); - for (byte i = -1; i < 2; i++) for (byte j = -1; j < 2; j++) if (i != 0 || j != 0) for (byte k = 0; k < 4; k++) { - if ((i == 0 || j == 0) && (k == 1 || k == 2)) { - if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != GregTech_API.sBlockList[0] || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != 13) { - tTileEntity = getBaseMetaTileEntity().getTileEntity(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)); - if (tTileEntity != null && tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() != null) { - IMetaTileEntity mte = ((IGregTechTileEntity)tTileEntity).getMetaTileEntity(); - if (mte instanceof GT_MetaTileEntity_Hatch_Maintenance) { - maintenanceHatch = new WeakReference<>((GT_MetaTileEntity_Hatch_Maintenance)mte); - } else if (mte instanceof GT_MetaTileEntity_Hatch_Input) { - mInputHatches.add((GT_MetaTileEntity_Hatch_Input)mte); - } else if (mte instanceof GT_MetaTileEntity_Hatch_Output) { - mOutputHatches.add((GT_MetaTileEntity_Hatch_Output)mte); - } else { - return false; - } - } else { - return false; - } - } - } else { - if (getBaseMetaTileEntity().getBlock(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != GregTech_API.sBlockList[0] || getBaseMetaTileEntity().getMetaID(tX+(tSide<4?i:tSide==5?+k:-k), tY+j, tZ+(tSide<4?tSide==3?+k:-k:i)) != 13) { - return false; - } - } - } - } else { - return false; - } - return true; - } - - @Override - public boolean explodesOnComponentBreak(ItemStack aStack) { - return true; - } - - @Override - public int getMaxEfficiency(ItemStack aStack) { - if (GT_Items.Component_Turbine_Bronze.isStackEqual(aStack, true, true)) return 60_00; - if (GT_Items.Component_Turbine_Steel.isStackEqual(aStack, true, true)) return 80_00; - if (GT_Items.Component_Turbine_Magnalium.isStackEqual(aStack, true, true)) return 100_00; - if (GT_Items.Component_Turbine_TungstenSteel.isStackEqual(aStack, true, true)) return 90_00; - if (GT_Items.Component_Turbine_Carbon.isStackEqual(aStack, true, true)) return 125_00; - if (GT_Utility.areStacksEqual(aStack, GT_ModHandler.getRCItem("part.turbine.rotor", 1, GregTech_API.ITEM_WILDCARD_DAMAGE))) return 80_00; - return 0; - } - - @Override - public IIcon getTextureIcon(byte aSide, byte aFacing, boolean aActive, boolean aRedstone) { - if (aSide == aFacing) { - if (aActive) return GT_BlockMetaID_Block.mIconSteamTurbineActive[4]; - return GT_BlockMetaID_Block.mIconSteamTurbine[4]; - } - return null; - } - - @Override - public int getPollutionPerTick(ItemStack aStack) { - return 0; - } - - @Override - public Map> getInfoData() { - InfoBuilder b = InfoBuilder.create() - .newKey("metatileentity.turbine.speed", GT_Utility.parseNumberToString(mEfficiency * 100.0D / MAX_EFFICIENCY)) - .newKey("metatileentity.multiblock.dynamo_output", (int)(TURBINE_OUTPUT_EU * mEfficiency * 1.0D / MAX_EFFICIENCY)) - .newKey("metatileentity.multiblock.malfunction_amount", getIdealStatus() - getRepairStatus()); - if (isCorrectMachinePart(mInventory[1])) { - b.newKey("metatileentity.turbine.durability", GT_Utility.parseNumberToString(mInventory[1].getMaxDamage() - mInventory[1].getItemDamage())); - } else { - b.newKey("metatileentity.turbine.no_turbine"); - } - return b.build(); - } - - @Override - public String getDescription() { - return "metatileentity.GT_Multi_SteamTurbine.tooltip"; - } - - @Override - public void saveNBTData(NBTTagCompound aNBT) { - super.saveNBTData(aNBT); - aNBT.setInteger("mEfficiencyIncrease", mEfficiencyIncrease); - } - - @Override - public void loadNBTData(NBTTagCompound aNBT) { - super.loadNBTData(aNBT); - mEfficiencyIncrease = aNBT.getInteger("mEfficiencyIncrease"); - } -} diff --git a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_ThermalBoiler.java b/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_ThermalBoiler.java index e93e50f..ea2d913 100644 --- a/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_ThermalBoiler.java +++ b/src/main/java/gregtechmod/common/tileentities/machines/multi/GT_MetaTileEntity_Multi_ThermalBoiler.java @@ -37,7 +37,7 @@ import net.minecraftforge.fluids.FluidStack; public class GT_MetaTileEntity_Multi_ThermalBoiler extends MTEWorkableMultiblock { @Override public boolean isFacingValid(byte aFacing) {return aFacing > 1;} - @Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 158, GregTech_API.gregtechmod);} + @Override public void onRightclick(EntityPlayer aPlayer) {getBaseMetaTileEntity().openGUI(aPlayer, 156, GregTech_API.gregtechmod);} @Override public int maxEUOutput() {return 400;} public GT_MetaTileEntity_Multi_ThermalBoiler(int aID, String mName) { diff --git a/src/main/java/gregtechmod/loaders/load/GT_LiquidAndFuelLoader.java b/src/main/java/gregtechmod/loaders/load/GT_LiquidAndFuelLoader.java index bfc2312..a2d82cd 100644 --- a/src/main/java/gregtechmod/loaders/load/GT_LiquidAndFuelLoader.java +++ b/src/main/java/gregtechmod/loaders/load/GT_LiquidAndFuelLoader.java @@ -82,6 +82,9 @@ public class GT_LiquidAndFuelLoader implements Runnable { RecipeMaps.MAGIC_FUELS.factory().EUt(24).duration(3125).input(new ItemStack(Items.ghast_tear, 1)).buildAndRegister(); RecipeMaps.MAGIC_FUELS.factory().EUt(20).duration(Materials.NetherStar.mFuelPower * 2 / 20).input(new ItemStack(Blocks.beacon, 1)).buildAndRegister(); + FluidStack steam = null; + if ((steam = GT_ModHandler.getSteam(2)) != null) RecipeMaps.STEAM_FUELS.factory().EUt(1).duration(1).input(steam).buildAndRegister(); + if ((steam = GT_ModHandler.getIC2Steam(2)) != null) RecipeMaps.STEAM_FUELS.factory().EUt(1).duration(1).input(steam).buildAndRegister(); GT_ModHandler.addBoilerFuel(GT_Utility.getFluidForFilledItem(GT_OreDictUnificator.get(OrePrefixes.cell, Materials.NitroCoalFuel)), 18000); GT_ModHandler.addBoilerFuel(GT_Utility.getFluidForFilledItem(GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Lithium)), 24000); diff --git a/src/main/java/gregtechmod/loaders/postload/GT_BookAndLootLoader.java b/src/main/java/gregtechmod/loaders/postload/GT_BookAndLootLoader.java index b121e25..1bfed77 100644 --- a/src/main/java/gregtechmod/loaders/postload/GT_BookAndLootLoader.java +++ b/src/main/java/gregtechmod/loaders/postload/GT_BookAndLootLoader.java @@ -259,9 +259,9 @@ public class GT_BookAndLootLoader implements Runnable { } tStack = GT_Utility.getWrittenBook("Turbine Manual", "Gregorius Techneticies", new String[] { - "This Book explains how to set up and run your advanced Gas or Steam Turbine. We are not responsible for any Damage done by this Book itself nor its content." - , "First you need to craft the following things for a normal Turbine to Function: The Main Turbine Block, 28 Machine Casings (Gas = Reinforced, Steam = Standard), a Dynamo Hatch, an Input Hatch, an Output Hatch, a Turbine Rotor, " - , "a bunch of different Tools, in case of the Gas Turbine (not needed for Steam Turbine) a Muffler Hatch, as every Machine, which burns things causes some unwanted Gasses and finally a Maintenance Hatch" + "This Book explains how to set up and run your advanced Gas, Steam and Plasme Turbines. We are not responsible for any Damage done by this Book itself nor its content." + , "First you need to craft the following things for a normal Turbine to Function: The Main Turbine Block, 28 Machine Casings (Plasma = Advanced, Gas = Reinforced, Steam = Standard), a Dynamo Hatch, an Input Hatch, an Output Hatch(only for Steam), a Turbine Rotor, " + , "a bunch of different Tools, in case of the Gas Turbine (not needed for Steam and Plasma Turbine) a Muffler Hatch, as every Machine, which burns things causes some unwanted Gasses and finally a Maintenance Hatch" , "To begin the building, lay out the first 3x4 layer of Machine Casings on the ground, then place the Turbine Block facing outward in the middle of one of the two 3m wide Sides. Now 3 of the Casings should look like Rotors." , "Now grab your Dynamo Hatch and place it on the opposite 3m wide Side also facing outwards. And now the four corners of the Machine need also a Machine Casing. You should have a 2x3 inbetween the two 'Walls' you just created left by now." , "So, now place a 3x4 of Machine Casings ontop, at the 3rd Layer. The Turbine should now look like connected. There are 4 Spots left, place the Input, Output, Muffler (or another Machine Casing) and the Maintenance Hatch in the Spots facing outwards." diff --git a/src/main/java/gregtechmod/loaders/postload/GT_CraftingRecipeLoader.java b/src/main/java/gregtechmod/loaders/postload/GT_CraftingRecipeLoader.java index ab4a830..24acb29 100644 --- a/src/main/java/gregtechmod/loaders/postload/GT_CraftingRecipeLoader.java +++ b/src/main/java/gregtechmod/loaders/postload/GT_CraftingRecipeLoader.java @@ -664,6 +664,10 @@ public class GT_CraftingRecipeLoader implements Runnable { GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,109), new Object[] {"XXX", "GMG", "XCX", 'G', OrePrefixes.gearGt.get(Materials.Steel), 'X', new ItemStack(GregTech_API.sBlockList[1], 1,34), 'M', GT_OreDictNames.craftingRawMachineTier02, 'C', OrePrefixes.circuit.get(Materials.Advanced)}); } + if (GregTech_API.sRecipeFile.get(GT_ConfigCategories.Recipes.gregtechrecipes, "multi_plasmaturbine", true)) { + GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,117), new Object[] {"XCX", "XMX", "GCG", 'G', OrePrefixes.gearGt.get(Materials.TungstenSteel), 'X', new ItemStack(GregTech_API.sBlockList[1], 1,37), 'M', GT_OreDictNames.craftingRawMachineTier04, 'C', OrePrefixes.circuit.get(Materials.Master)}); + } + if (GregTech_API.sRecipeFile.get(GT_ConfigCategories.Recipes.gregtechrecipes, "multi_thermalboiler", true)) { GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,110), new Object[] {"XMX", "GCG", "XMX", 'G', OrePrefixes.gearGt.get(Materials.Titanium), 'X', new ItemStack(GregTech_API.sBlockList[1], 1,35), 'M', GT_OreDictNames.craftingCentrifuge, 'C', OrePrefixes.circuit.get(Materials.Elite)}); GT_ModHandler.addCraftingRecipe(new ItemStack(GregTech_API.sBlockList[1], 1,110), new Object[] {"XMX", "GCG", "XMX", 'G', OrePrefixes.gearGt.get(Materials.TungstenSteel), 'X', new ItemStack(GregTech_API.sBlockList[1], 1,35), 'M', GT_OreDictNames.craftingCentrifuge, 'C', OrePrefixes.circuit.get(Materials.Elite)}); diff --git a/src/main/java/gregtechmod/loaders/preload/GT_ItemLoader.java b/src/main/java/gregtechmod/loaders/preload/GT_ItemLoader.java index 779a6c1..b925a23 100644 --- a/src/main/java/gregtechmod/loaders/preload/GT_ItemLoader.java +++ b/src/main/java/gregtechmod/loaders/preload/GT_ItemLoader.java @@ -184,21 +184,6 @@ public class GT_ItemLoader implements Runnable { GT_MetaItem_Component.addItem(88, GT_OreDictNames.craftingLock , null); GT_MetaItem_Component.addItem(89, GT_OreDictNames.craftingMuffler , null); -// GT_MetaItem_Component.addItem(96, "gearGtIron" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier01" , GT_MetaItem_Component.instance.getUnunifiedStack( 96, 1)); -// GT_MetaItem_Component.addItem(97, "gearGtBronze" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier01" , GT_MetaItem_Component.instance.getUnunifiedStack( 97, 1)); -// GT_MetaItem_Component.addItem(98, "gearGtSteel" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier02" , GT_MetaItem_Component.instance.getUnunifiedStack( 98, 1)); -// GT_MetaItem_Component.addItem(99, "gearGtTitanium" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier03" , GT_MetaItem_Component.instance.getUnunifiedStack( 99, 1)); -// GT_MetaItem_Component.addItem(100, "gearGtTungstenSteel" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier03" , GT_MetaItem_Component.instance.getUnunifiedStack(100, 1)); -// GT_MetaItem_Component.addItem(101, "gearGtIridium" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier04" , GT_MetaItem_Component.instance.getUnunifiedStack(101, 1)); -// GT_MetaItem_Component.addItem(102, "gearGtStainlessSteel" , null); -// GT_OreDictUnificator.registerOreLater("craftingGearTier02" , GT_MetaItem_Component.instance.getUnunifiedStack(102, 1)); - GT_MetaGenerated_Item_01 tMetaGenerated; GregTech_API.sItemList[8] = tMetaGenerated = new GT_MetaGenerated_Item_01(); tMetaGenerated.setBurnValue(17000 + Materials.Wood.mMetaItemSubID, 1600); diff --git a/src/main/java/gregtechmod/loaders/preload/GT_MetaTileEntityLoader.java b/src/main/java/gregtechmod/loaders/preload/GT_MetaTileEntityLoader.java index bbcdee4..dd25e3c 100644 --- a/src/main/java/gregtechmod/loaders/preload/GT_MetaTileEntityLoader.java +++ b/src/main/java/gregtechmod/loaders/preload/GT_MetaTileEntityLoader.java @@ -9,6 +9,9 @@ import gregtechmod.api.util.GT_Log; import gregtechmod.common.recipe.RecipeMaps; import gregtechmod.common.tileentities.automation.*; import gregtechmod.common.tileentities.energy.production.*; +import gregtechmod.common.tileentities.energy.production.multi.GT_MetaTileEntity_Multi_GasTurbine; +import gregtechmod.common.tileentities.energy.production.multi.GT_MetaTileEntity_Multi_SteamTurbine; +import gregtechmod.common.tileentities.energy.production.multi.MultiPlasmaTurbine; import gregtechmod.common.tileentities.energy.storage.*; import gregtechmod.common.tileentities.frames.*; import gregtechmod.common.tileentities.machines.*; @@ -125,7 +128,8 @@ public class GT_MetaTileEntityLoader implements Runnable { new GT_MetaTileEntity_Scanner (114, "GT_Scanner" , RecipeMaps.SCANNING); new GT_MetaTileEntity_Extruder (115, "GT_Extruder" , RecipeMaps.EXTRUDING); new GT_MetaTileEntity_ElectricRetrieverAdvanced (116, "GT_RetrieverAdvanced"); - + new MultiPlasmaTurbine (117, "GT_Multi_PlasmaTurbine"); + new GT_MetaTileEntity_ElectricTypeFilter (126, "GT_E_T_Filter"); new GT_MetaTileEntity_ElectricFilter (127, "GT_E_Filter"); diff --git a/src/main/resources/assets/gregtech_addon/lang/en_US.lang b/src/main/resources/assets/gregtech_addon/lang/en_US.lang index d0f8a3f..71bba36 100644 --- a/src/main/resources/assets/gregtech_addon/lang/en_US.lang +++ b/src/main/resources/assets/gregtech_addon/lang/en_US.lang @@ -279,6 +279,8 @@ metatileentity.GT_Multi_GasTurbine.name=Large Gas Turbine metatileentity.GT_Multi_GasTurbine.tooltip=About 42 small Gas Turbines worth metatileentity.GT_Multi_SteamTurbine.name=Large Steam Turbine metatileentity.GT_Multi_SteamTurbine.tooltip=Consumes 1600 Liters of Steam per Tick +metatileentity.GT_Multi_PlasmaTurbine.name=Large Plasma Turbine +metatileentity.GT_Multi_PlasmaTurbine.tooltip=Gives you and 8192 EU per tick! metatileentity.GT_Multi_ThermalBoiler.name=Thermal Boiler metatileentity.GT_Multi_ThermalBoiler.tooltip=Converts Heat into Steam metatileentity.GT_Lathe.name=Lathe @@ -347,7 +349,7 @@ metatileentity.TileEntity_DESCRIPTION.tooltip= metatileentity.TileEntity_EUp_IN.tooltip=Max EU/p IN: %d metatileentity.TileEntity_EUp_OUT.tooltip=Max EU/p OUT: %d metatileentity.TileEntity_EUp_OUT.AESU.tooltip=Max EU/p OUT: 0 - 8192 (Adjustable) -metatileentity.TileEntity_EUp_OUT.Dynamo_Hatch.tooltip=Max EU/p OUT: 0 - 2048 (depends on generated Energy) +metatileentity.TileEntity_EUp_OUT.Dynamo_Hatch.tooltip=Max EU/p OUT: 0 - 8192 (depends on generated Energy) metatileentity.TileEntity_EUp_AMOUNT.tooltip=Amount of Output Packets: %d metatileentity.TileEntity_EUp_STORE.tooltip=EU Storage: %d metatileentity.TileEntity_UPGRADES.tooltip=Possible Upgrades: diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine1.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine1.png new file mode 100644 index 0000000000000000000000000000000000000000..1d75cc8cf7803a3866da8054f7819d0c59cc7641 GIT binary patch literal 426 zcmV;b0agBqP)7C1t*;__5b?bD4i$X^!IRRX;2!iK2vRRTg5X_>PR7j4{&aO4LdaykBwrG|y1wCW zqlbee&C=~O%Q7UoU6jB)%SRMNM5IWGAfi0+{&o5E@-7b-BLV;m76HYIFHVS9cE%W^ zmDYn{d@`Cs5Ci@4?!*VhT5o!JzIICHdtvA!i$9+p?-=2_49@iV;@bVY!AfoS$6^QXNdkoo^u~ z8r3%T8ewsI5tzH7t1VGK^Wt#cU9Y>i>c=t^M=km-dGw3jB&Kt_tvuQvPpSlK*s=e2 zui|*#pv5LhCOJwj?WVDH)mj^LU=l=f^v>Sy>T3y~^~z1Xt~GfsAA&Q*cHTfg9_Ld19(y(rhlrT&q?S-`@{?=`N0Q?!4EPPqPu4sAaY?iM exT!01yDD6f-0~Mm;08k`I{F1QA?ikO^eiB$L%j@;b zv!Ct3htBI;yMu^egoxN)T(#I)TP@pPK4nLRp^y>}PfiQPNg)I}LIWbj!VX8GC}PXL zjSRkn<)uZrx3CHG0#b<}UqU*%KGTVE&KxH3Cn(WYlln&)pv{eWMHKNJ;W!Dv-VVuT z%Bd+Zr6M!l_9`b6nA-&b8GvO>ac40m%MCGJ5dxlH`i^MN`OW)Et)ww7{%(Lwhf1@! zd4B4?f5g=4+l{z;CdTR}wqTT<30-GneMP3Z>bn}Vf4ue2BAB?wh)3_1HH{wZG)AVG ztTG_@q-;v1a)oWbIW%u+eC0!e03qOc#8b*PU97re{n&B!5e9ZYKq>)v-ZU#aDL0KV z+tq{S!hM1++3K=Vt?{SV`?_oSV?DkQxFgR*0YBcU*_j^!1_1P)nnIRYTV((M002ov JPDHLkV1n4z#ytQ4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine4.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine4.png new file mode 100644 index 0000000000000000000000000000000000000000..c4a1bfba151e45cbad906714e5af8093f7e9e262 GIT binary patch literal 446 zcmV;v0YUzWP)}0uY!tY*hZed<(tw9Lz`l$*UdnYgqhA9zII08n1{$QM?72h}#6$%ihHY3CBUbe{w z)f(BS+dD&(N-3NDr{fBP-P&QxIK(6xi`I~)CIV=nl9smFU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine5.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine5.png new file mode 100644 index 0000000000000000000000000000000000000000..44ecd55c398085e5bf9462fc9c1fd41a860f22bb GIT binary patch literal 360 zcmV-u0hj)XP)Lgh@o?EDufAoDd^OK0vV0 zGByga@R77Z{RL|k5k&hGDQvWhqP1dgp^`Q!Y$RFm0XACr0YXp{lkDzzXJ;RYE95Xc z++EI@JLlY`M zf&c|Uy0%p^H7XdHxmiOE@ica4iqhU0gb2SgnTTZgK5%v%l4wMWWk2=eq|AFZmv2{k z18i5p4TOgM{`$syzOZU6r3#5iqdXe|%5jxaf~ki6FG{#m`wvv;^K(%ty&zWg0_`@!5L0?^%Ip_}T;kjX% zeBw$kC4sI&Cy13F5J zk2R67K<%EUvQYq$4x2~GxjE|ipiZfhJ{-Ot4;5_^UY?^)2^F+jWG@9O@?Qn)?Q9w6 r5K$kZXn^=Ie35v3bTH5KUw{Ds7W<%r8hLsD00000NkvXXu0mjfN+-hf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine8.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine8.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f5e0da6f15cdce93e2649ccba1552d84998289 GIT binary patch literal 424 zcmV;Z0ayNsP)>V}mu4BQhFhqh@^H;pzZkV422pAIH zC>G46j;l3f;+i}KlHeUfKmi{*w}Z=8RwEG#goI%d=S4=vRBmuh7zlh*`a0gh!)4*A zz&i*&0gRZ;yle?JETfguS`!)GTUlNzmWu2!r4@&iilUBx&9iN7*7N835nuqO6O&%P SH`cuX0000) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine9.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbine9.png new file mode 100644 index 0000000000000000000000000000000000000000..e9acf106ae56ef8efc9b919d531c9bb9d9c1d04f GIT binary patch literal 440 zcmV;p0Z0CcP)I#gsGDXxA?mv%A* z3+Qh6hXJ__+8bbIR)`wTEc2qG9|r`Iw`kJLk&)Tup@B4J1WCPMurq#B5TcL2! zB}nqw-Nv?N8F4+Qe!xlC7;|-b?rVr>J@2=WLH~zXs-*rpTGjWlmo|PbfU?k~bO|@D z>n8Y0qSk#a>!$h0B5CwBiM}I}SAxgDz6C`|(=Amy-S+Ixj_w8q=R9b-w`X7VtDdPxiS6AzYn~G5!2wijF=|6K#BmIv6!s6B zfH9b_PeVl!lv0pNLP`lC1n-HXi%a|G?1ne!fm8|v3kw0kGlAA_-x>>8izG>)rPdf2 ztYCF|4ju`L@!SfEe-@ff&IJiEd}JrI<5*~GElX#(lSP3Fl5f(r1awBWlcu|dYA#^!C{kMPx}L&!(oEU2-dF(RGLOb0FOC0X9A)DeywdWPcF>O zbpDZ2p%DdhB^{AK%x zHAM9YwOS1-2=L_D3J}MbYqtc;&?27ootgbo7wgn@yAvZI}c za&{9Nz!>!VeJJy$XK+9xgFec!l_bT6L0ITWg~WErL4+zbaRPGGVr5lQ1(hGC|25JI zIG9Td6|P-e%*4&#KAQ%q#6PVd>A`+I5U?HQZ=JC{P*+dg&D-UUk=w+PcEyf|CMKP2 z{pQ=;oGwA9x@yO%nOQekA04&hug%Te`9DiNgw0FG?MD;I_+a4Pu| z+RCy$=JKdBXpZ7CT=1#A9Vjm3U@B>wfyTbQLp}IU z^nh<{1|8p{-4o>rn9@Yk&cZ6rUB2S3FF6nK@SsPBCL!TT;zH47D|LZ2gDTb1fgzLl zV9LA8mDosSce}p_5;2P24Ah&DN?`}OZS#__UFrhEBS8YL1|_<{!jgF-v7@YjR-+31 zw*h1LJ{al&icTW2lUT|>UmtQ4FsdK@n0h%Uw1!AQS)&!{yoZP(+BqKSA zFD}eLB9MC$w5Fk+cRsr&vJ=ynSSbaB?F4r_e|ooG*q}UdDQu$LC(~N$f`k+no1mzQ eyb3b90N^k0O3uPnH$Dmg00004Lxh4~vKvwiXe!unclqS=ibrM$#sT79s)3 z|B%8chUlG_yPYTR&Ccv>*1P3SL~!=iRUL{mU+tQg9$5>AiWo zDgA3#=KUDkao_ZM&`|{S;Q33cjU9*98mgkjh++d{jP!Xtj$?T;-1xz-4(2XRLD7dU zVNxT57=zIxJbL#EmuJsG_cg3A-#))Z$}@^AFXkGotOl?!B=)*e2^_e|J@PB`g;of8 zTL*46H<4G-1DtT8L5TwwYqGd!VJJI8BXw#B3JR~+HV~~md?sV}R&QD+H3f7IO?G*5 zPEEqVm^7M|6V0L~%UfSzjo8d48Zil)AbT~hp=yVq{Cvj}4nufC+u;Api6>#9r2|y-r zP_Lhq#t6d^C&|f^?PY>(0)CRG87(Ybl}@Ym10Odx@|oKqpnB+N8%Two7;m7|gHjLv zfgU)+k@etqGi6f%uLoR#VHILnJvcjk-u9+}t;e5ihKJFE#>9lT&6ToeP@o5l7f)72 znR231qz8rBD)r#cDD~jT>B0ZMAMn?iKkY0mBi|3EF3f<1g`LdYy_j`Upa;2HU}4FC z_23%;EwW*t)B{1O2S-j1xOl<>!jO94KkuQa-MT67<4}vZ{Rm*00005Oa6g~Nn@}Ac26pTS-g9yjjK2TKo<4htTL-QHoeT&A zAOa8rgS(F*=-oVrD!zUBia6QcMifQB@gO&jgWAH*!X7nF&&=q#-&56RQ!$B*VNcwSXAT3H=Amt zqc};D()eFixOMMnZMdrM>5Pt45Hr|@=J^@@9_ks;M_3(h;Na}xaz=Jxz>IzsA;K_^ zK~y}MY7eNjgUgG3yn6e&oJs8kpWeSyW4F7nVFxPc#ap9%W_jgW>zi3bs*u_i{vB?s zN|X#-y}qQMF*eFUDyeJ$>!4~V$Q`6G-9MeL{F&ACzy#AtBbKm9rqI%Zxez!K0<$4- zDAbFX1qMi^nt#)wmmXAM zRbrbSxY%fEqNN9kpB`9gq#o!apsoj!LZ;8uM2pUr9w66)!BQEA6Q|Fp%Y^FMJCR*>OqsSz)KH=L@Z|%85xiNlw{foBvRGb z9KHGj7m*-jf@gmqTjnUlQbB}=9% zdSHGF1X9|q{|myxDui5K{|j8~`mFJ4)dLcV+vUX$MGOUAdO%bQ$?8zr^q`4}ItD)f k3oheb{V&joZu0>A2Olx`OIOw>QUCw|07*qoM6N<$f@boh>Hq)$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive4.png.mcmeta b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive4.png.mcmeta new file mode 100644 index 0000000..d746756 --- /dev/null +++ b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive4.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation":{} +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png new file mode 100644 index 0000000000000000000000000000000000000000..3905c4dc9b5e89159a70b526716943dcdaff7a71 GIT binary patch literal 883 zcmV-(1C0EMP)gIOegAV^M%-W2lF`~l)cJ$h061A^d9M8$(aFX~MXl8855lPttb zq#CQOseQYP_+WNsdiuSte*LPtcX0Q?qvME($>boeUB7|H*dLGUeQh{w?_WNBj;$+~ zd*9L4ojHH5zAP`V291ttbf&=>*5L<1aD90DZpzV(qZ4&em_+k!_iMc$?jN?!cwQf! zZqSKn@a+A^V;zLf?7XPGQ`p{Vb$F^?+QvRaJ$U@;bwi*qx3@0U`_ArOy&sH!wg4+@ zD=kRTjC0N$mCkHq5cTP1Wm}!+SLq;e7wO-&;CPIKPR z(uL4vB&FTl*-^DsKu4wYtof@m0v65}AHA5uG(pkO3Px0D>YNpmib_yW7*Xj=BPUSK zSv3}grgXkK+NjTqSlMN4q`5Okh7YgeNg>=F3zi8A{5n!ITY*IepR%Zv>HN{YwPg5j?th$%wMvXZrAreMP>oz|tp|rNSY9(e%=}OIjB}YqzhJ0|mvq|AG&ti_TQ6570Oic(p(E(X)WQ8l9V*q9wEbSF|)HbL=-9+2i# zXP^_4AK!0oUbt9aPA)CAkH3zNrsfM2qqCc>?f&gse@i+0L*dNJ0+#GtppLEyG!EE1 zC+aTkru(7>E4qBX{#uc2*OPis)}4uP#Dycj>jBaA1ciA}Js|s37u=X9`O_yoSkwkjtfJ$ej)(W|#BZREz)UpN-yi@0002ov JPDHLkV1hVrtDgV> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png.mcmeta b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png.mcmeta new file mode 100644 index 0000000..d746756 --- /dev/null +++ b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive5.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation":{} +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive6.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive6.png new file mode 100644 index 0000000000000000000000000000000000000000..5ecb74d1903619d590502d9158552f74771aa2df GIT binary patch literal 976 zcmV;>126oEP)~vo8cuyhzwX4qo&iMA5V2-Gj=WghcTY z;(`zGq6a^K5R4nM*`1Mp&(uuybEAJ)X6I2g-Bn$`u2B!4J}-!fy4_7$TV0`x*RJD~ zI``Iz)w*?wC?lc~MWo66?si_#>626DvN4`LbJqNzUmF`_=>QB>bERL<=-58eT9ckS zK2sY?eI9>bpDo>d;@yX_QmPyQ%X@Q7nIg4Eo12+Co_ZKiib|`(+Rh9zNvNfi?V}MLB;~wUl+1Q3hkGYJlhN zX`5^wj5$HXC^!q__>9dDFBS5Y3gMB+LC(xQ?)aA_ow=5aB^14$$+Zkk7h!TU~rp z|Bv!O1}s%jMj;*`1{}EL;z{v<1IL>RYnmFQ#du)$MxMLGnoOhNLBHa`R$r6|z&y~Nb*1F4EqQHKqlz?qQk zepIqQ2+euu#wx!T_>cR&V6?FLf8PsCC8=nCfC@xcDmf@|W>uq{2J--EbK4x8%YfDj z@E}SgIQBMM@BoWxuWEP@$^tJY>+3bf0~tVWd!u*@@xUb##QlO5z!(p3&t1+~NZw+K y@qq8AXq4hXO{DtmRZ6}7pbH008ciUxjQ#@5>%BE)QsFi()Ph7ial7Y}>b9Q`4;AmlNkEaF8G5hM|! zf)_m`d4Nb{*UfBqOI3Hz%(_n2ol6Lrf}(4Cy1(kG?)tW9|N9TKvAKtZvFAX=0099Z zfCxZGp}zbPUXH4}Vm*2?jcWC-*pZ53gkcEWBfB{wq!Qq|WH)a$)({wD03x75z_9b4 zk=py0$&dTZ$1*mX7oseI)*2L0k0$|g)3uekWV+ReyOu>-X^>y3+$?2manl_NgZO*| zN~v^n$5=JJ2g-)x!(o*q8o$FQP`lg60ja1TN%{2Ike9u6n3MbdrxlRR(x;+sj&PyKffg(T$6*v&q+QC^8ts$ zTJk~32l)5+fd3CY53n46IT(x&vSpkkaS%S>Dm*#-DrL;xQG^e;0vUuG4DL`0@j=-i zlzi~N^TC6+4`uvzdM2Y3(;$4nRS4H$!0|(&{va!b`-7y#DZ&RHgqf)@A27YKmV8k1 fL1O+rJ^*k9ET)JyqGQax00000NkvXXu0mjf!M74e-6#iziLUJhA30kCxrD;w{a~RJu5D@=>KOjiJ#!|r`X)G)fwO8y#2wZ72A|xb% zoG~_9h_*sd?$FEb$eY=>_jYb}_v&z8xMO!_-uK?l?f1=#T7U7%OkbM8xq2Op!@YgT zG5?;&2%07&cp`+~$H&=dxBJHt(3fN;Y_>Os!oPq0mb;(3Hg8GvsM#5^ik)|xd4eju ze7crfar@3PB6zH!^2@4-_8;$JYT-<20B_jb^;TBJY`5tM=&RT6XNzai3})hWay}yn zfhwzlRtm~&_YKZ#tlWKG8Ng5qxc_7c_?e^x7lwa~mE}C)gS91hkpM6NP7LtF6cgl- zq_12I;GY5hrq{oc;yuU^rx$$+R4({rFs-50ptQJvBr!lwx$MYqeYDznjfu|_c4w4U zpg-8hbc^Ypu6aC(V6;}~(jkB#;gpfzqTwhEsxqQG9a zmkEh=ucHVv7wh((v+ZoXN3C`?TL+diqe=%PVFt_F5|qi97KV%jsX8?WQ+AT4w6UTp zn54C^=qe~H-Jg55`p6mySEFS~qkyWEkD^JUq;ns%fId7&`yls%;^?Cu-dZ=I#B4HL zE`*6l6l#G@#y1d&u^%{`20!?;yEh~x!qGtoH|865jL3bz80-B)|#{X z@O^-t$VXOz?*o44B31jPb70Mc66jEN1bP8ULe=m|oojK(G>afrDXYDlA7J<` z4bR!5zT0%~RPZRTAxA=wO6z1VK`1noQ84xchg0AO>dl9brs{tM2yyx2mEC&L*?IX& z!x2=;n0AfZ>qu)l*w3v^v_1Z)o2c;Ox#S!O_dVnqh69|mM0sApTP%{ vkhJMjDCfq#t2tYvK;H{6_Jgq>5CHrKVxh89d6{4W00000NkvXXu0mjf)^~08 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive8.png.mcmeta b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive8.png.mcmeta new file mode 100644 index 0000000..d746756 --- /dev/null +++ b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive8.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation":{} +} \ No newline at end of file diff --git a/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive9.png b/src/main/resources/assets/gregtech_addon/textures/blocks/tile.PlasmaTurbine/PlasmaTurbineActive9.png new file mode 100644 index 0000000000000000000000000000000000000000..0e80dbbd7db5f6e6d56ff8fbac9efa3f3d831518 GIT binary patch literal 693 zcmV;m0!safP)1O>zO{Km-Y*g_f~V&_W?;#fY6vz|L?6v9bvkDN`tj82twn`xHj5G{H_{ z!1(o72tm0c-p-7?`PiAg-Q-pdgoAsqH=n;Z@4cD#yBT`%>W$uNZz7fpovV3k^6>ND=Nr<`$1tBN`LWn-V015o{38LgBtIJ;qM3iT!1kjjQL>n b_yE9PI$CS