diff options
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/witchery')
-rw-r--r-- | src/main/java/gtPlusPlus/xmod/witchery/WitchUtils.java | 159 |
1 files changed, 81 insertions, 78 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/witchery/WitchUtils.java b/src/main/java/gtPlusPlus/xmod/witchery/WitchUtils.java index 35f9f4bbe8..b1e01eab7f 100644 --- a/src/main/java/gtPlusPlus/xmod/witchery/WitchUtils.java +++ b/src/main/java/gtPlusPlus/xmod/witchery/WitchUtils.java @@ -1,13 +1,11 @@ package gtPlusPlus.xmod.witchery; -import java.lang.reflect.Field; -import java.util.ArrayList; - import com.mojang.authlib.GameProfile; - import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.material.ALLOY; import gtPlusPlus.core.util.reflect.ReflectionUtils; +import java.lang.reflect.Field; +import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; @@ -15,85 +13,90 @@ import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.oredict.OreDictionary; public class WitchUtils { - - private static final GameProfile NORMAL_MINER_PROFILE; - private static final GameProfile KOBOLDITE_MINER_PROFILE; - - static { - Field a1 = null, a2 = null; - GameProfile b1 = null, b2 = null; - if (LoadedMods.Witchery) { - try { - a1 = getField("com.emoniph.witchery.entity.ai.EntityAIDigBlocks", "NORMAL_MINER_PROFILE"); - a2 = getField("com.emoniph.witchery.entity.ai.EntityAIDigBlocks", "KOBOLDITE_MINER_PROFILE"); - b1 = (GameProfile) a1.get(null); - b2 = (GameProfile) a2.get(null); - } - catch (Throwable t) { - } - } - NORMAL_MINER_PROFILE = b1; - KOBOLDITE_MINER_PROFILE = b2; - } - - //com.emoniph.witchery.entity.ai.EntityAIDigBlocks.onHarvestDrops(EntityPlayer, HarvestDropsEvent) - public static void onHarvestDrops(final EntityPlayer harvester, final BlockEvent.HarvestDropsEvent event) { + private static final GameProfile NORMAL_MINER_PROFILE; + private static final GameProfile KOBOLDITE_MINER_PROFILE; - if (LoadedMods.Witchery) { + static { + Field a1 = null, a2 = null; + GameProfile b1 = null, b2 = null; + if (LoadedMods.Witchery) { + try { + a1 = getField("com.emoniph.witchery.entity.ai.EntityAIDigBlocks", "NORMAL_MINER_PROFILE"); + a2 = getField("com.emoniph.witchery.entity.ai.EntityAIDigBlocks", "KOBOLDITE_MINER_PROFILE"); + b1 = (GameProfile) a1.get(null); + b2 = (GameProfile) a2.get(null); + } catch (Throwable t) { + } + } + NORMAL_MINER_PROFILE = b1; + KOBOLDITE_MINER_PROFILE = b2; + } - if (harvester != null && !harvester.worldObj.isRemote && !event.isCanceled() && (isEqual(harvester.getGameProfile(), KOBOLDITE_MINER_PROFILE) || isEqual(harvester.getGameProfile(), NORMAL_MINER_PROFILE))) { - final boolean hasKobolditePick = isEqual(harvester.getGameProfile(), KOBOLDITE_MINER_PROFILE); - final ArrayList<ItemStack> newDrops = new ArrayList<ItemStack>(); - double kobolditeChance = hasKobolditePick ? 0.02 : 0.01; - for (final ItemStack drop : event.drops) { - final int[] oreIDs = OreDictionary.getOreIDs(drop); - boolean addOriginal = true; - if (oreIDs.length > 0) { - final String oreName = OreDictionary.getOreName(oreIDs[0]); - if (oreName != null && oreName.startsWith("ore")) { - final ItemStack smeltedDrop = FurnaceRecipes.smelting().getSmeltingResult(drop); - if (smeltedDrop != null && hasKobolditePick && harvester.worldObj.rand.nextDouble() < 0.5) { - addOriginal = false; - newDrops.add(smeltedDrop.copy()); - newDrops.add(smeltedDrop.copy()); - if (harvester.worldObj.rand.nextDouble() < 0.25) { - newDrops.add(smeltedDrop.copy()); - } - } - kobolditeChance = (hasKobolditePick ? 0.08 : 0.05); - } - } - if (addOriginal) { - newDrops.add(drop); - } - } - event.drops.clear(); - for (final ItemStack newDrop : newDrops) { - event.drops.add(newDrop); - } - if (kobolditeChance > 0.0 && harvester.worldObj.rand.nextDouble() < kobolditeChance) { - event.drops.add(ALLOY.KOBOLDITE.getDust(1)); - } - } - } + // com.emoniph.witchery.entity.ai.EntityAIDigBlocks.onHarvestDrops(EntityPlayer, HarvestDropsEvent) + public static void onHarvestDrops(final EntityPlayer harvester, final BlockEvent.HarvestDropsEvent event) { - } + if (LoadedMods.Witchery) { - public static Field getField(String aClassName, String aFieldName) { - Class c; - c = ReflectionUtils.getClass(aClassName); - if (c != null) { - Field f = ReflectionUtils.getField(c, aFieldName); - if (f != null) { - return f; - } - } - return null; - } + if (harvester != null + && !harvester.worldObj.isRemote + && !event.isCanceled() + && (isEqual(harvester.getGameProfile(), KOBOLDITE_MINER_PROFILE) + || isEqual(harvester.getGameProfile(), NORMAL_MINER_PROFILE))) { + final boolean hasKobolditePick = isEqual(harvester.getGameProfile(), KOBOLDITE_MINER_PROFILE); + final ArrayList<ItemStack> newDrops = new ArrayList<ItemStack>(); + double kobolditeChance = hasKobolditePick ? 0.02 : 0.01; + for (final ItemStack drop : event.drops) { + final int[] oreIDs = OreDictionary.getOreIDs(drop); + boolean addOriginal = true; + if (oreIDs.length > 0) { + final String oreName = OreDictionary.getOreName(oreIDs[0]); + if (oreName != null && oreName.startsWith("ore")) { + final ItemStack smeltedDrop = + FurnaceRecipes.smelting().getSmeltingResult(drop); + if (smeltedDrop != null && hasKobolditePick && harvester.worldObj.rand.nextDouble() < 0.5) { + addOriginal = false; + newDrops.add(smeltedDrop.copy()); + newDrops.add(smeltedDrop.copy()); + if (harvester.worldObj.rand.nextDouble() < 0.25) { + newDrops.add(smeltedDrop.copy()); + } + } + kobolditeChance = (hasKobolditePick ? 0.08 : 0.05); + } + } + if (addOriginal) { + newDrops.add(drop); + } + } + event.drops.clear(); + for (final ItemStack newDrop : newDrops) { + event.drops.add(newDrop); + } + if (kobolditeChance > 0.0 && harvester.worldObj.rand.nextDouble() < kobolditeChance) { + event.drops.add(ALLOY.KOBOLDITE.getDust(1)); + } + } + } + } - public static boolean isEqual(final GameProfile a, final GameProfile b) { - return a != null && b != null && a.getId() != null && b.getId() != null && a.getId().equals(b.getId()); - } + public static Field getField(String aClassName, String aFieldName) { + Class c; + c = ReflectionUtils.getClass(aClassName); + if (c != null) { + Field f = ReflectionUtils.getField(c, aFieldName); + if (f != null) { + return f; + } + } + return null; + } + public static boolean isEqual(final GameProfile a, final GameProfile b) { + return a != null + && b != null + && a.getId() != null + && b.getId() != null + && a.getId().equals(b.getId()); + } } |