package minefantasy.system; import java.util.EnumSet; import java.util.Random; import minefantasy.MineFantasyBase; import minefantasy.item.ItemBloom; import minefantasy.item.ItemHotItem; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraftforge.common.ForgeDirection; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; public class ArmourTickHandlerMF implements ITickHandler { Random rand = new Random(); @Override public void tickStart(EnumSet<TickType> type, Object... tickData) { // TODO Auto-generated method stub } @Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { if (cfg.disableWeight || !type.contains(TickType.PLAYER)) return; EntityLivingBase user = (EntityLivingBase) tickData[0]; if (user != null) { if(user.onGround) { float speedMod = CombatManager.getMovementSpeedModifier(user); if(!(cfg.disableWeight && speedMod < 1.0F)) { float speed = speedMod; user.motionX *= speed; user.motionZ *= speed; } } } int sprint = CombatManager.getAntisprintArmours(user); if(!cfg.disableWeight && sprint > 0 && user.isSprinting()) { if(user instanceof EntityPlayer) { float exhaust = MineFantasyBase.scaleExhaustion(0.01F*sprint); ((EntityPlayer)user).addExhaustion(exhaust); } user.moveStrafing += (user.getRNG().nextFloat()*10F) -5F; } double speed = Math.hypot(user.motionX, user.motionZ); if(speed > 0.01D && CombatManager.getAntisprintArmours(user) > 0) { float volume = 0.05F * CombatManager.getAntisprintArmours(user); if(rand.nextInt(20) == 0) { user.playSound("mob.irongolem.throw", volume, 1.0F); } } if(user.isInWater() && !user.worldObj.isBlockSolidOnSide((int)Math.round(user.posX), (int)user.posY-2, (int)Math.round(user.posZ), ForgeDirection.UP)) { float spd = CombatManager.getMovementSpeedModifier(user); if(spd < 1.0F) { float sink = 0.01F * (1F/spd); user.motionX *= spd; user.motionZ *= spd; } } } @Override public EnumSet<TickType> ticks() { return EnumSet.of(TickType.PLAYER); } @Override public String getLabel() { return "Armour Tick Handler"; } }