package minefantasy.mf2.farming; import java.util.Random; import minefantasy.mf2.api.MineFantasyAPI; import minefantasy.mf2.api.farming.CustomHoeEntry; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class FarmingHelper { private static Random rand = new Random(); private static float hoeFailChanceModifier = 1.0F; public static boolean isEnabled = true; public static float hoeFailChanceCfg = 1.0F; public static float farmBreakCfg = 1.0F; public static boolean didHoeFail(ItemStack hoe, World world, boolean grass) { if(!isEnabled) { return false; } float chanceMax = 30F*hoeFailChanceModifier*hoeFailChanceCfg; float chance = rand.nextFloat()*chanceMax; float efficiency = (getHoeEfficiency(hoe)*(grass ? 2.0F : 3.0F)); MineFantasyAPI.debugMsg("Hoe Chance Fail = " + chance + " / " + efficiency + " (max= " + chanceMax + ")"); return chance > efficiency;//Dirt is easier to hoe } public static boolean didHarvestRuinBlock(World world, boolean scythe) { if(!isEnabled) { return false; } float chance = 20F + (world.difficultySetting.getDifficultyId()*10F); if(scythe)chance *= 2F; return rand.nextFloat()*100F <= chance*farmBreakCfg ; } private static float getHoeEfficiency(ItemStack hoe) { if(hoe != null) { if(hoe.getItem() instanceof ItemHoe) { String name = ((ItemHoe)hoe.getItem()).getToolMaterialName(); ToolMaterial mat = ToolMaterial.valueOf(name); if(mat != null) { return CustomHoeEntry.getEntryEfficiency(hoe, mat.getEfficiencyOnProperMaterial()); } } } return CustomHoeEntry.getEntryEfficiency(hoe, 6.0F); } }