aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlkalus <Draknyte1@hotmail.com>2020-04-04 16:57:56 +0100
committerAlkalus <Draknyte1@hotmail.com>2020-04-04 16:57:56 +0100
commitacf7193504fba4a7165d2ba5732cc9ce5f35ec55 (patch)
tree1fb97da489c70c4cc7f134fe5b5aeef2b944979a
parent35f473d3f79d3b4f30e2cd02885a6e685d66fb45 (diff)
downloadGT5-Unofficial-acf7193504fba4a7165d2ba5732cc9ce5f35ec55.tar.gz
GT5-Unofficial-acf7193504fba4a7165d2ba5732cc9ce5f35ec55.tar.bz2
GT5-Unofficial-acf7193504fba4a7165d2ba5732cc9ce5f35ec55.zip
+ Added a new base bus type.
+ Added the Ball Housing bus. + Added the Catalyst Housing bus. + Added the Reinforced Engine Casing. + Made the Flotation Cell Regulator actually load. $ Fixed Tooltips on Milling Balls & Catalysts. $ Added improved item handling for Milling Balls. $ Added improved item handling for Catalysts.
-rw-r--r--src/Java/gregtech/api/util/Recipe_GT.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java1
-rw-r--r--src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java191
-rw-r--r--src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java9
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java15
-rw-r--r--src/Java/gtPlusPlus/plugin/agrichem/item/algae/ItemAgrichemBase.java101
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java14
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_HatchNbtConsumable.java282
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/GUI_HatchNbtConsumable.java59
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/nbthandlers/GT_MetaTileEntity_Hatch_Catalysts.java63
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/nbthandlers/GT_MetaTileEntity_Hatch_MillingBalls.java63
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/nbthandlers/GT_MetaTileEntity_Hatch_NbtConsumable.java273
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/GregtechMetaSpecialMultiCasings.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java289
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/GregtechMTE_FrothFlotationPond.java23
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/chemplant/GregtechMTE_ChemicalPlant.java138
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechAlgaeContent.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechIsaMill.java11
-rw-r--r--src/resources/assets/gregtech/textures/gui/HatchNbtConsumable_2By2.pngbin0 -> 1642 bytes
-rw-r--r--src/resources/assets/gregtech/textures/gui/HatchNbtConsumable_3By3.pngbin0 -> 1664 bytes
-rw-r--r--src/resources/assets/gregtech/textures/gui/HatchNbtConsumable_4By4.pngbin0 -> 1689 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/OVERLAY_CATALYSTS.pngbin0 -> 1371 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/OVERLAY_CATALYSTS.png.mcmeta5
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/OVERLAY_MILLING_BALL_BUS.pngbin0 -> 1652 bytes
-rw-r--r--src/resources/assets/miscutils/textures/blocks/iconsets/OVERLAY_MILLING_BALL_BUS.png.mcmeta5
26 files changed, 1448 insertions, 114 deletions
diff --git a/src/Java/gregtech/api/util/Recipe_GT.java b/src/Java/gregtech/api/util/Recipe_GT.java
index 3ddb25e754..14e391316c 100644
--- a/src/Java/gregtech/api/util/Recipe_GT.java
+++ b/src/Java/gregtech/api/util/Recipe_GT.java
@@ -258,7 +258,7 @@ public class Recipe_GT extends GT_Recipe implements IComparableRecipe{
public static final GT_Recipe_Map sLiquidFluorineThoriumReactorRecipesEx = new GT_Recipe_Map(new NoConflictGTRecipeMap(), "gt.recipe.lftr.2", "Liquid Fluoride Thorium Reactor", null, RES_PATH_GUI + "basicmachines/LFTR", 0, 0, 0, 2, 1, "Start: ", 1, " EU", true, true);
// Ore Milling Map
- public static final GT_Recipe_Map sOreMillRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(10000), "gt.recipe.oremill", "Milling", null, RES_PATH_GUI + "basicmachines/LFTR", 3, 4, 1, 0, 1, E, 1, E, true, true);
+ public static final GT_Recipe_Map sOreMillRecipes = new GT_Recipe_Map(new HashSet<GT_Recipe>(10000), "gt.recipe.oremill", "Milling", null, RES_PATH_GUI + "basicmachines/LFTR", 3, 4, 1, 0, 1, E, 1, E, true, false);
//Fission Fuel Plant Recipes
//public static final GT_Recipe_Map sFissionFuelProcessing = new GT_Recipe_Map(new HashSet<GT_Recipe>(50), "gt.recipe.fissionfuel", "Fission Fuel Processing", null, RES_PATH_GUI + "basicmachines/LFTR", 0, 0, 0, 9, 1, E, 1, E, true, true);
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java b/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
index 86ffe49eed..3583ddca3f 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/MilledOreProcessing.java
@@ -1,6 +1,5 @@
package gtPlusPlus.core.item.chemistry;
-import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
diff --git a/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java b/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
index 0863faa38d..ed17f8547a 100644
--- a/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
+++ b/src/Java/gtPlusPlus/core/item/chemistry/general/ItemGenericChemBase.java
@@ -3,6 +3,8 @@ package gtPlusPlus.core.item.chemistry.general;
import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.core.item.chemistry.GenericChem;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -12,6 +14,8 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
@@ -48,6 +52,14 @@ public class ItemGenericChemBase extends Item {
}
@Override
+ public int getItemStackLimit(ItemStack stack) {
+ if (ItemUtils.isMillingBall(stack)) {
+ return 16;
+ }
+ return super.getItemStackLimit(stack);
+ }
+
+ @Override
public boolean isDamageable() {
return false;
}
@@ -68,17 +80,6 @@ public class ItemGenericChemBase extends Item {
}
@Override
- public void addInformation(ItemStack aStack, EntityPlayer p_77624_2_, List aList, boolean p_77624_4_) {
- try {
-
- }
- catch (Throwable t) {
- t.printStackTrace();
- }
- super.addInformation(aStack, p_77624_2_, aList, p_77624_4_);
- }
-
- @Override
public EnumRarity getRarity(ItemStack p_77613_1_) {
return EnumRarity.common;
}
@@ -116,11 +117,6 @@ public class ItemGenericChemBase extends Item {
}
@Override
- public boolean showDurabilityBar(ItemStack stack) {
- return false;
- }
-
- @Override
public int getItemEnchantability() {
return 0;
}
@@ -165,4 +161,167 @@ public class ItemGenericChemBase extends Item {
}
+
+ @Override
+ public double getDurabilityForDisplay(ItemStack aStack) {
+ if (ItemUtils.isMillingBall(aStack)) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()){
+ createMillingBallNBT(aStack);
+ }
+ double currentDamage = getMillingBallDamage(aStack);
+ double durabilitypercent = currentDamage / 100;
+ return durabilitypercent;
+ }
+ else if (ItemUtils.isCatalyst(aStack)) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()){
+ createCatalystNBT(aStack);
+ }
+ double currentDamage = getCatalystDamage(aStack);
+ double durabilitypercent = currentDamage / 100;
+ return durabilitypercent;
+ }
+ else {
+ return 1D;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer player, List list, boolean bool) {
+ boolean aHasSpecialTooltips = false;
+ int aMaxDamage = 0;
+ int aDamageSegment = 0;
+ int aDam = 0;
+ EnumChatFormatting durability = EnumChatFormatting.GRAY;
+ if (ItemUtils.isMillingBall(aStack)) {
+ list.add(EnumChatFormatting.GRAY+"Tumble Tumble Tumble");
+ aMaxDamage = getMillingBallMaxDamage(aStack);
+ aDamageSegment = aMaxDamage / 5;
+ aDam = aMaxDamage-getMillingBallDamage(aStack);
+ aHasSpecialTooltips = true;
+ }
+ if (ItemUtils.isCatalyst(aStack)) {
+ list.add(EnumChatFormatting.GRAY+"Active Reaction Agent");
+ aMaxDamage = getCatalystMaxDamage(aStack);
+ aDamageSegment = aMaxDamage / 5;
+ aDam = aMaxDamage-getCatalystDamage(aStack);
+ aHasSpecialTooltips = true;
+ }
+ if (aHasSpecialTooltips) {
+ if (aDam > aDamageSegment * 4){
+ durability = EnumChatFormatting.GRAY;
+ }
+ else if (aDam > aDamageSegment * 3){
+ durability = EnumChatFormatting.GREEN;
+ }
+ else if (aDam > aDamageSegment * 2){
+ durability = EnumChatFormatting.YELLOW;
+ }
+ else if (aDam > aDamageSegment){
+ durability = EnumChatFormatting.GOLD;
+ }
+ else if (aDam > 0){
+ durability = EnumChatFormatting.RED;
+ }
+ list.add(durability+""+(aDam)+EnumChatFormatting.GRAY+" / "+aMaxDamage);
+ }
+ super.addInformation(aStack, player, list, bool);
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack aStack) {
+ if (ItemUtils.isMillingBall(aStack)) {
+ int aDam = getMillingBallDamage(aStack);
+ if (aDam > 0) {
+ return true;
+ }
+ }
+ else if (ItemUtils.isCatalyst(aStack)) {
+ int aDam = getCatalystDamage(aStack);
+ if (aDam > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean createMillingBallNBT(ItemStack rStack){
+ final NBTTagCompound tagMain = new NBTTagCompound();
+ final NBTTagCompound tagNBT = new NBTTagCompound();
+ tagNBT.setLong("Damage", 0);
+ tagNBT.setLong("MaxDamage", getMaxBallDurability(rStack));
+ tagMain.setTag("MillingBall", tagNBT);
+ rStack.setTagCompound(tagMain);
+ return true;
+ }
+
+ public static int getMillingBallDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createMillingBallNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("MillingBall").getInteger("Damage");
+ }
+
+ public static int getMillingBallMaxDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createMillingBallNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("MillingBall").getInteger("MaxDamage");
+ }
+
+ public static void setMillingBallDamage(ItemStack aStack,int aAmount) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ aNBT = aNBT.getCompoundTag("MillingBall");
+ aNBT.setInteger("Damage", aAmount);
+ }
+
+ public static int getMaxBallDurability(ItemStack aStack) {
+ if (GT_Utility.areStacksEqual(aStack, GenericChem.mMillingBallAlumina, true)) {
+ return 100;
+ }
+ if (GT_Utility.areStacksEqual(aStack, GenericChem.mMillingBallSoapstone, true)) {
+ return 50;
+ }
+ return 0;
+ }
+
+ public static boolean createCatalystNBT(ItemStack rStack){
+ final NBTTagCompound tagMain = new NBTTagCompound();
+ final NBTTagCompound tagNBT = new NBTTagCompound();
+ tagNBT.setLong("Damage", 0);
+ tagNBT.setLong("MaxDamage", getMaxCatalystDurability(rStack));
+ tagMain.setTag("catalyst", tagNBT);
+ rStack.setTagCompound(tagMain);
+ return true;
+ }
+
+ public static int getCatalystDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createCatalystNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("catalyst").getInteger("Damage");
+ }
+
+ public static int getCatalystMaxDamage(ItemStack aStack) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()) {
+ createCatalystNBT(aStack);
+ }
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ return aNBT.getCompoundTag("catalyst").getInteger("MaxDamage");
+ }
+
+ public static void setCatalystDamage(ItemStack aStack,int aAmount) {
+ NBTTagCompound aNBT = aStack.getTagCompound();
+ aNBT = aNBT.getCompoundTag("catalyst");
+ aNBT.setInteger("Damage", aAmount);
+ }
+
+ public static int getMaxCatalystDurability(ItemStack aStack) {
+ return 50;
+ }
+
+
}
diff --git a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
index 3e536ec8d0..3cb2d4cec3 100644
--- a/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
+++ b/src/Java/gtPlusPlus/core/util/minecraft/ItemUtils.java
@@ -1243,10 +1243,11 @@ public class ItemUtils {
public static ItemStack depleteStack(ItemStack aStack, int aAmount) {
final int cap = aStack.stackSize;
- if (cap > 1 && cap > aAmount) {
- aStack.stackSize = (MathUtils.balance((aStack.stackSize - 1), 0, 64));
- if (aStack.stackSize > 0) {
- return aStack;
+ if (cap >= 1 && cap >= aAmount) {
+ ItemStack aDepStack = aStack.copy();
+ aDepStack.stackSize = (MathUtils.balance((aDepStack.stackSize - 1), 0, 64));
+ if (aDepStack.stackSize > 0) {
+ return aDepStack;
}
}
return getNullStack();
diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
index e45d27b926..59d20835ae 100644
--- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
+++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
@@ -22,6 +22,7 @@ import com.google.common.reflect.ClassPath;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.data.StringUtils;
+import gtPlusPlus.xmod.gregtech.common.StaticFields59;
public class ReflectionUtils {
@@ -1035,5 +1036,19 @@ public class ReflectionUtils {
return null;
}
+ public static <T> T createNewInstanceFromConstructor(Constructor aConstructor, Object[] aArgs) {
+ T aInstance;
+ try {
+ aInstance = (T) aConstructor.newInstance(aArgs);
+ if (aInstance != null) {
+ return aInstance;
+ }
+ }
+ catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
}
diff --git a/src/Java/gtPlusPlus/plugin/agrichem/item/algae/ItemAgrichemBase.java b/src/Java/gtPlusPlus/plugin/agrichem/item/algae/ItemAgrichemBase.java
index 48aae5521a..c3c51983e3 100644
--- a/src/Java/gtPlusPlus/plugin/agrichem/item/algae/ItemAgrichemBase.java
+++ b/src/Java/gtPlusPlus/plugin/agrichem/item/algae/ItemAgrichemBase.java
@@ -5,6 +5,7 @@ import java.lang.reflect.InvocationTargetException;
import java.util.List;
import cpw.mods.fml.common.registry.GameRegistry;
+import gtPlusPlus.core.item.chemistry.general.ItemGenericChemBase;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.OreDictUtils;
@@ -17,6 +18,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
@@ -85,17 +87,6 @@ public class ItemAgrichemBase extends Item {
}
@Override
- public void addInformation(ItemStack aStack, EntityPlayer p_77624_2_, List aList, boolean p_77624_4_) {
- try {
-
- }
- catch (Throwable t) {
- t.printStackTrace();
- }
- super.addInformation(aStack, p_77624_2_, aList, p_77624_4_);
- }
-
- @Override
public EnumRarity getRarity(ItemStack p_77613_1_) {
return EnumRarity.common;
}
@@ -171,11 +162,6 @@ public class ItemAgrichemBase extends Item {
}
@Override
- public boolean showDurabilityBar(ItemStack stack) {
- return false;
- }
-
- @Override
public int getItemEnchantability() {
return 0;
}
@@ -246,4 +232,87 @@ public class ItemAgrichemBase extends Item {
}
+
+ @Override
+ public double getDurabilityForDisplay(ItemStack aStack) {
+ if (ItemUtils.isCatalyst(aStack)) {
+ if (aStack.getTagCompound() == null || aStack.getTagCompound().hasNoTags()){
+ createCatalystNBT(aStack);
+ }
+ double currentDamage = getCatalystDamage(aStack);
+ double durabilitypercent = currentDamage / 100;
+ return durabilitypercent;
+ }
+ else {
+ return 1D;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void addInformation(ItemStack aStack, EntityPlayer player, List list, boolean bool) {
+ boolean aHasSpecialTooltips = false;
+ int aMaxDamage = 0;
+ int aDamageSegment = 0;
+ int aDam = 0;
+ EnumChatFormatting durability = EnumChatFormatting.GRAY;
+ if (ItemUtils.isCatalyst(aStack)) {
+ list.add(EnumChatFormatting.GRAY+"Active Reaction Agent");
+ aMaxDamage = getCatalystMaxDamage(aStack);
+ aDamageSegment = aMaxDamage / 5;
+ aDam = aMaxDamage-getCatalystDamage(aStack);
+ aHasSpecialTooltips = true;
+ }
+ if (aHasSpecialTooltips) {
+ if (aDam > aDamageSegment * 4){
+ durability = EnumChatFormatting.GRAY;
+ }
+ else if (aDam > aDamageSegment * 3){
+ durability = EnumChatFormatting.GREEN;
+ }
+ else if (aDam > aDamageSegment * 2){
+ durability = EnumChatFormatting.YELLOW;
+ }
+ else if (aDam > aDamageSegment){
+ durability = EnumChatFormatting.GOLD;
+ }
+ else if (aDam > 0){
+ durability = EnumChatFormatting.RED;
+ }
+ list.add(durability+""+(aDam)+EnumChatFormatting.GRAY+" / "+aMaxDamage);
+ }
+ super.addInformation(aStack, player, list, bool);
+ }
+
+ @Override
+ public boolean showDurabilityBar(ItemStack aStack) {
+ if (ItemUtils.isCatalyst(aStack)) {
+ int aDam = getCatalystDamage(aStack);
+ if (aDam > 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static boolean createCatalystNBT(ItemStack rStack){
+ return ItemGenericChemBase.createCatalystNBT(rStack);
+ }
+
+ public static int getCatalystDamage(ItemStack aStack) {
+ return ItemGenericChemBase.getCatalystDamage(aStack);
+ }
+
+ public static int getCatalystMaxDamage(ItemStack aStack) {
+ return ItemGenericChemBase.getCatalystMaxDamage(aStack);
+ }
+
+ public static void setCatalystDamage(ItemStack aStack,int aAmount) {
+ ItemGenericChemBase.setCatalystDamage(aStack, aAmount);
+ }
+
+ public static int getMaxCatalystDurability(ItemStack aStack) {
+ return ItemGenericChemBase.getMaxCatalystDurability(aStack);
+ }
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index 504533c406..173b260d57 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -363,6 +363,9 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_Turbine_LP, Casing_Turbine_HP,
Casing_Turbine_Gas, Casing_Turbine_Plasma,
+ // Large Engine
+ Casing_Reinforced_Engine_Casing,
+
//Large Vacuum Furnace
Casing_Vacuum_Furnace,
Controller_Vacuum_Furnace,
@@ -375,10 +378,13 @@ public enum GregtechItemList implements GregtechItemContainer {
Controller_LargeSemifluidGenerator,
// IsaMill
- Controller_IsaMill_Controller,
+ Controller_IsaMill,
Casing_IsaMill_Casing,
Casing_IsaMill_Gearbox,
Casing_IsaMill_Pipe,
+
+ // Flotation Cell
+ Controller_Flotation_Cell,
//----------------------------------------------------------------------------
@@ -402,6 +408,12 @@ public enum GregtechItemList implements GregtechItemContainer {
//Control Core
Hatch_Control_Core,
+
+ // Milling Ball Bus
+ Bus_Milling_Balls,
+
+ // Catalyst Bus
+ Bus_Catalysts,
//Custom Fluid Hatches
Hatch_Input_Cryotheum,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_HatchNbtConsumable.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_HatchNbtConsumable.java
new file mode 100644
index 0000000000..9596d41387
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/hatches/CONTAINER_HatchNbtConsumable.java
@@ -0,0 +1,282 @@
+package gtPlusPlus.xmod.gregtech.api.gui.hatches;
+
+import java.util.Iterator;
+
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.gui.GT_Container;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.util.GT_LanguageManager;
+import gtPlusPlus.core.slots.SlotNoInput;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.ICrafting;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class CONTAINER_HatchNbtConsumable extends GT_Container {
+
+ public final int mInputslotCount;
+ private final int mTotalSlotCount;
+
+ public CONTAINER_HatchNbtConsumable(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, int aInputslotCount) {
+ super(aInventoryPlayer, aTileEntity);
+ mInputslotCount = aInputslotCount;
+ mTotalSlotCount = aInputslotCount*2;
+ mTileEntity = aTileEntity;
+ if (mTileEntity != null && mTileEntity.getMetaTileEntity() != null) {
+ addSlots(aInventoryPlayer);
+ if (doesBindPlayerInventory()) {
+ bindPlayerInventory(aInventoryPlayer);
+ }
+ detectAndSendChanges();
+ } else {
+ aInventoryPlayer.player.openContainer = aInventoryPlayer.player.inventoryContainer;
+ }
+ }
+
+ @Override
+ public void addSlots(InventoryPlayer aInventoryPlayer) {
+ if (mTotalSlotCount == 8) {
+ final int aSlotYStart = 26;
+ final int aSlotYFinish = aSlotYStart + (18*2);
+ final int aSlotXStart1 = 26;
+ final int aSlotXFinish1 = aSlotXStart1 + (18*2);
+ final int aSlotXStart2 = 116;
+ final int aSlotXFinish2 = aSlotXStart2 + (18*2);
+ int aSlotID = 0;
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart1; x < aSlotXFinish1; x += 18) {
+ addSlotToContainer(new Slot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart2; x < aSlotXFinish2; x += 18) {
+ addSlotToContainer(new ViewingSlot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ }
+ else if (mTotalSlotCount == 18) {
+ int aSlotYStart = 20;
+ int aSlotYFinish = aSlotYStart + (18*3);
+ int aSlotXStart1 = 26;
+ int aSlotXFinish1 = aSlotXStart1 + (18*3);
+ int aSlotXStart2 = 98;
+ int aSlotXFinish2 = aSlotXStart2 + (18*3);
+ int aSlotID = 0;
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart1; x < aSlotXFinish1; x += 18) {
+ addSlotToContainer(new Slot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart2; x < aSlotXFinish2; x += 18) {
+ addSlotToContainer(new ViewingSlot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ }
+ else if (mTotalSlotCount == 32) {
+ int aSlotYStart = 8;
+ int aSlotYFinish = aSlotYStart + (18*4);
+ int aSlotXStart1 = 8;
+ int aSlotXFinish1 = aSlotXStart1 + (18*4);
+ int aSlotXStart2 = 97;
+ int aSlotXFinish2 = aSlotXStart2 + (18*4);
+ int aSlotID = 0;
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart1; x < aSlotXFinish1; x += 18) {
+ addSlotToContainer(new Slot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ for (int y = aSlotYStart; y < aSlotYFinish; y += 18) {
+ for (int x = aSlotXStart2; x < aSlotXFinish2; x += 18) {
+ addSlotToContainer(new ViewingSlot(mTileEntity, aSlotID++, x, y));
+ }
+ }
+ }
+ }
+
+ @Override
+ public int getSlotCount() {
+ return mTotalSlotCount;
+ }
+
+ @Override
+ public int getShiftClickSlotCount() {
+ return mInputslotCount;
+ }
+
+ /*
+ * Uselss stuff copied from GT
+ */
+
+
+ public int mActive = 0, mMaxProgressTime = 0, mProgressTime = 0, mEnergy = 0, mSteam = 0, mSteamStorage = 0, mStorage = 0, mOutput = 0, mInput = 0, mID = 0, mDisplayErrorCode = 0;
+ private int oActive = 0, oMaxProgressTime = 0, oProgressTime = 0, oEnergy = 0, oSteam = 0, oSteamStorage = 0, oStorage = 0, oOutput = 0, oInput = 0, oID = 0, oDisplayErrorCode = 0, mTimer = 0;
+
+
+ @Override
+ public void detectAndSendChanges() {
+ super.detectAndSendChanges();
+ if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
+ mStorage = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getEUCapacity());
+ mEnergy = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getStoredEU());
+ mSteamStorage = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getSteamCapacity());
+ mSteam = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getStoredSteam());
+ mOutput = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getOutputVoltage());
+ mInput = (int) Math.min(Integer.MAX_VALUE, mTileEntity.getInputVoltage());
+ mDisplayErrorCode = mTileEntity.getErrorDisplayID();
+ mProgressTime = mTileEntity.getProgress();
+ mMaxProgressTime = mTileEntity.getMaxProgress();
+ mActive = mTileEntity.isActive() ? 1 : 0;
+ mTimer++;
+
+ Iterator var2 = this.crafters.iterator();
+ while (var2.hasNext()) {
+ ICrafting var1 = (ICrafting) var2.next();
+ if (mTimer % 500 == 10 || oEnergy != mEnergy) {
+ var1.sendProgressBarUpdate(this, 0, mEnergy & 65535);
+ var1.sendProgressBarUpdate(this, 1, mEnergy >>> 16);
+ }
+ if (mTimer % 500 == 10 || oStorage != mStorage) {
+ var1.sendProgressBarUpdate(this, 2, mStorage & 65535);
+ var1.sendProgressBarUpdate(this, 3, mStorage >>> 16);
+ }
+ if (mTimer % 500 == 10 || oOutput != mOutput) {
+ var1.sendProgressBarUpdate(this, 4, mOutput);
+ }
+ if (mTimer % 500 == 10 || oInput != mInput) {
+ var1.sendProgressBarUpdate(this, 5, mInput);
+ }
+ if (mTimer % 500 == 10 || oDisplayErrorCode != mDisplayErrorCode) {
+ var1.sendProgressBarUpdate(this, 6, mDisplayErrorCode);
+ }
+ if (mTimer % 500 == 10 || oProgressTime != mProgressTime) {
+ var1.sendProgressBarUpdate(this, 11, mProgressTime & 65535);
+ var1.sendProgressBarUpdate(this, 12, mProgressTime >>> 16);
+ }
+ if (mTimer % 500 == 10 || oMaxProgressTime != mMaxProgressTime) {
+ var1.sendProgressBarUpdate(this, 13, mMaxProgressTime & 65535);
+ var1.sendProgressBarUpdate(this, 14, mMaxProgressTime >>> 16);
+ }
+ if (mTimer % 500 == 10 || oID != mID) {
+ var1.sendProgressBarUpdate(this, 15, mID);
+ }
+ if (mTimer % 500 == 10 || oActive != mActive) {
+ var1.sendProgressBarUpdate(this, 16, mActive);
+ }
+ if (mTimer % 500 == 10 || oSteam != mSteam) {
+ var1.sendProgressBarUpdate(this, 17, mSteam & 65535);
+ var1.sendProgressBarUpdate(this, 18, mSteam >>> 16);
+ }
+ if (mTimer % 500 == 10 || oSteamStorage != mSteamStorage) {
+ var1.sendProgressBarUpdate(this, 19, mSteamStorage & 65535);
+ var1.sendProgressBarUpdate(this, 20, mSteamStorage >>> 16);
+ }
+ }
+
+ oID = mID;
+ oSteam = mSteam;
+ oInput = mInput;
+ oActive = mActive;
+ oOutput = mOutput;
+ oEnergy = mEnergy;
+ oStorage = mStorage;
+ oSteamStorage = mSteamStorage;
+ oProgressTime = mProgressTime;
+ oMaxProgressTime = mMaxProgressTime;
+ oDisplayErrorCode = mDisplayErrorCode;
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public void updateProgressBar(int par1, int par2) {
+ super.updateProgressBar(par1, par2);
+ switch (par1) {
+ case 0:
+ mEnergy = mEnergy & -65536 | par2;
+ break;
+ case 1:
+ mEnergy = mEnergy & 65535 | par2 << 16;
+ break;
+ case 2:
+ mStorage = mStorage & -65536 | par2;
+ break;
+ case 3:
+ mStorage = mStorage & 65535 | par2 << 16;
+ break;
+ case 4:
+ mOutput = par2;
+ break;
+ case 5:
+ mInput = par2;
+ break;
+ case 6:
+ mDisplayErrorCode = par2;
+ break;
+ case 11:
+ mProgressTime = mProgressTime & -65536 | par2;
+ break;
+ case 12:
+ mProgressTime = mProgressTime & 65535 | par2 << 16;
+ break;
+ case 13:
+ mMaxProgressTime = mMaxProgressTime & -65536 | par2;
+ break;
+ case 14:
+ mMaxProgressTime = mMaxProgressTime & 65535 | par2 << 16;
+ break;
+ case 15:
+ mID = par2;
+ break;
+ case 16:
+ mActive = par2;
+ break;
+ case 17:
+ mSteam = mSteam & -65536 | par2;
+ break;
+ case 18:
+ mSteam = mSteam & 65535 | par2 << 16;
+ break;
+ case 19:
+ mSteamStorage = mSteamStorage & -65536 | par2;
+ break;
+ case 20:
+ mSteamStorage = mSteamStorage & 65535 | par2 << 16;
+ break;
+ }
+ }
+
+ @Override
+ public boolean canInteractWith(EntityPlayer player) {