aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
diff options
context:
space:
mode:
authoriouter <62897714+iouter@users.noreply.github.com>2022-01-07 12:36:06 +0800
committerGitHub <noreply@github.com>2022-01-07 12:36:06 +0800
commit0834d4b8b45a881f36ed5b295ac0fb38df49fa9a (patch)
tree6fb4a45cf17dd22748148417bc7bb0efb850cea3 /src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
parentea1439a4195c8f77c45625ea2593a232bf19984e (diff)
parent9b2e050151ad93170e84321d067d1e9d4ded4ba5 (diff)
downloadGT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.tar.gz
GT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.tar.bz2
GT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.zip
Merge branch 'GTNewHorizons:master' into master
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java')
-rw-r--r--src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java232
1 files changed, 232 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java b/src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
new file mode 100644
index 0000000000..43347949b6
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java
@@ -0,0 +1,232 @@
+package gtPlusPlus.xmod.growthcraft.fishtrap;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.util.GT_ModHandler;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.lib.LoadedMods;
+import gtPlusPlus.core.util.minecraft.FluidUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import net.minecraft.item.ItemStack;
+
+public class FishTrapHandler {
+
+ private static final String[] fishTypes = {"fish", "junk", "treasure"};
+ private static Object mFishingRegistry;
+ private static Growthcraft_Old mHandler;
+
+ public static Object getFishingRegistry(){
+ if (mFishingRegistry != null){
+ return mFishingRegistry;
+ }
+ else {
+ return setFishTrapRegistry();
+ }
+ }
+
+ private final static Object setFishTrapRegistry(){
+ Class mFishingRegistryClass;
+ try {
+ mFishingRegistryClass = ReflectionUtils.getClass("growthcraft.api.fishtrap.FishTrapRegistry");
+ final Method mFishingRegistryMethod = mFishingRegistryClass.getDeclaredMethod("getInstance");
+ mFishingRegistry = mFishingRegistryMethod.invoke(null);
+ if (mFishingRegistry != null){
+ return mFishingRegistry;
+ }
+ }
+ catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ }
+ return null;
+ }
+
+ protected static void addFish(final String lootType, final ItemStack lootStack, final int lootChance){
+
+ if (mFishingRegistry == null){
+ setFishTrapRegistry();
+ }
+ if (mHandler == null){
+ mHandler = new Growthcraft_Old();
+ }
+
+ final String GCVersion = LoadedMods.getModVersion("Growthcraft");
+ final String[] versionString = GCVersion.split("//.");
+
+ if (LoadedMods.getModVersion("Growthcraft").contains("2.3.1") || versionString[1].equals("3")){
+ if (lootType.equals(fishTypes[0])){
+ mHandler.addTrapFish(lootStack, lootChance);
+ Logger.INFO("Added "+lootStack.getDisplayName()+" as an extra Fish for Growthcraft Fishtraps.");
+ }
+ else if (lootType.equals(fishTypes[1])){
+ mHandler.addTrapJunk(lootStack, lootChance);
+ Logger.INFO("Added "+lootStack.getDisplayName()+" as extra Junk for Growthcraft Fishtraps.");
+ }
+ else if (lootType.equals(fishTypes[2])){
+ mHandler.addTrapTreasure(lootStack, lootChance);
+ Logger.INFO("Added "+lootStack.getDisplayName()+" as extra Treasure for Growthcraft Fishtraps.");
+ }
+ else {
+ return;
+ }
+ }/*
+ else if (LoadedMods.getModVersion("Growthcraft").contains("2.7.2")){
+ if (lootType.equals(fishTypes[0])){
+ Growthcraft_New.addTrapFish(lootStack, lootChance);
+ Utils.LOG_INFO("Added "+lootStack.getDisplayName()+" as an extra Fish for Growthcraft Fishtraps.");
+ }
+ else if (lootType.equals(fishTypes[1])){
+ Growthcraft_New.addTrapJunk(lootStack, lootChance);
+ Utils.LOG_INFO("Added "+lootStack.getDisplayName()+" as extra Junk for Growthcraft Fishtraps.");
+ }
+ else if (lootType.equals(fishTypes[2])){
+ Growthcraft_New.addTrapTreasure(lootStack, lootChance);
+ Utils.LOG_INFO("Added "+lootStack.getDisplayName()+" as extra Treasure for Growthcraft Fishtraps.");
+ }
+ else {
+ return;
+ }
+ }*/
+
+ else {
+ Logger.INFO("Extra Fish loot for Growthcraft Fishtraps disabled. Found V."+LoadedMods.getModVersion("Growthcraft"));
+ }
+
+ }
+ //FishTrapHandler.pamsHarvestCraftCompat();
+ final static String prefix = "food";
+ final static String suffix = "raw";
+ final static String seaweed = "cropSeaweed";
+ final static String greenheartFish = "foodGreenheartfish";
+ private static final String[] harvestcraftFish = {
+ "Anchovy", "Bass", "Carp", "Catfish", "Charr", "Clam", "Crab", "Crayfish", "Eel", "Frog", "Grouper", "Herring",
+ "Jellyfish", "Mudfish", "Octopus", "Perch", "Scallop", "Shrimp", "Snail", "Snapper", "Tilapia", "Trout", "Tuna", "Turtle", "Walley"};
+ public static void pamsHarvestCraftCompat(){
+ for (int i = 0; i < harvestcraftFish.length; i++){
+ final String itemName = prefix+harvestcraftFish[i]+suffix;
+ final int lootChance = getLootChance(harvestcraftFish[i]);
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken(itemName, 1) != null){
+ //addFish("fish", ItemUtils.getItemStackOfAmountFromOreDict(itemName, 1), lootChance);
+ addGregtechMaceratorRecipe(ItemUtils.getItemStackOfAmountFromOreDict(itemName, 1));
+ addGregtechCentrifugeRecipe(ItemUtils.getItemStackOfAmountFromOreDict(itemName, 1));
+ addGregtechFluidRecipe(ItemUtils.getItemStackOfAmountFromOreDict(itemName, 1));
+ }
+ }
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken(greenheartFish, 1) != null){
+ //addFish("fish", ItemUtils.getItemStackOfAmountFromOreDict(greenheartFish, 1), getLootChance(greenheartFish));
+ addGregtechMaceratorRecipe(ItemUtils.getItemStackOfAmountFromOreDict(greenheartFish, 1));
+ addGregtechCentrifugeRecipe(ItemUtils.getItemStackOfAmountFromOreDict(greenheartFish, 1));
+ addGregtechFluidRecipe(ItemUtils.getItemStackOfAmountFromOreDict(greenheartFish, 1));
+ }
+ if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken(seaweed, 1) != null){
+ //addFish("junk", ItemUtils.getItemStackOfAmountFromOreDict(seaweed, 1), getLootChance(seaweed));
+ }
+ }
+
+ private static int getLootChance(final String name){
+ if (name.equals(harvestcraftFish[0])){
+ return 20;
+ }
+ else if (name.equals(harvestcraftFish[1])){
+ return 10;
+ }
+ else if (name.equals(harvestcraftFish[2])){
+ return 15;
+ }
+ else if (name.equals(harvestcraftFish[3])){
+ return 55;
+ }
+ else if (name.equals(harvestcraftFish[4])){
+ return 5;
+ }
+ else if (name.equals(harvestcraftFish[5])){
+ return 8;
+ }
+ else if (name.equals(harvestcraftFish[6])){
+ return 11;
+ }
+ else if (name.equals(harvestcraftFish[7])){
+ return 11;
+ }
+ else if (name.equals(harvestcraftFish[8])){
+ return 15;
+ }
+ else if (name.equals(harvestcraftFish[9])){
+ return 1;
+ }
+ else if (name.equals(harvestcraftFish[10])){
+ return 5;
+ }
+ else if (name.equals(harvestcraftFish[11])){
+ return 10;
+ }
+ else if (name.equals(harvestcraftFish[12])){
+ return 25;
+ }
+ else if (name.equals(harvestcraftFish[13])){
+ return 15;
+ }
+ else if (name.equals(harvestcraftFish[14])){
+ return 20;
+ } //"Perch", "Scallop", "Shrimp", "Snail", "Snapper", "Tilapia", "Trout", "Tuna", "Turtle", "Walleye"};
+ else if (name.equals(harvestcraftFish[15])){
+ return 22;
+ }
+ else if (name.equals(harvestcraftFish[16])){
+ return 10;
+ }
+ else if (name.equals(harvestcraftFish[17])){
+ return 35;
+ }
+ else if (name.equals(harvestcraftFish[18])){
+ return 3;
+ }
+ else if (name.equals(harvestcraftFish[19])){
+ return 20;
+ }
+ else if (name.equals(harvestcraftFish[20])){
+ return 4;
+ }
+ else if (name.equals(harvestcraftFish[21])){
+ return 40;
+ }
+ else if (name.equals(harvestcraftFish[22])){
+ return 30;
+ }
+ else if (name.equals(harvestcraftFish[23])){
+ return 5;
+ }
+ else if (name.equals(harvestcraftFish[24])){
+ return 8;
+ }
+ else {
+ return 25;
+ }
+ }
+
+ private static void addGregtechCentrifugeRecipe(final ItemStack input){
+ if (LoadedMods.Gregtech){
+ GT_Values.RA.addCentrifugeRecipe(input, null, null, FluidUtils.getFluidStack("methane", 96), null, null, null, null, null, null, null, 19*20, 5);
+ }
+ }
+
+ private static void addGregtechMaceratorRecipe(final ItemStack input){
+ if (LoadedMods.Gregtech){
+ GT_ModHandler.addPulverisationRecipe(input, ItemUtils.getItemStackOfAmountFromOreDict("dustMeatRaw", 1), ItemUtils.getItemStackOfAmountFromOreDict("dustTinyBone", 1), 0);
+ }
+ }
+
+ private static void addGregtechFluidRecipe(final ItemStack input){
+ if (LoadedMods.Gregtech){
+ if (CORE.GTNH) {
+ CORE.RA.addFluidExtractionRecipe(input, FluidUtils.getFluidStack("fishoil", 50), 16, 4);
+ }
+ else {
+ CORE.RA.addFluidExtractionRecipe(input, FluidUtils.getFluidStack("fishoil", 4), 16, 4); //4eu/t total eu used = 64 so time = 64/4
+ }
+ }
+ }
+
+}