aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
authorJordan Byrne <draknyte1@hotmail.com>2018-01-25 16:39:02 +1000
committerJordan Byrne <draknyte1@hotmail.com>2018-01-25 16:39:02 +1000
commit0d8dc3b625c83c80e7a20b6b2233d972cb2f2af2 (patch)
treece645e4a886c2d3ba587ef32411d5f9bbf3bab3c /src/Java
parentdce315b90227d8888d1d5916e04289c9be4032e1 (diff)
downloadGT5-Unofficial-0d8dc3b625c83c80e7a20b6b2233d972cb2f2af2.tar.gz
GT5-Unofficial-0d8dc3b625c83c80e7a20b6b2233d972cb2f2af2.tar.bz2
GT5-Unofficial-0d8dc3b625c83c80e7a20b6b2233d972cb2f2af2.zip
$ Further fixes to Pollution and Multiblocks, revision of 7ddb7f5e8ed9fe60b730183c7a04f3bce3b8f815.
+ Added a handler for class transformers. % Added test case to tiered tanks for NBT storing. - Removed logging from some reflection calls.
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/api/objects/Logger.java4
-rw-r--r--src/Java/gtPlusPlus/core/util/PollutionUtils.java12
-rw-r--r--src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java4
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java3
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java (renamed from src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java)19
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java138
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java30
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java128
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java12
9 files changed, 254 insertions, 96 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/Logger.java b/src/Java/gtPlusPlus/api/objects/Logger.java
index 848972142a..016dcb4c9b 100644
--- a/src/Java/gtPlusPlus/api/objects/Logger.java
+++ b/src/Java/gtPlusPlus/api/objects/Logger.java
@@ -50,14 +50,14 @@ public class Logger {
// Developer Comments
public static void WARNING(final String s) {
- if (CORE.DEVENV || CORE.DEBUG) {
+ if (CORE.DEBUG) {
modLogger.warn(s);
}
}
// Errors
public static void ERROR(final String s) {
- if (CORE.DEVENV || CORE.DEBUG) {
+ if (CORE.DEBUG) {
modLogger.fatal(s);
}
}
diff --git a/src/Java/gtPlusPlus/core/util/PollutionUtils.java b/src/Java/gtPlusPlus/core/util/PollutionUtils.java
index 7e8de5f706..d68a25a844 100644
--- a/src/Java/gtPlusPlus/core/util/PollutionUtils.java
+++ b/src/Java/gtPlusPlus/core/util/PollutionUtils.java
@@ -18,9 +18,7 @@ public class PollutionUtils {
return mPollution.getBoolean(GT_Pollution);
}
}
- } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {
- return false;
- }
+ } catch (SecurityException | IllegalArgumentException | IllegalAccessException | NoSuchFieldException e) {}
return false;
}
@@ -35,9 +33,7 @@ public class PollutionUtils {
}
}
} catch (ClassNotFoundException | SecurityException | NoSuchMethodException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- return false;
- }
+ | IllegalArgumentException | InvocationTargetException e) {}
return false;
}
@@ -51,9 +47,7 @@ public class PollutionUtils {
}
}
} catch (ClassNotFoundException | SecurityException | NoSuchMethodException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- return 0;
- }
+ | IllegalArgumentException | InvocationTargetException e) {}
return 0;
}
diff --git a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
index 047f941aef..2a98f0a75a 100644
--- a/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
+++ b/src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java
@@ -20,10 +20,10 @@ public class ReflectionUtils {
} catch (final NoSuchFieldException e) {
final Class<?> superClass = clazz.getSuperclass();
if (superClass == null) {
- Logger.REFLECTION("Failed to get Field from Class. "+fieldName+" does not existing within "+clazz.getCanonicalName()+".");
+ //Logger.REFLECTION("Failed to get Field from Class. "+fieldName+" does not existing within "+clazz.getCanonicalName()+".");
throw e;
}
- Logger.REFLECTION("Failed to get Field from Class. "+fieldName+" does not existing within "+clazz.getCanonicalName()+". Trying super class.");
+ //Logger.REFLECTION("Failed to get Field from Class. "+fieldName+" does not existing within "+clazz.getCanonicalName()+". Trying super class.");
return getField(superClass, fieldName);
}
}
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
index f6e5d49906..68aab74a0a 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
+++ b/src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java
@@ -5,6 +5,7 @@ import java.util.Map;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.SortingIndex;
+import gtPlusPlus.preloader.asm.transformers.Preloader_Transformer_Handler;
@SortingIndex(10097)
@MCVersion(value = "1.7.10")
@@ -20,7 +21,7 @@ public class Preloader_FMLLoadingPlugin implements IFMLLoadingPlugin {
@Override
public String[] getASMTransformerClass() {
//This will return the name of the class
- return new String[]{Preloader_ClassTransformer.class.getName()};
+ return new String[]{Preloader_Transformer_Handler.class.getName()};
}
@Override
diff --git a/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
index f4c06107a7..535d1f778b 100644
--- a/src/Java/gtPlusPlus/preloader/asm/Preloader_ClassTransformer.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer.java
@@ -1,4 +1,4 @@
-package gtPlusPlus.preloader.asm;
+package gtPlusPlus.preloader.asm.transformers;
import static org.objectweb.asm.Opcodes.*;
@@ -11,10 +11,9 @@ import cpw.mods.fml.relauncher.FMLRelaunchLog;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.preloader.CORE_Preloader;
-import net.minecraft.launchwrapper.IClassTransformer;
import net.minecraftforge.common.config.Configuration;
-public class Preloader_ClassTransformer implements IClassTransformer {
+public class Preloader_ClassTransformer {
public boolean getConfig(){
final Configuration config = new Configuration( new File(Utils.getMcDir(), "config/GTplusplus/GTplusplus.cfg"));
@@ -30,19 +29,7 @@ public class Preloader_ClassTransformer implements IClassTransformer {
return false;
}
-
- @Override
- public byte[] transform(String name, String transformedName, byte[] basicClass) {
- if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) {
- FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName);
- ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
- new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0);
- return classWriter.toByteArray();
- }
- return basicClass;
- }
-
- private static final class OreDictionaryVisitor extends ClassVisitor {
+ public static final class OreDictionaryVisitor extends ClassVisitor {
public OreDictionaryVisitor(ClassVisitor cv) {
super(ASM5, cv);
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
new file mode 100644
index 0000000000..264b371d7e
--- /dev/null
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
@@ -0,0 +1,138 @@
+package gtPlusPlus.preloader.asm.transformers;
+
+import static org.objectweb.asm.Opcodes.*;
+
+import java.rmi.AccessException;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.apache.logging.log4j.Level;
+import org.objectweb.asm.*;
+
+import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import gregtech.api.GregTech_API;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.metatileentity.BaseMetaTileEntity;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+public class Preloader_ClassTransformer2 {
+
+
+ public ArrayList<ItemStack> getDrops(BaseMetaTileEntity o) {
+ try {
+ int tID = (int) ReflectionUtils.getField(getClass(), "mID").get(o);
+ NBTTagCompound tRecipeStuff = (NBTTagCompound) ReflectionUtils.getField(getClass(), "mRecipeStuff").get(o);
+ boolean tMuffler = (boolean) ReflectionUtils.getField(getClass(), "mMuffler").get(o);
+ boolean tLockUpgrade = (boolean) ReflectionUtils.getField(getClass(), "mLockUpgrade").get(o);
+ boolean tSteamConverter = (boolean) ReflectionUtils.getField(getClass(), "mSteamConverter").get(o);
+ byte tColor = (byte) ReflectionUtils.getField(getClass(), "mColor").get(o);
+ byte tOtherUpgrades = (byte) ReflectionUtils.getField(getClass(), "mOtherUpgrades").get(o);
+ byte tStrongRedstone = (byte) ReflectionUtils.getField(getClass(), "mStrongRedstone").get(o);
+ int[] tCoverSides = (int[]) ReflectionUtils.getField(getClass(), "mCoverSides").get(o);
+ int[] tCoverData = (int[]) ReflectionUtils.getField(getClass(), "mCoverData").get(o);
+ BaseMetaTileEntity tMetaTileEntity = (BaseMetaTileEntity) ReflectionUtils.getField(getClass(), "mMetaTileEntity").get(o);
+
+ ItemStack rStack = new ItemStack(GregTech_API.sBlockMachines, 1, tID);
+ NBTTagCompound tNBT = new NBTTagCompound();
+
+ if (tRecipeStuff != null && !tRecipeStuff.hasNoTags()) tNBT.setTag("GT.CraftingComponents", tRecipeStuff);
+ if (tMuffler) tNBT.setBoolean("mMuffler", tMuffler);
+ if (tLockUpgrade) tNBT.setBoolean("mLockUpgrade", tLockUpgrade);
+ if (tSteamConverter) tNBT.setBoolean("mSteamConverter", tSteamConverter);
+ if (tColor > 0) tNBT.setByte("mColor", tColor);
+ if (tOtherUpgrades > 0) tNBT.setByte("mOtherUpgrades", tOtherUpgrades);
+ if (tStrongRedstone > 0) tNBT.setByte("mStrongRedstone", tStrongRedstone);
+ for (byte i = 0; i < tCoverSides.length; i++) {
+ if (tCoverSides[i] != 0) {
+ tNBT.setIntArray("mCoverData", tCoverData);
+ tNBT.setIntArray("mCoverSides", tCoverSides);
+ break;
+ }
+ }
+
+ //Set Item NBT
+ if (!o.isInvalid()){
+ ((IMetaTileEntity) tMetaTileEntity).setItemNBT(tNBT); //Valid? Idk
+ }
+ else {
+ try {
+ Logger.REFLECTION("Trying to set NBT data to Itemstack from invalid tile, World might explode.");
+ ((IMetaTileEntity) tMetaTileEntity).setItemNBT(tNBT); //Valid? Idk
+ }
+ catch (Throwable t){}
+ }
+
+ //Set stack NBT
+ if (!tNBT.hasNoTags()) rStack.setTagCompound(tNBT);
+ return new ArrayList<ItemStack>(Arrays.asList(rStack));
+ }
+ catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException a){}
+ return null;
+ }
+
+
+ public static final class GT_MetaTile_Visitor extends ClassVisitor {
+
+ public GT_MetaTile_Visitor(ClassVisitor cv) {
+ super(ASM5, cv);
+ }
+
+ @Override
+ public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
+ MethodVisitor methodVisitor = super.visitMethod(access, name, desc, signature, exceptions);
+ if(name.equals("getDrops") && desc.equals("()Ljava/util/ArrayList;")) {
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Found target method. [Unobfuscated]");
+ return new RegisterOreImplVisitor(methodVisitor, false);
+ }
+ else if(name.equals("getDrops") && desc.equals("(Ljava/lang/String;Ladd;)V")) {
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Found target method. [Obfuscated]");
+ return new RegisterOreImplVisitor(methodVisitor, true);
+ }
+ return methodVisitor;
+ }
+
+ }
+
+ private static final class RegisterOreImplVisitor extends MethodVisitor {
+
+ private final boolean mObfuscated;
+
+ public RegisterOreImplVisitor(MethodVisitor mv, boolean obfuscated) {
+ super(ASM5, mv);
+ this.mObfuscated = obfuscated;
+ }
+
+ @Override
+ public void visitCode() {
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Fixing Greg & Blood's poor attempt at setItemNBT().");
+ /*super.visitCode();
+ super.visitVarInsn(ALOAD, 0);
+ super.visitVarInsn(ALOAD, 1);
+ if (!mObfuscated){
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Injecting target method. [Unobfuscated]");
+ super.visitMethodInsn(INVOKESTATIC,
+ "gtPlusPlus/preloader/Preloader_GT_OreDict",
+ "shouldPreventRegistration",
+ "(Ljava/lang/String;Lnet/minecraft/item/ItemStack;)Z",
+ false);
+ }
+ else {
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Injecting target method. [Obfuscated]");
+ super.visitMethodInsn(INVOKESTATIC,
+ "gtPlusPlus/preloader/Preloader_GT_OreDict",
+ "shouldPreventRegistration",
+ "(Ljava/lang/String;Ladd;)Z",
+ false);
+ }
+ Label endLabel = new Label();
+ super.visitJumpInsn(IFEQ, endLabel);
+ super.visitInsn(RETURN);
+ super.visitLabel(endLabel);*/
+ }
+
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
new file mode 100644
index 0000000000..0a2f674875
--- /dev/null
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java
@@ -0,0 +1,30 @@
+package gtPlusPlus.preloader.asm.transformers;
+
+import org.apache.logging.log4j.Level;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassWriter;
+
+import cpw.mods.fml.relauncher.FMLRelaunchLog;
+import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer.OreDictionaryVisitor;
+import gtPlusPlus.preloader.asm.transformers.Preloader_ClassTransformer2.GT_MetaTile_Visitor;
+import net.minecraft.launchwrapper.IClassTransformer;
+
+public class Preloader_Transformer_Handler implements IClassTransformer {
+
+ public byte[] transform(String name, String transformedName, byte[] basicClass) {
+ if(transformedName.equals("net.minecraftforge.oredict.OreDictionary")) {
+ FMLRelaunchLog.log("[GT++ ASM] OreDictTransformer", Level.INFO, "Transforming %s", transformedName);
+ ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+ new ClassReader(basicClass).accept(new OreDictionaryVisitor(classWriter), 0);
+ return classWriter.toByteArray();
+ }
+ if(transformedName.equals("gregtech.api.metatileentity.BaseMetaTileEntity")) {
+ FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Transforming %s", transformedName);
+ ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
+ new ClassReader(basicClass).accept(new GT_MetaTile_Visitor(classWriter), 0);
+ return classWriter.toByteArray();
+ }
+ return basicClass;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index 79f5b22840..4e353003f4 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -215,7 +215,7 @@ GT_MetaTileEntity_MultiBlockBase {
}
super.updateSlots();
}
-
+
public boolean isToolCreative(ItemStack mStack){
Materials t1 = GT_MetaGenerated_Tool.getPrimaryMaterial(mStack);
Materials t2 = GT_MetaGenerated_Tool.getSecondaryMaterial(mStack);
@@ -252,7 +252,7 @@ GT_MetaTileEntity_MultiBlockBase {
return this.mMultiDynamoHatches.add(
(GT_MetaTileEntity_Hatch) aMetaTileEntity);
}
-
+
}
return super.addToMachineList(aTileEntity, aBaseCasingIndex);
}
@@ -322,19 +322,19 @@ GT_MetaTileEntity_MultiBlockBase {
}
return false;
}
-
+
/**
* Enable Texture Casing Support if found in GT 5.09
*/
-
+
public boolean updateTexture(final IGregTechTileEntity aTileEntity, int aCasingID){
try {
Method mProper = Class.forName("gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch").getDeclaredMethod("updateTexture", int.class);
if (mProper != null){
if (aTileEntity instanceof GT_MetaTileEntity_Hatch){
- mProper.setAccessible(true);
- mProper.invoke(this, aCasingID);
- return true;
+ mProper.setAccessible(true);
+ mProper.invoke(this, aCasingID);
+ return true;
}
}
else {
@@ -344,33 +344,33 @@ GT_MetaTileEntity_MultiBlockBase {
catch (NoSuchMethodException | SecurityException | ClassNotFoundException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {}
return false;
}
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
/**
* TecTech Support
*/
-
-
+
+
/**
* This is the array Used to Store the Tectech Multi-Amp hatches.
*/
-
+
public ArrayList<GT_MetaTileEntity_Hatch> mMultiDynamoHatches = new ArrayList();
-
+
/**
* TecTech Multi-Amp Dynamo Support
* @param aTileEntity - The Dynamo Hatch
* @param aBaseCasingIndex - Casing Texture
* @return
*/
-
+
public boolean addMultiAmpDynamoToMachineList(final IGregTechTileEntity aTileEntity, final int aBaseCasingIndex){
//GT_MetaTileEntity_Hatch_DynamoMulti
if (aTileEntity == null) {
@@ -386,7 +386,7 @@ GT_MetaTileEntity_MultiBlockBase {
}
return false;
}
-
+
public boolean isThisHatchMultiDynamo(){
Class mDynamoClass;
try {
@@ -407,12 +407,12 @@ GT_MetaTileEntity_MultiBlockBase {
if (isThisHatchMultiDynamo()) {
addMultiAmpDynamoToMachineList(aTileEntity, aBaseCasingIndex);
}
-
+
}
return super.addDynamoToMachineList(aTileEntity, aBaseCasingIndex);
}
-
+
/**
* Pollution Management
*/
@@ -422,62 +422,58 @@ GT_MetaTileEntity_MultiBlockBase {
}
public boolean polluteEnvironment(int aPollutionLevel) {
- try {
- Integer mPollution = 0;
- Field f = ReflectionUtils.getField(this.getClass(), "mPollution");
- if (f != null){
- Logger.REFLECTION("pollution field was not null");
+ if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK){
try {
- mPollution = (Integer) f.get(this);
- if (mPollution != null){
- Logger.REFLECTION("pollution field value was not null");
- }
- else {
- Logger.REFLECTION("pollution field value was null");
- }
- }
- catch (IllegalArgumentException | IllegalAccessException e) {}
- }
- else {
- Logger.REFLECTION("pollution field was null");
- }
-
- if (CORE.MAIN_GREGTECH_5U_EXPERIMENTAL_FORK && f != null){
- Logger.REFLECTION("doing pollution");
- mPollution += aPollutionLevel;
- for (final GT_MetaTileEntity_Hatch_Muffler tHatch : this.mMufflerHatches) {
- if (isValidMetaTileEntity(tHatch)) {
- if (mPollution < 10000) {
- break;
+ Integer mPollution = 0;
+ Field f = ReflectionUtils.getField(this.getClass(), "mPollution");
+ if (f != null){
+ try {
+ mPollution = (Integer) f.get(this);
}
- if (!polluteEnvironmentHatch(tHatch)) {
- continue;
+ catch (IllegalArgumentException | IllegalAccessException e) {}
+ }
+ if (f != null){
+ try {
+ if (mPollution != null){
+ //Reflectively set the pollution back to the TE
+ int temp = (mPollution += aPollutionLevel);
+ f.set(this, temp);
+ Logger.REFLECTION("Set pollution to "+temp+", it was "+mPollution+" before.");
+
+ //Iterate Mufflers
+ for (final GT_MetaTileEntity_Hatch_Muffler tHatch : this.mMufflerHatches) {
+ if (isValidMetaTileEntity(tHatch)) {
+ if (mPollution < 10000) {
+ break;
+ }
+ if (!polluteEnvironmentHatch(tHatch)) {
+ continue;
+ }
+ mPollution -= 10000;
+ }
+ }
+ return mPollution < 10000;
+
+ }
}
- mPollution -= 10000;
+ catch (IllegalArgumentException | IllegalAccessException e) {}
}
}
- return mPollution < 10000;
- }
- else {
- return false;
- }
- }
- catch (Throwable t){
- Logger.REFLECTION("Failed to add pollution.");
- t.printStackTrace();
- return false;
+ catch (Throwable t){}
}
+ return false;
}
-
+
public boolean polluteEnvironmentHatch(GT_MetaTileEntity_Hatch_Muffler tHatch) {
- if (tHatch.getBaseMetaTileEntity().getAirAtSide(this.getBaseMetaTileEntity().getFrontFacing())) {
+ if (tHatch.getBaseMetaTileEntity().getAirAtSide(tHatch.getBaseMetaTileEntity().getFrontFacing())) {
+ Logger.REFLECTION("doing pollution");
PollutionUtils.addPollution(tHatch.getBaseMetaTileEntity(), calculatePollutionReduction(tHatch, 10000));
return true;
} else {
return false;
}
}
-
+
public int calculatePollutionReduction(GT_MetaTileEntity_Hatch_Muffler tHatch, int aPollution) {
return (int) ((double) aPollution * Math.pow(0.7D, (double) (tHatch.mTier - 1)));
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
index f675cbe2ff..a177cf76ae 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java
@@ -7,8 +7,10 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.objects.GT_RenderedTexture;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
public class GT_MetaTileEntity_TieredTank extends GT_MetaTileEntity_BasicTank {
@@ -128,5 +130,15 @@ public class GT_MetaTileEntity_TieredTank extends GT_MetaTileEntity_BasicTank {
public boolean displaysStackSize() {
return false;
}
+
+ @Override
+ public void setItemNBT(NBTTagCompound aNBT) {
+ Logger.INFO("Setting item nbt");
+ super.setItemNBT(aNBT);
+ if (mFluid != null){
+ Logger.INFO("Setting item fluid nbt");
+ aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound()));
+ }
+ }
} \ No newline at end of file