package gtPlusPlus.xmod.growthcraft.fishtrap; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import net.minecraft.item.ItemStack; public class Growthcraft_Old { Method addTrapJunk; Method addTrapTreasure; Method addTrapFish; Object FishTrapRegistryO; public Growthcraft_Old() { setFishTrapRegistry(); } void setFishTrapRegistry() { try { Class FishTrapRegistryClass = Class .forName("gtPlusPlus.xmod.growthcraft.fishtrap.FishTrapHandler.mFishingRegistry"); Class FishTrapEntry = Class.forName("growthcraft.api.fishtrap.FishTrapEntry"); if (FishTrapRegistryClass.isInstance(FishTrapHandler.getFishingRegistry())) { addTrapJunk = FishTrapRegistryClass.getDeclaredMethod("addTrapJunk", FishTrapEntry); addTrapTreasure = FishTrapRegistryClass.getDeclaredMethod("addTrapTreasure", FishTrapEntry); addTrapFish = FishTrapRegistryClass.getDeclaredMethod("addTrapFish", FishTrapEntry); FishTrapRegistryO = FishTrapHandler.getFishingRegistry(); } } catch (ClassNotFoundException | NoSuchMethodException | SecurityException e) { e.printStackTrace(); } } private Object createFishTrapEntry(ItemStack loot, int chance) { try { Class FishTrapEntry = Class.forName("growthcraft.api.fishtrap.FishTrapEntry"); Object o = FishTrapEntry.getConstructor(ItemStack.class, int.class); if (FishTrapEntry != null) { Constructor[] constructors = FishTrapEntry.getDeclaredConstructors(); constructors[0].setAccessible(true); Object x = constructors[0].newInstance(loot, chance); if (x != null) { return x; } } } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {} return null; } private boolean invoke(Method m, ItemStack o, int p) { try { Object I = createFishTrapEntry(o, p); m.invoke(FishTrapRegistryO, I); return true; } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {} return false; } public void addTrapJunk(final ItemStack loot, final int lootChance) { // FishTrapRegistry.instance().addTrapJunk(new FishTrapEntry(loot, lootChance)); if (addTrapJunk != null) { invoke(addTrapJunk, loot, lootChance); } } public void addTrapTreasure(final ItemStack loot, final int lootChance) { // FishTrapRegistry.instance().addTrapTreasure(new FishTrapEntry(loot, lootChance)); if (addTrapTreasure != null) { invoke(addTrapTreasure, loot, lootChance); } } public void addTrapFish(final ItemStack loot, final int lootChance) { // FishTrapRegistry.instance().addTrapFish(new FishTrapEntry(loot, lootChance)); if (addTrapFish != null) { invoke(addTrapFish, loot, lootChance); } } }