aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GregTech.lang23
-rw-r--r--config/IC2.ini2
-rw-r--r--config/splash.properties2
-rw-r--r--logs/2019-07-02-1.log.gzbin553 -> 777 bytes
-rw-r--r--logs/2019-07-02-2.log.gzbin0 -> 768 bytes
-rw-r--r--logs/2019-07-02-3.log.gzbin0 -> 676 bytes
-rw-r--r--logs/2019-07-02-4.log.gzbin0 -> 750 bytes
-rw-r--r--logs/2019-07-02-5.log.gzbin0 -> 814 bytes
-rw-r--r--logs/2019-07-02-6.log.gzbin0 -> 1012 bytes
-rw-r--r--logs/2019-07-02-7.log.gzbin0 -> 1078 bytes
-rw-r--r--logs/2019-07-03-1.log.gzbin0 -> 194 bytes
-rw-r--r--logs/2019-07-03-2.log.gzbin0 -> 976 bytes
-rw-r--r--logs/2019-07-03-3.log.gzbin0 -> 956 bytes
-rw-r--r--saves/NEI/local/New World/NEI.datbin90 -> 86 bytes
-rw-r--r--saves/New World/DIM-1/data/villages.datbin56 -> 56 bytes
-rw-r--r--saves/New World/DIM1/data/villages.datbin56 -> 56 bytes
-rw-r--r--saves/New World/data/villages.datbin56 -> 56 bytes
-rw-r--r--saves/New World/level.datbin14596 -> 14744 bytes
-rw-r--r--saves/New World/level.dat_oldbin14606 -> 14744 bytes
-rw-r--r--saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.datbin835 -> 858 bytes
-rw-r--r--saves/New World/region/r.0.-1.mcabin1671168 -> 1691648 bytes
-rw-r--r--saves/New World/region/r.0.0.mcabin2461696 -> 2461696 bytes
-rw-r--r--saves/New World/session.lockbin8 -> 8 bytes
-rw-r--r--saves/New World/stats/ddc68fe4-0789-360b-a837-3dcbb936da65.json2
-rw-r--r--src/main/java/blocks/Block_TFFTCasing.java29
-rw-r--r--src/main/java/blocks/Block_TFFTStorageFieldBlockT1.java29
-rw-r--r--src/main/java/blocks/Block_TFFTStorageFieldBlockT2.java29
-rw-r--r--src/main/java/blocks/Block_TFFTStorageFieldBlockT3.java29
-rw-r--r--src/main/java/blocks/Block_TFFTStorageFieldBlockT4.java29
-rw-r--r--src/main/java/kekztech/KekzCore.java13
-rw-r--r--src/main/java/tileentities/GTMTE_FluidMultiStorage.java369
-rw-r--r--src/main/java/tileentities/GTMTE_ModularNuclearReactor.java4
-rw-r--r--src/main/java/tileentities/GTMTE_SOFuelCellMK1.java6
-rw-r--r--src/main/java/tileentities/GTMTE_SOFuelCellMK2.java11
-rw-r--r--src/main/resources/assets/kekztech/lang/en_US.lang5
-rw-r--r--src/main/resources/assets/kekztech/textures/blocks/TFFTCasing.pngbin0 -> 601 bytes
-rw-r--r--src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.pngbin0 -> 1036 bytes
-rw-r--r--src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.pngbin0 -> 1037 bytes
-rw-r--r--src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.pngbin0 -> 1038 bytes
-rw-r--r--src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.pngbin0 -> 1340 bytes
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
index 1bf9c843e9..8928ce3f1c 100644
--- a/logs/2019-07-02-1.log.gz
+++ b/logs/2019-07-02-1.log.gz
Binary files differ
diff --git a/logs/2019-07-02-2.log.gz b/logs/2019-07-02-2.log.gz
new file mode 100644
index 0000000000..ef095d42e6
--- /dev/null
+++ b/logs/2019-07-02-2.log.gz
Binary files differ
diff --git a/logs/2019-07-02-3.log.gz b/logs/2019-07-02-3.log.gz
new file mode 100644
index 0000000000..cb3e9c7a68
--- /dev/null
+++ b/logs/2019-07-02-3.log.gz
Binary files differ
diff --git a/logs/2019-07-02-4.log.gz b/logs/2019-07-02-4.log.gz
new file mode 100644
index 0000000000..fc5981289a
--- /dev/null
+++ b/logs/2019-07-02-4.log.gz
Binary files differ
diff --git a/logs/2019-07-02-5.log.gz b/logs/2019-07-02-5.log.gz
new file mode 100644
index 0000000000..a21f69cc95
--- /dev/null
+++ b/logs/2019-07-02-5.log.gz
Binary files differ
diff --git a/logs/2019-07-02-6.log.gz b/logs/2019-07-02-6.log.gz
new file mode 100644
index 0000000000..d9c4bcc3d6
--- /dev/null
+++ b/logs/2019-07-02-6.log.gz
Binary files differ
diff --git a/logs/2019-07-02-7.log.gz b/logs/2019-07-02-7.log.gz
new file mode 100644
index 0000000000..56ae143167
--- /dev/null
+++ b/logs/2019-07-02-7.log.gz
Binary files differ
diff --git a/logs/2019-07-03-1.log.gz b/logs/2019-07-03-1.log.gz
new file mode 100644
index 0000000000..7f3a41698f
--- /dev/null
+++ b/logs/2019-07-03-1.log.gz
Binary files differ
diff --git a/logs/2019-07-03-2.log.gz b/logs/2019-07-03-2.log.gz
new file mode 100644
index 0000000000..5a3351fedb
--- /dev/null
+++ b/logs/2019-07-03-2.log.gz
Binary files differ
diff --git a/logs/2019-07-03-3.log.gz b/logs/2019-07-03-3.log.gz
new file mode 100644
index 0000000000..4974647a59
--- /dev/null
+++ b/logs/2019-07-03-3.log.gz
Binary files differ
diff --git a/saves/NEI/local/New World/NEI.dat b/saves/NEI/local/New World/NEI.dat
index 23b37443e4..5a7f4f4071 100644
--- a/saves/NEI/local/New World/NEI.dat
+++ b/saves/NEI/local/New World/NEI.dat
Binary files differ
diff --git a/saves/New World/DIM-1/data/villages.dat b/saves/New World/DIM-1/data/villages.dat
index 0ba4f2cee3..a70feca8a2 100644
--- a/saves/New World/DIM-1/data/villages.dat
+++ b/saves/New World/DIM-1/data/villages.dat
Binary files differ
diff --git a/saves/New World/DIM1/data/villages.dat b/saves/New World/DIM1/data/villages.dat
index 0ba4f2cee3..a70feca8a2 100644
--- a/saves/New World/DIM1/data/villages.dat
+++ b/saves/New World/DIM1/data/villages.dat
Binary files differ
diff --git a/saves/New World/data/villages.dat b/saves/New World/data/villages.dat
index 0ba4f2cee3..a70feca8a2 100644
--- a/saves/New World/data/villages.dat
+++ b/saves/New World/data/villages.dat
Binary files differ
diff --git a/saves/New World/level.dat b/saves/New World/level.dat
index 6ab4b7fba3..9ac0243477 100644
--- a/saves/New World/level.dat
+++ b/saves/New World/level.dat
Binary files differ
diff --git a/saves/New World/level.dat_old b/saves/New World/level.dat_old
index 342e6d40fe..2d12e7d758 100644
--- a/saves/New World/level.dat_old
+++ b/saves/New World/level.dat_old
Binary files differ
diff --git a/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat b/saves/New World/playerdata/ddc68fe4-0789-360b-a837-3dcbb936da65.dat
index 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
Binary files differ
diff --git a/saves/New World/region/r.0.-1.mca b/saves/New World/region/r.0.-1.mca
index 528d4d3c9d..b512181dc6 100644
--- a/saves/New World/region/r.0.-1.mca
+++ b/saves/New World/region/r.0.-1.mca
Binary files differ
diff --git a/saves/New World/region/r.0.0.mca b/saves/New World/region/r.0.0.mca
index 36568aa9b2..e560c9ec2a 100644
--- a/saves/New World/region/r.0.0.mca
+++ b/saves/New World/region/r.0.0.mca
Binary files differ
diff --git a/saves/New World/session.lock b/saves/New World/session.lock
index 3d53a3c426..9a8ad958b9 100644
--- a/saves/New World/session.lock
+++ b/saves/New World/session.lock
Binary files differ
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
new file mode 100644
index 0000000000..dba2574939
--- /dev/null
+++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTCasing.png
Binary files differ
diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png
new file mode 100644
index 0000000000..f1abeacd4b
--- /dev/null
+++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock1.png
Binary files differ
diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png
new file mode 100644
index 0000000000..cb5b27bc1d
--- /dev/null
+++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock2.png
Binary files differ
diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png
new file mode 100644
index 0000000000..30185da496
--- /dev/null
+++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock3.png
Binary files differ
diff --git a/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png
new file mode 100644
index 0000000000..638223af9b
--- /dev/null
+++ b/src/main/resources/assets/kekztech/textures/blocks/TFFTStorageFieldBlock4.png
Binary files differ