diff options
Diffstat (limited to 'src/Java')
-rw-r--r-- | src/Java/gtPlusPlus/api/objects/Logger.java | 4 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/PollutionUtils.java | 12 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/reflect/ReflectionUtils.java | 4 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/preloader/asm/Preloader_FMLLoadingPlugin.java | 3 | ||||
-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.java | 138 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_Transformer_Handler.java | 30 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java | 128 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredTank.java | 12 |
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 |