diff options
author | iouter <62897714+iouter@users.noreply.github.com> | 2022-01-07 12:36:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-07 12:36:06 +0800 |
commit | 0834d4b8b45a881f36ed5b295ac0fb38df49fa9a (patch) | |
tree | 6fb4a45cf17dd22748148417bc7bb0efb850cea3 /src/main/java/gtPlusPlus/xmod/growthcraft/fishtrap/FishTrapHandler.java | |
parent | ea1439a4195c8f77c45625ea2593a232bf19984e (diff) | |
parent | 9b2e050151ad93170e84321d067d1e9d4ded4ba5 (diff) | |
download | GT5-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.java | 232 |
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 + } + } + } + +} |