aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/Growthcraft_Old.java
blob: ab11c062e074ab4a52ec46918488c7b75c4c0959 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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);
		}
	}

}