aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
authorJordan Byrne <draknyte1@hotmail.com>2018-02-04 16:48:16 +1000
committerJordan Byrne <draknyte1@hotmail.com>2018-02-04 16:48:16 +1000
commit0ac82fb73ed9bfdb3ea7b66a7ed6b44025faa03e (patch)
tree8f24879d652e068a2303496d6c694085d8707af8 /src/Java
parentc736d1091698a2ef1a4a4c953392683d12abdc93 (diff)
downloadGT5-Unofficial-0ac82fb73ed9bfdb3ea7b66a7ed6b44025faa03e.tar.gz
GT5-Unofficial-0ac82fb73ed9bfdb3ea7b66a7ed6b44025faa03e.tar.bz2
GT5-Unofficial-0ac82fb73ed9bfdb3ea7b66a7ed6b44025faa03e.zip
$ Fixed Field injection ASM doing double injections.
$ Fixed Super Chest ID collision. % Made Super Chests hold 1/2 as much.
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java10
-rw-r--r--src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java34
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredChest.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSuperTanks.java2
4 files changed, 28 insertions, 20 deletions
diff --git a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index 059e9ad5dc..db5a6e2a74 100644
--- a/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/Java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -46,17 +46,13 @@ public class COMPAT_HANDLER {
/*
829
---
- //837
- //to
- //839
- ---
- 851
+ 859
to
868
---
- 890
+ 899
to
- 950
+ 945
*/
new RECIPES_LaserEngraver();
diff --git a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
index 99f82e6462..6f5f642456 100644
--- a/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
+++ b/src/Java/gtPlusPlus/preloader/asm/transformers/Preloader_ClassTransformer2.java
@@ -14,6 +14,7 @@ import gregtech.api.GregTech_API;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.common.blocks.GT_Block_Machines;
import gtPlusPlus.api.objects.Logger;
@@ -46,13 +47,12 @@ public class Preloader_ClassTransformer2 {
-
- NBTTagCompound mItemStorageNBT = new NBTTagCompound();
-
+ public static boolean mHasSetField = false;
+
private final static Class<BaseMetaTileEntity> customTransformer2 = BaseMetaTileEntity.class;
public static final class GT_MetaTile_Visitor extends ClassVisitor {
private boolean isGt_Block_Machines = false;
- private boolean mHasSetField = false;
+
public GT_MetaTile_Visitor(ClassVisitor cv, boolean isGt_Block_Machines) {
super(ASM5, cv);
this.isGt_Block_Machines = isGt_Block_Machines;
@@ -61,7 +61,7 @@ public class Preloader_ClassTransformer2 {
@Override
public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) {
FieldVisitor j = super.visitField(access, name, desc, signature, value);
- if (!mHasSetField) {
+ if (!mHasSetField && !isGt_Block_Machines) {
mHasSetField = true;
FMLRelaunchLog.log("[GT++ ASM] NBTFixer", Level.INFO, "Injecting field 'mItemStorageNBT' into BaseMetaTileEntity.java. Access OpCode: "+access);
j = cv.visitField(0, "mItemStorageNBT", "Lnet/minecraft/nbt/NBTTagCompound;", null, null);
@@ -203,7 +203,10 @@ public class Preloader_ClassTransformer2 {
else {
Logger.REFLECTION("mFluid was not found.");
}
- BaseMetaTileEntity tMetaTileEntity = o;
+ NBTTagCompound mItemStorageNBT = (NBTTagCompound) ReflectionUtils.getField(customTransformer2, "mItemStorageNBT").get(o);
+
+ MetaTileEntity tMetaTileEntity = (MetaTileEntity) ReflectionUtils.getField(customTransformer2, "mMetaTileEntity").get(o);
+ //BaseMetaTileEntity tMetaTileEntity = o;
Logger.REFLECTION("tID: "+(tID != 0));
Logger.REFLECTION("tRecipeStuff: "+(tRecipeStuff != null));
@@ -215,11 +218,15 @@ public class Preloader_ClassTransformer2 {
Logger.REFLECTION("tCoverSides: "+(tCoverSides != null));
Logger.REFLECTION("tCoverData: "+(tCoverData != null));
Logger.REFLECTION("tMetaTileEntity: "+(tMetaTileEntity != null));
+ Logger.REFLECTION("mItemStorageNBT: "+(mItemStorageNBT != null));
+ //mItemStorageNBT
+
ItemStack rStack = new ItemStack(GregTech_API.sBlockMachines, 1, tID);
NBTTagCompound tNBT = new NBTTagCompound();
if (tRecipeStuff != null && !tRecipeStuff.hasNoTags()) tNBT.setTag("GT.CraftingComponents", tRecipeStuff);
+ if (mItemStorageNBT != null && !mItemStorageNBT.hasNoTags()) tNBT.setTag("GT.ItemNBT", mItemStorageNBT);
if (tMuffler) tNBT.setBoolean("mMuffler", tMuffler);
if (tLockUpgrade) tNBT.setBoolean("mLockUpgrade", tLockUpgrade);
if (tSteamConverter) tNBT.setBoolean("mSteamConverter", tSteamConverter);
@@ -236,20 +243,20 @@ public class Preloader_ClassTransformer2 {
}
}
- //Set Item NBT
+ /*//Set Item NBT
if (!o.isInvalid()){
- ((IMetaTileEntity) tMetaTileEntity).setItemNBT(tNBT); //Valid? Idk
+ ((MetaTileEntity) 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
+ ((MetaTileEntity) tMetaTileEntity).setItemNBT(tNBT); //Valid? Idk
}
catch (Throwable t){
Logger.REFLECTION("getDropsHack1");
t.printStackTrace();
}
- }
+ }*/
//Set stack NBT
if (!tNBT.hasNoTags()) rStack.setTagCompound(tNBT);
@@ -270,12 +277,17 @@ public class Preloader_ClassTransformer2 {
GregTech_API.causeMachineUpdate(aWorld, aX, aY, aZ);
final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ);
if (tTileEntity instanceof IGregTechTileEntity) {
- final IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity;
+ final IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity;
final Random tRandom = new XSTR();
GT_Block_Machines.mTemporaryTileEntity.set(tGregTechTileEntity);
for (int i = 0; i < tGregTechTileEntity.getSizeInventory(); ++i) {
final ItemStack tItem = tGregTechTileEntity.getStackInSlot(i);
if (tItem != null && tItem.stackSize > 0 && tGregTechTileEntity.isValidSlot(i)) {
+
+ //Try inject this
+ tGregTechTileEntity.getMetaTileEntity().setItemNBT((NBTTagCompound) tItem.getTagCompound().copy());
+ Logger.INFO("Hopefully saved ItemNBT data.");
+
final EntityItem tItemEntity = new EntityItem(aWorld,
(double) (aX + tRandom.nextFloat() * 0.8f + 0.1f),
(double) (aY + tRandom.nextFloat() * 0.8f + 0.1f),
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredChest.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredChest.java
index e3c7cbded5..cc6a22c372 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredChest.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_TieredChest.java
@@ -19,7 +19,7 @@ import net.minecraft.nbt.NBTTagCompound;
public class GT_MetaTileEntity_TieredChest extends GT_MetaTileEntity_TieredMachineBlock {
public int mItemCount = 0;
public ItemStack mItemStack = null;
- private final static double mStorageFactor = (270000.0D/8);
+ private final static double mStorageFactor = (270000.0D/16);
public GT_MetaTileEntity_TieredChest(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier, 3,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSuperTanks.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSuperTanks.java
index 3a5199197c..4f7ff4add9 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSuperTanks.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechSuperTanks.java
@@ -13,7 +13,7 @@ import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_Ti
public class GregtechSuperTanks {
public static void run() {
- int mId = 890;
+ int mId = 946;
GregtechItemList.Super_Chest_LV.set((new GT_MetaTileEntity_TieredChest(mId++, "super.chest.tier.01", "Super Chest I", 1)).getStackForm(1L));
GregtechItemList.Super_Chest_MV.set((new GT_MetaTileEntity_TieredChest(mId++, "super.chest.tier.02", "Super Chest II", 2)).getStackForm(1L));
GregtechItemList.Super_Chest_HV.set((new GT_MetaTileEntity_TieredChest(mId++, "super.chest.tier.03", "Super Chest III", 3)).getStackForm(1L));