diff options
| author | Christina Berchtold <kekzdealer@gmail.com> | 2019-07-03 01:08:48 +0200 |
|---|---|---|
| committer | Christina Berchtold <kekzdealer@gmail.com> | 2019-07-03 01:08:48 +0200 |
| commit | 0dea62f42b119b29611bec9fb85a993a8e2441d8 (patch) | |
| tree | d8ee10733111c1ce23554d1e954afa6baa41352c | |
| parent | d4aa14440c7516cc2bf6613551c34da586fb4207 (diff) | |
| download | GT5-Unofficial-0dea62f42b119b29611bec9fb85a993a8e2441d8.tar.gz GT5-Unofficial-0dea62f42b119b29611bec9fb85a993a8e2441d8.tar.bz2 GT5-Unofficial-0dea62f42b119b29611bec9fb85a993a8e2441d8.zip | |
Added T.F.F.T, a kinda of multi fluid storage multi.
40 files changed, 575 insertions, 7 deletions
diff --git a/GregTech.lang b/GregTech.lang index d05f5bc08c..6ebd2eb2b3 100644 --- a/GregTech.lang +++ b/GregTech.lang @@ -2379,6 +2379,28 @@ languagefile { S:TileEntity_DESCRIPTION_5002_Index_7=Dimensions: 5x5x5 (WxHxL) S:TileEntity_DESCRIPTION_5002_Index_8=Structure: S:TileEntity_DESCRIPTION_5002_Index_9= 80x Radiation Proof Machine Casing (at least) + S:TileEntity_DESCRIPTION_5003_Index_0=Massive fluid tank that can hold up to 25 different fluids + S:TileEntity_DESCRIPTION_5003_Index_1=Fluid storage amount depends on the tank + S:TileEntity_DESCRIPTION_5003_Index_10= Controller: Top center + S:TileEntity_DESCRIPTION_5003_Index_11= Energy Hatch: Any top or bottom casing + S:TileEntity_DESCRIPTION_5003_Index_12= Inner 3x7x3 tube are Storage Field Blocks + S:TileEntity_DESCRIPTION_5003_Index_13= Outer 5x7x5 glass shell is AE2 Quartz Glass or Vanilla Stained Glass + S:TileEntity_DESCRIPTION_5003_Index_14= Maintenance Hatch: Any top or bottom casing + S:TileEntity_DESCRIPTION_5003_Index_15= I/O Hatches: Instead of any casing or glass, have to touch storage field + S:TileEntity_DESCRIPTION_5003_Index_16= Controller: Top center + S:TileEntity_DESCRIPTION_5003_Index_17= Energy Hatch: Any top or bottom casing + S:TileEntity_DESCRIPTION_5003_Index_18= Inner 3x7x3 tube are Storage Field Blocks + S:TileEntity_DESCRIPTION_5003_Index_19= Outer 5x7x5 glass shell is AE2 Quartz Glass or Vanilla Stained Glass + S:TileEntity_DESCRIPTION_5003_Index_2=------------------------------------------ + S:TileEntity_DESCRIPTION_5003_Index_20= Maintenance Hatch: Any top or bottom casing + S:TileEntity_DESCRIPTION_5003_Index_21= I/O Hatches: Instead of any casing or glass, have to touch storage field + S:TileEntity_DESCRIPTION_5003_Index_3=Dimensions: 5x9x5 (WxHxL) + S:TileEntity_DESCRIPTION_5003_Index_4=Structure: + S:TileEntity_DESCRIPTION_5003_Index_5= Controller: Top center + S:TileEntity_DESCRIPTION_5003_Index_6= Energy Hatch: Any top or bottom casing + S:TileEntity_DESCRIPTION_5003_Index_7= Maintenance Hatch, I/O Hatches: Instead of any casing + S:TileEntity_DESCRIPTION_5003_Index_8=Dimensions: 5x9x5 (WxHxL) + S:TileEntity_DESCRIPTION_5003_Index_9=Structure: S:TileEntity_DESCRIPTION_501_Index_0=Fermenting Fluids S:TileEntity_DESCRIPTION_502_Index_0=Fermenting Fluids S:TileEntity_DESCRIPTION_503_Index_0=Fermenting Fluids @@ -4963,6 +4985,7 @@ languagefile { S:gt.blockmachines.multimachine.oredrill4.name=Ore Drilling Plant IV S:gt.blockmachines.multimachine.processingarray.name=Processing Array S:gt.blockmachines.multimachine.pyro.name=Pyrolyse Oven + S:gt.blockmachines.multimachine.tf_fluidtank.name=T.F.F.T S:gt.blockmachines.multimachine.vacuumfreezer.name=Vacuum Freezer S:gt.blockmachines.quantum.chest.tier.01.name=Quantum Chest I S:gt.blockmachines.quantum.chest.tier.02.name=Quantum Chest II diff --git a/config/IC2.ini b/config/IC2.ini index ede344d5b8..e1662db4cc 100644 --- a/config/IC2.ini +++ b/config/IC2.ini @@ -1,5 +1,5 @@ ; ic2 general config
-; created Jul 2, 2019 12:59:46 AM
+; created Jul 3, 2019 1:01:13 AM
;---
[worldgen]
diff --git a/config/splash.properties b/config/splash.properties index 511a10ba56..c349e5e072 100644 --- a/config/splash.properties +++ b/config/splash.properties @@ -1,5 +1,5 @@ #Splash screen properties -#Tue Jul 02 00:59:32 CEST 2019 +#Wed Jul 03 01:01:04 CEST 2019 logoTexture=textures/gui/title/mojang.png background=0xFFFFFF font=0x0 diff --git a/logs/2019-07-02-1.log.gz b/logs/2019-07-02-1.log.gz Binary files differindex 1bf9c843e9..8928ce3f1c 100644 --- a/logs/2019-07-02-1.log.gz +++ b/logs/2019-07-02-1.log.gz diff --git a/logs/2019-07-02-2.log.gz b/logs/2019-07-02-2.log.gz Binary files differnew file mode 100644 index 0000000000..ef095d42e6 --- /dev/null +++ b/logs/2019-07-02-2.log.gz diff --git a/logs/2019-07-02-3.log.gz b/logs/2019-07-02-3.log.gz Binary files differnew file mode 100644 index 0000000000..cb3e9c7a68 --- /dev/null +++ b/logs/2019-07-02-3.log.gz diff --git a/logs/2019-07-02-4.log.gz b/logs/2019-07-02-4.log.gz Binary files differnew file mode 100644 index 0000000000..fc5981289a --- /dev/null +++ b/logs/2019-07-02-4.log.gz diff --git a/logs/2019-07-02-5.log.gz b/logs/2019-07-02-5.log.gz Binary files differnew file mode 100644 index 0000000000..a21f69cc95 --- /dev/null +++ b/logs/2019-07-02-5.log.gz diff --git a/logs/2019-07-02-6.log.gz b/logs/2019-07-02-6.log.gz Binary files differnew file mode 100644 index 0000000000..d9c4bcc3d6 --- /dev/null +++ b/logs/2019-07-02-6.log.gz diff --git a/logs/2019-07-02-7.log.gz b/logs/2019-07-02-7.log.gz Binary files differnew file mode 100644 index 0000000000..56ae143167 --- /dev/null +++ b/logs/2019-07-02-7.log.gz diff --git a/logs/2019-07-03-1.log.gz b/logs/2019-07-03-1.log.gz Binary files differnew file mode 100644 index 0000000000..7f3a41698f --- /dev/null +++ b/logs/2019-07-03-1.log.gz diff --git a/logs/2019-07-03-2.log.gz b/logs/2019-07-03-2.log.gz Binary files differnew file mode 100644 index 0000000000..5a3351fedb --- /dev/null +++ b/logs/2019-07-03-2.log.gz diff --git a/logs/2019-07-03-3.log.gz b/logs/2019-07-03-3.log.gz Binary files differnew file mode 100644 index 0000000000..4974647a59 --- /dev/null +++ b/logs/2019-07-03-3.log.gz diff --git a/saves/NEI/local/New World/NEI.dat b/saves/NEI/local/New World/NEI.dat Binary files differindex 23b37443e4..5a7f4f4071 100644 --- a/saves/NEI/local/New World/NEI.dat +++ b/saves/NEI/local/New World/NEI.dat diff --git a/saves/New World/DIM-1/data/villages.dat b/saves/New World/DIM-1/data/villages.dat Binary files differindex 0ba4f2cee3..a70feca8a2 100644 --- a/saves/New World/DIM-1/data/villages.dat +++ b/saves/New World/DIM-1/data/villages.dat diff --git a/saves/New World/DIM1/data/villages.dat b/saves/New World/DIM1/data/villages.dat Binary files differindex 0ba4f2cee3..a70feca8a2 100644 --- a/saves/New World/DIM1/data/villages.dat +++ b/saves/New World/DIM1/data/villages.dat diff --git a/saves/New World/data/villages.dat b/saves/New World/data/villages.dat Binary files differindex 0ba4f2cee3..a70feca8a2 100644 --- a/saves/New World/data/villages.dat +++ b/saves/New World/data/villages.dat diff --git a/saves/New World/level.dat b/saves/New World/level.dat Binary files differindex 6ab4b7fba3..9ac0243477 100644 --- a/saves/New World/level.dat +++ b/saves/New World/level.dat diff --git a/saves/New World/level.dat_old b/saves/New World/level.dat_old Binary files differindex 342e6d40fe..2d12e7d758 100644 --- a/saves/New World/level.dat_old +++ b/saves/New World/level.dat_old diff --git a/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat b/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat Binary files differindex a61914b7ba..996c19d2cc 100644 --- a/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat +++ b/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat diff --git a/saves/New World/region/r.0.-1.mca b/saves/New World/region/r.0.-1.mca Binary files differindex 528d4d3c9d..b512181dc6 100644 --- a/saves/New World/region/r.0.-1.mca +++ b/saves/New World/region/r.0.-1.mca diff --git a/saves/New World/region/r.0.0.mca b/saves/New World/region/r.0.0.mca Binary files differindex 36568aa9b2..e560c9ec2a 100644 --- a/saves/New World/region/r.0.0.mca +++ b/saves/New World/region/r.0.0.mca diff --git a/saves/New World/session.lock b/saves/New World/session.lock Binary files differindex 3d53a3c426..9a8ad958b9 100644 --- a/saves/New World/session.lock +++ b/saves/New World/session.lock diff --git a/saves/New World/stats/ddc68fe4-0789-360b-a837-3dcbb936da65.json b/saves/New World/stats/ddc68fe4-0789-360b-a837-3dcbb936da65.json index b2854fe622..ccdb959df0 100644 --- a/saves/New World/stats/ddc68fe4-0789-360b-a837-3dcbb936da65.json +++ b/saves/New World/stats/ddc68fe4-0789-360b-a837-3dcbb936da65.json @@ -1 +1 @@ -{"stat.flyOneCm":98449,"stat.walkOneCm":341502,"stat.jump":413,"stat.useItem.323":8,"stat.playOneMinute":640171,"achievement.openInventory":266,"stat.climbOneCm":2320,"stat.leaveGame":1,"stat.useItem.3":47,"achievement.exploreAllBiomes":{"value":0,"progress":["Swampland"]}}
\ No newline at end of file +{"stat.walkOneCm":435124,"achievement.openInventory":339,"stat.leaveGame":1,"stat.useItem.31":1,"stat.flyOneCm":262985,"stat.jump":596,"stat.useItem.95":229,"stat.useItem.323":8,"stat.playOneMinute":849081,"stat.climbOneCm":5173,"stat.useItem.3":47,"achievement.exploreAllBiomes":{"value":0,"progress":["Swampland"]}}
\ No newline at end of file diff --git a/src/main/java/blocks/Block_TFFTCasing.java b/src/main/java/blocks/Block_TFFTCasing.java new file mode 100644 index 0000000000..eb47860418 --- /dev/null +++ b/src/main/java/blocks/Block_TFFTCasing.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTCasing extends Block { + + private static Block_TFFTCasing instance = new Block_TFFTCasing(); + + private Block_TFFTCasing() { + // I am a singleton + super(Material.iron); + } + + public static Block_TFFTCasing getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_tfftcasing_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTCasing"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java new file mode 100644 index 0000000000..7e133a7134 --- /dev/null +++ b/src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTStorageFieldBlockT1 extends Block { + + private static Block_TFFTStorageFieldBlockT1 instance = new Block_TFFTStorageFieldBlockT1(); + + private Block_TFFTStorageFieldBlockT1() { + // I am a singleton + super(Material.iron); + } + + public static Block_TFFTStorageFieldBlockT1 getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_tfftstoragefieldblock1_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock1"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java new file mode 100644 index 0000000000..965e06dc54 --- /dev/null +++ b/src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTStorageFieldBlockT2 extends Block { + + private static Block_TFFTStorageFieldBlockT2 instance = new Block_TFFTStorageFieldBlockT2(); + + private Block_TFFTStorageFieldBlockT2() { + // I am a singleton + super(Material.iron); + } + + public static Block_TFFTStorageFieldBlockT2 getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_tfftstoragefieldblock2_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock2"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java new file mode 100644 index 0000000000..79647c99b7 --- /dev/null +++ b/src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTStorageFieldBlockT3 extends Block { + + private static Block_TFFTStorageFieldBlockT3 instance = new Block_TFFTStorageFieldBlockT3(); + + private Block_TFFTStorageFieldBlockT3() { + // I am a singleton + super(Material.iron); + } + + public static Block_TFFTStorageFieldBlockT3 getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_tfftstoragefieldblock3_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock3"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java b/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java new file mode 100644 index 0000000000..5dd20cabcf --- /dev/null +++ b/src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java @@ -0,0 +1,29 @@ +package blocks; + +import cpw.mods.fml.common.registry.GameRegistry; +import kekztech.KekzCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; + +public class Block_TFFTStorageFieldBlockT4 extends Block { + + private static Block_TFFTStorageFieldBlockT4 instance = new Block_TFFTStorageFieldBlockT4(); + + private Block_TFFTStorageFieldBlockT4() { + // I am a singleton + super(Material.iron); + } + + public static Block_TFFTStorageFieldBlockT4 getInstance() { + return instance; + } + + public void registerBlock() { + final String blockName = "kekztech_tfftstoragefieldblock4_block"; + super.setBlockName(blockName); + super.setCreativeTab(CreativeTabs.tabMisc); + super.setBlockTextureName(KekzCore.MODID + ":" + "TFFTStorageFieldBlock4"); + GameRegistry.registerBlock(getInstance(), blockName); + } +} diff --git a/src/main/java/kekztech/KekzCore.java b/src/main/java/kekztech/KekzCore.java index 59f7ab4df3..1bbd04eac8 100644 --- a/src/main/java/kekztech/KekzCore.java +++ b/src/main/java/kekztech/KekzCore.java @@ -1,6 +1,11 @@ package kekztech; import blocks.Block_GDCUnit; +import blocks.Block_TFFTCasing; +import blocks.Block_TFFTStorageFieldBlockT1; +import blocks.Block_TFFTStorageFieldBlockT2; +import blocks.Block_TFFTStorageFieldBlockT3; +import blocks.Block_TFFTStorageFieldBlockT4; import blocks.Block_YSZUnit; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.event.FMLInitializationEvent; @@ -18,6 +23,7 @@ import items.MetaItem_CraftingComponent; import items.MetaItem_ReactorComponent; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; +import tileentities.GTMTE_FluidMultiStorage; import tileentities.GTMTE_ModularNuclearReactor; import tileentities.GTMTE_SOFuelCellMK1; import tileentities.GTMTE_SOFuelCellMK2; @@ -36,6 +42,7 @@ public class KekzCore { private GTMTE_SOFuelCellMK1 sofc1; private GTMTE_SOFuelCellMK2 sofc2; private GTMTE_ModularNuclearReactor mdr; + private GTMTE_FluidMultiStorage fms; @Mod.Instance("kekztech") public static KekzCore instance; @@ -49,6 +56,11 @@ public class KekzCore { // Blocks Block_YSZUnit.getInstance().registerBlock(); Block_GDCUnit.getInstance().registerBlock(); + Block_TFFTCasing.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT1.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT2.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT3.getInstance().registerBlock(); + Block_TFFTStorageFieldBlockT4.getInstance().registerBlock(); } @Mod.EventHandler @@ -56,6 +68,7 @@ public class KekzCore { sofc1 = new GTMTE_SOFuelCellMK1(5000, "multimachine.fuelcellmk1", "Solid-Oxide Fuel Cell Mk I"); sofc2 = new GTMTE_SOFuelCellMK2(5001, "multimachine.fuelcellmk2", "Solid-Oxide Fuel Cell Mk II"); mdr = new GTMTE_ModularNuclearReactor(5002, "multimachine.nuclearreactor", "Nuclear Reactor"); + fms = new GTMTE_FluidMultiStorage(5003, "multimachine.tf_fluidtank", "T.F.F.T"); } diff --git a/src/main/java/tileentities/GTMTE_FluidMultiStorage.java b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java new file mode 100644 index 0000000000..de42b07f30 --- /dev/null +++ b/src/main/java/tileentities/GTMTE_FluidMultiStorage.java @@ -0,0 +1,369 @@ +package tileentities; + +import java.util.ArrayList; + +import blocks.Block_TFFTCasing; +import blocks.Block_TFFTStorageFieldBlockT1; +import blocks.Block_TFFTStorageFieldBlockT2; +import blocks.Block_TFFTStorageFieldBlockT3; +import blocks.Block_TFFTStorageFieldBlockT4; +import gregtech.api.enums.Textures.BlockIcons; +import gregtech.api.gui.GT_GUIContainer_MultiMachine; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; +import gregtech.api.objects.GT_RenderedTexture; +import net.minecraft.block.Block; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; +import util.Vector3i; +import util.Vector3ic; + +public class GTMTE_FluidMultiStorage extends GT_MetaTileEntity_MultiBlockBase { + + private final String glassNameAE2 = "tile.appliedenergistics2.BlockQuartzGlass"; + private final String glassNameStained = "tile.stainedGlass"; + private final Block CASING = Block_TFFTCasing.getInstance(); + private final Block STORAGE_FIELD1 = Block_TFFTStorageFieldBlockT1.getInstance(); + private final Block STORAGE_FIELD2 = Block_TFFTStorageFieldBlockT2.getInstance(); + private final Block STORAGE_FIELD3 = Block_TFFTStorageFieldBlockT3.getInstance(); + private final Block STORAGE_FIELD4 = Block_TFFTStorageFieldBlockT4.getInstance(); + private final int CASING_TEXTURE_ID = 176; + + private final ArrayList<FluidStack> fluidList = new ArrayList<>(); + private long totalFluidCapacity = 0; + + public GTMTE_FluidMultiStorage(int aID, String aName, String aNameRegional) { + super(aID, aName, aNameRegional); + + } + + public GTMTE_FluidMultiStorage(String aName) { + super(aName); + + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity var1) { + return new GTMTE_FluidMultiStorage(super.mName); + } + + @Override + public String[] getDescription() { + return new String[] { + "High-Tech fluid tank that can hold up to 25 different fluids", + "Fluid storage amount and running cost depends on the storage field blocks used", + "Different tiers can be combined freely", + "Tier I: 500,000L per block, 0.33EU/t cost", + "Tier II: 4,000,000L per block, 1EU/t cost", + "Tier III: 16,000,000L per block, 3EU/t", + "Tier IV: 64,000,000L per block, 9EU/t", + "------------------------------------------", + "Note on hatch locking:", + "Inserting an Integrated Circuit into to GUI slot", + "forces the T.F.F.T to only output the fluid with that number on all hatches.", + "It is thereby recommended to add Output Hatches one by one while cycling through the IC configurations.", + "The number of a stored fluid can be obtained through the Tricorder.", + "------------------------------------------", + "Dimensions: 5x9x5 (WxHxL)", + "Structure:", + " Controller: Top center", + " Energy Hatch: Any top or bottom casing", + " Inner 3x7x3 tube are Storage Field Blocks", + " Outer 5x7x5 glass shell is AE2 Quartz Glass or Vanilla Stained Glass", + " Maintenance Hatch: Any top or bottom casing", + " I/O Hatches: Instead of any casing or glass, have to touch storage field" + }; + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, + boolean aActive, boolean aRedstone) { + return aSide == aFacing + ? new ITexture[]{BlockIcons.casingTexturePages[1][48], + new GT_RenderedTexture(aActive + ? BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR_ACTIVE + : BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR)} + : new ITexture[]{BlockIcons.casingTexturePages[1][48]}; + } + + public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { + return new GT_GUIContainer_MultiMachine(aPlayerInventory, aBaseMetaTileEntity, this.getLocalName(), + "MultiblockDisplay.png"); + } + + @Override + public boolean isCorrectMachinePart(ItemStack var1) { + return true; + } + + @Override + public boolean checkRecipe(ItemStack guiSlotItem) { + // TODO Auto-generated method stub + if(guiSlotItem.getUnlocalizedName().equals("gt.integrated_circuit")) { + + } + + + super.mEUt = 0; + super.mEfficiency = 0; + return false; + } + + public Vector3ic rotateOffsetVector(Vector3ic forgeDirection, int x, int y, int z) { + final Vector3i offset = new Vector3i(); + + // either direction on z-axis + if(forgeDirection.x() == 0 && forgeDirection.z() == -1) { + offset.x = x; + offset.y = y; + offset.z = z; + } + if(forgeDirection.x() == 0 && forgeDirection.z() == 1) { + offset.x = -x; + offset.y = y; + offset.z = -z; + } + // either direction on x-axis + if(forgeDirection.x() == -1 && forgeDirection.z() == 0) { + offset.x = z; + offset.y = y; + offset.z = -x; + } + if(forgeDirection.x() == 1 && forgeDirection.z() == 0) { + offset.x = -z; + offset.y = y; + offset.z = x; + } + // either direction on y-axis + if(forgeDirection.y() == -1) { + offset.x = x; + offset.y = z; + offset.z = y; + } + + return offset; + } + + @Override + public boolean checkMachine(IGregTechTileEntity thisController, ItemStack guiSlotItem) { + // Figure out the vector for the direction the back face of the controller is facing + final Vector3ic forgeDirection = new Vector3i( + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetX, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetY, + ForgeDirection.getOrientation(thisController.getBackFacing()).offsetZ + ); + int minCasingAmount = 20; + boolean formationChecklist = true; // if this is still true at the end, machine is good to go :) + float runningCost = 0; + + // Front slice + for(int X = -2; X <= 2; X++) { + for(int Y = -2; Y <= 2; Y++) { + if(X == 0 && Y == 0) { + continue; // is controller + } + + // Get next TE + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, 0); + IGregTechTileEntity currentTE = + thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); + + // Fluid hatches should touch the storage field. + // Maintenance/Energy hatch can go anywhere + if(X > -2 && X < 2 && Y > -2 && Y < 2) { + if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } else { + if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } + } + } + + // Middle three slices + for(int X = -2; X <= 2; X++) { + for(int Y = -2; Y <= 2; Y++) { + for(int Z = -1; Z >= -7; Z--) { + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, Z); + if(X > -2 && X < 2 && Y > -2 && Y < 2) { + if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName() + .equals(STORAGE_FIELD1.getUnlocalizedName())) { + runningCost += 0.33f; + totalFluidCapacity += 500000; + } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName() + .equals(STORAGE_FIELD2.getUnlocalizedName())) { + runningCost += 1.0f; + totalFluidCapacity += 4000000; + } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName() + .equals(STORAGE_FIELD3.getUnlocalizedName())) { + runningCost += 3.0f; + totalFluidCapacity += 16000000; + } else if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName() + .equals(STORAGE_FIELD4.getUnlocalizedName())) { + runningCost += 9.0f; + totalFluidCapacity += 64000000; + } else { + formationChecklist = false; + } + continue; + } + + // Get next TE + IGregTechTileEntity currentTE = + thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z());// x, y ,z + + // Corner allows only glass or casings + if(X == -2 && Y == -2 || X == 2 && Y == 2 || X == -2 && Y == 2 || X == 2 && Y == -2) { + if(!(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameAE2) + || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameStained) + || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING)) { + formationChecklist = false; // do nothing yet + } + } else { + // Tries to add TE as either of those kinds of hatches. + // The number is the texture index number for the texture that needs to be painted over the hatch texture (TAE for GT++) + if ( !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameAE2) + || thisController.getBlockOffset(offset.x(), offset.y(), offset.z()).getUnlocalizedName().equals(glassNameStained)) { + // do nothing lol + } else { + formationChecklist = false; + } + } + } + } + } + } + + // Front slice + for(int X = -2; X <= 2; X++) { + for(int Y = -2; Y <= 2; Y++) { + // Get next TE + final Vector3ic offset = rotateOffsetVector(forgeDirection, X, Y, -8); + IGregTechTileEntity currentTE = + thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); + + // Fluid hatches should touch the storage field. + // Maintenance/Energy hatch can go anywhere + if(X > -2 && X < 2 && Y > -2 && Y < 2) { + if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addOutputToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } else { + if (!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) + && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { + + // If it's not a hatch, is it the right casing for this machine? Check block and block meta. + if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) { + // Seems to be valid casing. Decrement counter. + minCasingAmount--; + } else { + formationChecklist = false; + } + } + } + } + } + + if(this.mEnergyHatches.size() < 1) { + System.out.println("At least one energy hatch is required!"); + formationChecklist = false; + } + + if(this.mMaintenanceHatches.size() < 1) { + System.out.println("You need a maintenance hatch to do maintenance."); + } + + if(minCasingAmount > 0) { + formationChecklist = false; + } + + if(formationChecklist) { + super.mEUt = (int) Math.round(-runningCost); + super.mEfficiency = 10000; + } else { + super.mEUt = 0; + super.mEfficiency = 0; + } + + return formationChecklist; + } + + public String[] getInfoData() { + final String[] lines = new String[fluidList.size() + 5]; + lines[0] = "Stored Fluids:"; + for(int i = 1; i < lines.length - 5; i++) { + lines[i] = (i - 1) + " - " + fluidList.get(i - 1).getLocalizedName() + ": " + fluidList.get(i - 1).amount; + } + lines[fluidList.size() + 1] = "Operation Data:"; + lines[fluidList.size() + 2] = "Used Capacity: " + 0; + lines[fluidList.size() + 3] = "Total Capacity: " + totalFluidCapacity; + lines[fluidList.size() + 4] = "Running Cost: " + super.mEUt; + lines[fluidList.size() + 5] = "Maintenance Status: " + ((super.getRepairStatus() == 0) ? "Working perfectly" : "Has Problems"); + return lines; + } + + public boolean isGivingInformation() { + return true; + } + + @Override + public int getMaxEfficiency(ItemStack var1) { + return 10000; + } + + @Override + public int getPollutionPerTick(ItemStack var1) { + return 0; + } + + @Override + public int getDamageToComponent(ItemStack var1) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack var1) { + return false; + } +} diff --git a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java index e775f7bbfb..8ed2b7d67a 100644 --- a/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java +++ b/src/main/java/tileentities/GTMTE_ModularNuclearReactor.java @@ -160,6 +160,10 @@ public class GTMTE_ModularNuclearReactor extends GT_MetaTileEntity_MultiBlockBas } } + if(this.mMaintenanceHatches.size() < 1) { + System.out.println("You need a maintenance hatch to do maintenance."); + } + return checklist; } diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java b/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java index 74e95d2933..45a86c992a 100644 --- a/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java +++ b/src/main/java/tileentities/GTMTE_SOFuelCellMK1.java @@ -67,7 +67,7 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { " 3x YSZ Ceramic Electrolyte Unit: Center 1x1x3", " 12x Clean Stainless Steel Machine Casing (at least)", " 6x Reinforced Glass: Touching the Electrolyte Units on the horizontal sides", - " Maintenance Hatch, Input Hatches, Output Hatches: Instead of any casing" + " Maintenance Hatch, I/O Hatches: Instead of any casing" }; } @@ -298,6 +298,10 @@ public class GTMTE_SOFuelCellMK1 extends GT_MetaTileEntity_MultiBlockBase { formationChecklist = false; } + if(this.mMaintenanceHatches.size() < 1) { + System.out.println("You need a maintenance hatch to do maintenance."); + } + return formationChecklist; } diff --git a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java b/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java index 1b1c36a124..9b8c9ca7b3 100644 --- a/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java +++ b/src/main/java/tileentities/GTMTE_SOFuelCellMK2.java @@ -62,11 +62,12 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { "------------------------------------------", "Dimensions: 3x3x5 (WxHxL)", "Structure:", - " 3x GDC Ceramic Electrolyte Unit (center 1x1x3)", - " 12x Robust Tungstensteel Machine Casing (at least)", " Controller front center", " Dynamo Hatch back center", - " Maintenance Hatch, Input Hatches, Output Hatches" + " 3x GDC Ceramic Electrolyte Unit (center 1x1x3)", + " 12x Robust Tungstensteel Machine Casing (at least)", + " 6x Reinforced Glass: Touching the Electrolyte Units on the horizontal sides", + " Maintenance Hatch, I/O Hatches: Instead of any casing" }; } @@ -297,6 +298,10 @@ public class GTMTE_SOFuelCellMK2 extends GT_MetaTileEntity_MultiBlockBase { formationChecklist = false; } + if(this.mMaintenanceHatches.size() < 1) { + System.out.println("You need a maintenance hatch to do maintenance."); + } + return formationChecklist; } diff --git a/src/main/resources/assets/kekztech/lang/en_US.lang b/src/main/resources/assets/kekztech/lang/en_US.lang index 3a7e5002d8..8a24d06bf3 100644 --- a/src/main/resources/assets/kekztech/lang/en_US.lang +++ b/src/main/resources/assets/kekztech/lang/en_US.lang @@ -75,3 +75,8 @@ item.kekztech_crafting_item.15.name=GDC Ceramic Plate tile.kekztech_gdcceramicelectrolyteunit_block.name=GDC Ceramic Electrolyte Unit tile.kekztech_yszceramicelectrolyteunit_block.name=YSZ Ceramic Electrolyte Unit + +tile.kekztech_tfftstoragefieldblock1_block.name=T.F.F.T Storage Field Block (Tier I) +tile.kekztech_tfftstoragefieldblock2_block.name=T.F.F.T Storage Field Block (Tier II) +tile.kekztech_tfftstoragefieldblock3_block.name=T.F.F.T Storage Field Block (Tier III) +tile.kekztech_tfftstoragefieldblock4_block.name=T.F.F.T Storage Field Block (Tier IV) diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTCasing.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTCasing.png Binary files differnew file mode 100644 index 0000000000..dba2574939 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTCasing.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png Binary files differnew file mode 100644 index 0000000000..f1abeacd4b --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png Binary files differnew file mode 100644 index 0000000000..cb5b27bc1d --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png Binary files differnew file mode 100644 index 0000000000..30185da496 --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png Binary files differnew file mode 100644 index 0000000000..638223af9b --- /dev/null +++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png |
