diff options
author | miozune <miozune@gmail.com> | 2022-08-27 16:48:37 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-27 09:48:37 +0200 |
commit | f4201f09e9927de07184b7698829ed052fdcc734 (patch) | |
tree | 32d60b8aea9101e55743e94eed94442f51c039f7 /src | |
parent | e66836d0c53b981c94d17d52c2fe12401779da33 (diff) | |
download | GT5-Unofficial-f4201f09e9927de07184b7698829ed052fdcc734.tar.gz GT5-Unofficial-f4201f09e9927de07184b7698829ed052fdcc734.tar.bz2 GT5-Unofficial-f4201f09e9927de07184b7698829ed052fdcc734.zip |
Fix reflection failure with RTG hatch (#303)
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG.java | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG.java index dba046c6cc..8646e7e0a7 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Energy_RTG.java @@ -2,7 +2,8 @@ package gtPlusPlus.xmod.gregtech.api.metatileentity.implementations; import static gregtech.api.enums.GT_Values.V; -import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.util.HashMap; import gregtech.api.gui.GT_Container_3by3; @@ -15,7 +16,6 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.minecraft.InventoryUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; -import gtPlusPlus.core.util.reflect.ReflectionUtils; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; @@ -27,15 +27,16 @@ public class GT_MetaTileEntity_Hatch_Energy_RTG extends GT_MetaTileEntity_Hatch_ public GT_MetaTileEntity_Hatch_Energy_RTG(int aID, String aName, String aNameRegional, int aTier, int aInvSlotCount) { super(aID, aName, aNameRegional, aTier); - ReflectionUtils.setFinalFieldValue(MetaTileEntity.class, "mInventory", new ItemStack[aInvSlotCount]); + setInventoryContent(aInvSlotCount); } public GT_MetaTileEntity_Hatch_Energy_RTG(String aName, int aTier, String aDescription, ITexture[][][] aTextures) { super(aName, aTier, aDescription, aTextures); } - public GT_MetaTileEntity_Hatch_Energy_RTG(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { + public GT_MetaTileEntity_Hatch_Energy_RTG(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures, int aInvSlotCount) { super(aName, aTier, aDescription, aTextures); + setInventoryContent(aInvSlotCount); } @Override @@ -109,13 +110,7 @@ public class GT_MetaTileEntity_Hatch_Energy_RTG extends GT_MetaTileEntity_Hatch_ @Override public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { - Constructor aCon = ReflectionUtils.getConstructor(this.getClass(), new Class[] {String.class, int.class, int.class, String[].class, ITexture[][][].class}); - Object aInst = ReflectionUtils.createNewInstanceFromConstructor(aCon, new Object[] {mName, mTier, 9, mDescriptionArray, mTextures}); - if (GT_MetaTileEntity_Hatch_Energy_RTG.class.isInstance(aInst)) { - return (MetaTileEntity) aInst; - } - Logger.INFO("Created bad sized RTG hatch."); - return new GT_MetaTileEntity_Hatch_Energy_RTG(mName, mTier, mDescriptionArray, mTextures); + return new GT_MetaTileEntity_Hatch_Energy_RTG(mName, mTier, mDescriptionArray, mTextures, 9); } @Override @@ -283,6 +278,16 @@ public class GT_MetaTileEntity_Hatch_Energy_RTG extends GT_MetaTileEntity_Hatch_ return null; } - + private void setInventoryContent(int aInvSlotCount) { + try { + Field fieldInventory = MetaTileEntity.class.getDeclaredField("mInventory"); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(fieldInventory, fieldInventory.getModifiers() & ~Modifier.PRIVATE & ~Modifier.FINAL); + fieldInventory.set(this, new ItemStack[aInvSlotCount]); + } catch (Exception e) { + e.printStackTrace(); + } + } }
\ No newline at end of file |