aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
authorAlexdoru <57050655+Alexdoru@users.noreply.github.com>2024-09-21 01:38:28 +0200
committerGitHub <noreply@github.com>2024-09-21 01:38:28 +0200
commitc10272e0e358a233ed0ce7d591e9e43ca7ffa26c (patch)
treea097f2307d43a5c3d77a698b3c01eae801d35c6c /src/main/java/gregtech/api
parente567c18792be9fe623ec777b40f3cbc36572b78e (diff)
downloadGT5-Unofficial-c10272e0e358a233ed0ce7d591e9e43ca7ffa26c.tar.gz
GT5-Unofficial-c10272e0e358a233ed0ce7d591e9e43ca7ffa26c.tar.bz2
GT5-Unofficial-c10272e0e358a233ed0ce7d591e9e43ca7ffa26c.zip
Delete more reflection (#3233)
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/enums/TAE.java34
-rw-r--r--src/main/java/gregtech/api/items/ItemEnergyArmor.java5
-rw-r--r--src/main/java/gregtech/api/util/FishPondFakeRecipe.java80
-rw-r--r--src/main/java/gregtech/api/util/GTOreDictUnificator.java4
-rw-r--r--src/main/java/gregtech/api/util/GTUtility.java65
-rw-r--r--src/main/java/gregtech/api/util/ReflectionUtil.java13
6 files changed, 61 insertions, 140 deletions
diff --git a/src/main/java/gregtech/api/enums/TAE.java b/src/main/java/gregtech/api/enums/TAE.java
index 48a39da036..edc0e5123c 100644
--- a/src/main/java/gregtech/api/enums/TAE.java
+++ b/src/main/java/gregtech/api/enums/TAE.java
@@ -1,6 +1,5 @@
package gregtech.api.enums;
-import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.HashSet;
@@ -8,7 +7,6 @@ import gregtech.api.interfaces.ITexture;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.block.ModBlocks;
import gtPlusPlus.core.lib.GTPPCore;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.xmod.gregtech.api.objects.GTPPCopiedBlockTexture;
public class TAE {
@@ -77,38 +75,6 @@ public class TAE {
Logger.INFO("Finalised TAE.");
}
- private static boolean registerTextures(GTPPCopiedBlockTexture GTPPCopiedBlockTexture) {
- try {
- // Handle page 2.
- Logger.INFO("[TAE} Registering Texture, Last used casing ID is " + gtPPLastUsedIndex + ".");
- if (gtPPLastUsedIndex >= 128) {
- Field x = ReflectionUtils.getField(Textures.BlockIcons.class, "casingTexturePages");
- if (x != null) {
- ITexture[][] h = (ITexture[][]) x.get(null);
- if (h != null) {
- h[64][secondaryIndex++] = GTPPCopiedBlockTexture;
- x.set(null, h);
- Logger
- .INFO("[TAE} Registered Texture with ID " + (secondaryIndex - 1) + " in secondary index.");
- return true;
- }
- }
- }
-
- // set to page 1.
- else {
- Textures.BlockIcons.setCasingTextureForId(gtPPLastUsedIndex, GTPPCopiedBlockTexture);
- Logger.INFO("[TAE} Registered Texture with ID " + (gtPPLastUsedIndex) + " in main index.");
- gtPPLastUsedIndex++;
- return true;
- }
- } catch (Throwable t) {
- t.printStackTrace();
- }
- Logger.INFO("[TAE} Failed to register texture, Last used casing ID is " + gtPPLastUsedIndex + ".");
- return false;
- }
-
public static ITexture getTexture(int index) {
if (gtPPLastUsedIndex >= 128) {
return Textures.BlockIcons.getCasingTextureForId(((64 * 128) + index));
diff --git a/src/main/java/gregtech/api/items/ItemEnergyArmor.java b/src/main/java/gregtech/api/items/ItemEnergyArmor.java
index 77c8d0991a..257059e963 100644
--- a/src/main/java/gregtech/api/items/ItemEnergyArmor.java
+++ b/src/main/java/gregtech/api/items/ItemEnergyArmor.java
@@ -28,7 +28,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTechAPI;
import gregtech.api.util.GTLanguageManager;
import gregtech.api.util.GTModHandler;
-import gregtech.api.util.GTUtility;
public class ItemEnergyArmor extends ItemArmor implements ISpecialArmor {
@@ -126,11 +125,11 @@ public class ItemEnergyArmor extends ItemArmor implements ISpecialArmor {
if ((mSpecials & 8) != 0) {
if (GTModHandler.canUseElectricItem(aStack, 10000) && aPlayer.isPotionActive(Potion.poison)) {
- GTUtility.removePotion(aPlayer, Potion.poison.id);
+ aPlayer.removePotionEffect(Potion.poison.id);
GTModHandler.useElectricItem(aStack, 10000, aPlayer);
}
if (GTModHandler.canUseElectricItem(aStack, 100000) && aPlayer.isPotionActive(Potion.wither)) {
- GTUtility.removePotion(aPlayer, Potion.wither.id);
+ aPlayer.removePotionEffect(Potion.wither.id);
GTModHandler.useElectricItem(aStack, 100000, aPlayer);
}
}
diff --git a/src/main/java/gregtech/api/util/FishPondFakeRecipe.java b/src/main/java/gregtech/api/util/FishPondFakeRecipe.java
index 2deb38dccf..385af4ffef 100644
--- a/src/main/java/gregtech/api/util/FishPondFakeRecipe.java
+++ b/src/main/java/gregtech/api/util/FishPondFakeRecipe.java
@@ -1,8 +1,8 @@
package gregtech.api.util;
import static gregtech.api.util.GTRecipeBuilder.SECONDS;
-import static gtPlusPlus.api.recipe.GTPPRecipeMaps.fishPondRecipes;
+import java.lang.reflect.Field;
import java.util.ArrayList;
import net.minecraft.item.ItemStack;
@@ -11,61 +11,55 @@ import net.minecraftforge.common.FishingHooks;
import gregtech.api.enums.GTValues;
import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.util.minecraft.ItemUtils;
-import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.api.recipe.GTPPRecipeMaps;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.MTEIndustrialFishingPond;
public class FishPondFakeRecipe {
- public static ArrayList<WeightedRandomFishable> fish = new ArrayList<>();
- public static ArrayList<WeightedRandomFishable> junk = new ArrayList<>();
- public static ArrayList<WeightedRandomFishable> treasure = new ArrayList<>();
+ public static final ArrayList<ItemStack> fish = new ArrayList<>();
+ public static final ArrayList<ItemStack> junk = new ArrayList<>();
+ public static final ArrayList<ItemStack> treasure = new ArrayList<>();
@SuppressWarnings("unchecked")
- public static boolean generateFishPondRecipes() {
-
+ public static void generateFishPondRecipes() {
try {
- fish = (ArrayList<WeightedRandomFishable>) ReflectionUtils.getField(FishingHooks.class, "fish")
+ ArrayList<WeightedRandomFishable> fishList = (ArrayList<WeightedRandomFishable>) GTUtility
+ .getField(FishingHooks.class, "fish")
.get(null);
- junk = (ArrayList<WeightedRandomFishable>) ReflectionUtils.getField(FishingHooks.class, "junk")
+ ArrayList<WeightedRandomFishable> junkList = (ArrayList<WeightedRandomFishable>) GTUtility
+ .getField(FishingHooks.class, "junk")
.get(null);
- treasure = (ArrayList<WeightedRandomFishable>) ReflectionUtils.getField(FishingHooks.class, "treasure")
+ ArrayList<WeightedRandomFishable> treasureList = (ArrayList<WeightedRandomFishable>) GTUtility
+ .getField(FishingHooks.class, "treasure")
.get(null);
- } catch (IllegalArgumentException | IllegalAccessException e) {
- Logger.INFO("Error generating Fish Pond Recipes. [1]");
+ final Field stackField = GTUtility.getField(WeightedRandomFishable.class, "field_150711_b");
+ generateRecipesFor(MTEIndustrialFishingPond.FISH_MODE, fish, fishList, stackField);
+ generateRecipesFor(MTEIndustrialFishingPond.JUNK_MODE, junk, junkList, stackField);
+ generateRecipesFor(MTEIndustrialFishingPond.TREASURE_MODE, treasure, treasureList, stackField);
+ } catch (Exception e) {
+ Logger.INFO("Error reading the vanilla fishing loot table.");
e.printStackTrace();
}
+ }
- ArrayList<ArrayList<WeightedRandomFishable>> mega = new ArrayList<>();
- mega.add(fish);
- mega.add(junk);
- mega.add(treasure);
-
- int mType = 14;
- for (ArrayList<WeightedRandomFishable> f : mega) {
- for (WeightedRandomFishable weightedRandomFishable : f) {
- if (weightedRandomFishable != null) {
- WeightedRandomFishable u = weightedRandomFishable;
- try {
- ItemStack t = (ItemStack) ReflectionUtils
- .getField(WeightedRandomFishable.class, "field_150711_b")
- .get(u);
- GTValues.RA.stdBuilder()
- .itemInputs(GTUtility.getIntegratedCircuit(mType))
- .itemOutputs(t)
- .duration(5 * SECONDS)
- .eut(0)
- .ignoreCollision()
- .addTo(fishPondRecipes);
- Logger.INFO("Fishing [" + mType + "]: " + ItemUtils.getArrayStackNames(new ItemStack[] { t }));
- } catch (IllegalArgumentException | IllegalAccessException e1) {
- Logger.INFO("Error generating Fish Pond Recipes. [2]");
- e1.printStackTrace();
- }
- }
+ private static void generateRecipesFor(int circuitType, ArrayList<ItemStack> listToFill,
+ ArrayList<WeightedRandomFishable> lootTable, Field stackField) {
+ for (WeightedRandomFishable fishable : lootTable) {
+ try {
+ ItemStack stack = (ItemStack) stackField.get(fishable);
+ listToFill.add(stack.copy());
+ GTValues.RA.stdBuilder()
+ .itemInputs(GTUtility.getIntegratedCircuit(circuitType))
+ .itemOutputs(stack)
+ .duration(5 * SECONDS)
+ .eut(0)
+ .ignoreCollision()
+ .addTo(GTPPRecipeMaps.fishPondRecipes);
+ } catch (IllegalArgumentException | IllegalAccessException e1) {
+ Logger.INFO("Error generating Fish Pond Recipes");
+ e1.printStackTrace();
}
- mType++;
}
-
- return true;
+ listToFill.trimToSize();
}
}
diff --git a/src/main/java/gregtech/api/util/GTOreDictUnificator.java b/src/main/java/gregtech/api/util/GTOreDictUnificator.java
index 2a7ee08537..af7f249cec 100644
--- a/src/main/java/gregtech/api/util/GTOreDictUnificator.java
+++ b/src/main/java/gregtech/api/util/GTOreDictUnificator.java
@@ -583,4 +583,8 @@ public class GTOreDictUnificator {
return GTUtility.isStringValid(aName) ? Collections.unmodifiableList(OreDictionary.getOres(aName))
: Collections.emptyList();
}
+
+ public static Map<String, ItemStack> getName2StackMap() {
+ return sName2StackMap;
+ }
}
diff --git a/src/main/java/gregtech/api/util/GTUtility.java b/src/main/java/gregtech/api/util/GTUtility.java
index 442ba2a562..3294b0523d 100644
--- a/src/main/java/gregtech/api/util/GTUtility.java
+++ b/src/main/java/gregtech/api/util/GTUtility.java
@@ -62,7 +62,6 @@ import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
-import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.item.EntityItem;
@@ -364,21 +363,6 @@ public class GTUtility {
return null;
}
- public static Object callConstructor(String aClass, int aConstructorIndex, Object aReplacementObject,
- boolean aLogErrors, Object... aParameters) {
- try {
- return callConstructor(
- Class.forName(aClass),
- aConstructorIndex,
- aReplacementObject,
- aLogErrors,
- aParameters);
- } catch (Throwable e) {
- if (aLogErrors) e.printStackTrace(GTLog.err);
- }
- return aReplacementObject;
- }
-
public static Object callConstructor(Class<?> aClass, int aConstructorIndex, Object aReplacementObject,
boolean aLogErrors, Object... aParameters) {
if (aConstructorIndex < 0) {
@@ -401,31 +385,12 @@ public class GTUtility {
return aReplacementObject;
}
- public static String capitalizeString(String aString) {
- if (aString != null && aString.length() > 0) return aString.substring(0, 1)
- .toUpperCase() + aString.substring(1);
- return E;
- }
-
- public static boolean getPotion(EntityLivingBase aPlayer, int aPotionIndex) {
- try {
- Field tPotionHashmap = null;
-
- Field[] fields = EntityLiving.class.getDeclaredFields();
-
- for (Field field : fields) {
- if (field.getType() == HashMap.class) {
- tPotionHashmap = field;
- tPotionHashmap.setAccessible(true);
- break;
- }
- }
-
- if (tPotionHashmap != null) return ((HashMap<?, ?>) tPotionHashmap.get(aPlayer)).get(aPotionIndex) != null;
- } catch (Throwable e) {
- if (D1) e.printStackTrace(GTLog.err);
+ public static String capitalizeString(String s) {
+ if (s != null && !s.isEmpty()) {
+ return s.substring(0, 1)
+ .toUpperCase() + s.substring(1);
}
- return false;
+ return "";
}
public static String getClassName(Object aObject) {
@@ -438,26 +403,6 @@ public class GTUtility {
.lastIndexOf(".") + 1);
}
- public static void removePotion(EntityLivingBase aPlayer, int aPotionIndex) {
- try {
- Field tPotionHashmap = null;
-
- Field[] fields = EntityLiving.class.getDeclaredFields();
-
- for (Field field : fields) {
- if (field.getType() == HashMap.class) {
- tPotionHashmap = field;
- tPotionHashmap.setAccessible(true);
- break;
- }
- }
-
- if (tPotionHashmap != null) ((HashMap<?, ?>) tPotionHashmap.get(aPlayer)).remove(aPotionIndex);
- } catch (Throwable e) {
- if (D1) e.printStackTrace(GTLog.err);
- }
- }
-
public static boolean getFullInvisibility(EntityPlayer aPlayer) {
try {
if (aPlayer.isInvisible()) {
diff --git a/src/main/java/gregtech/api/util/ReflectionUtil.java b/src/main/java/gregtech/api/util/ReflectionUtil.java
new file mode 100644
index 0000000000..60abae8199
--- /dev/null
+++ b/src/main/java/gregtech/api/util/ReflectionUtil.java
@@ -0,0 +1,13 @@
+package gregtech.api.util;
+
+public class ReflectionUtil {
+
+ public static Class<?> getClass(String classname) {
+ try {
+ return Class.forName(classname);
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+}