package mineplex.game.clans.items.legendaries; import mineplex.game.clans.items.generation.ValueDistribution; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; public class HyperBlade extends LegendaryItem { public static final long ATTACK_RATE_DURATION = 100; private static ValueDistribution amountGen = generateDistribution(0, 3); // [1, 4] speed amount private static ValueDistribution durationGen = generateDistribution(80, 320); // [4, 16] seconds speed duration private int _speedAmount; private int _speedDuration; private long _lastAttack; public long timeSinceLastAttack() { return System.currentTimeMillis() - _lastAttack; } public HyperBlade() { super("Hyper Blade", "Increased attack speed!", Material.STICK); _speedAmount = amountGen.generateIntValue(); _speedDuration = durationGen.generateIntValue(); _lastAttack = 0; } @Override public void update(Player wielder) { if (isHoldingRightClick() && canBuff()) { buffPlayer(wielder); } } @Override public void onAttack(CustomDamageEvent event, Player wielder) { if (timeSinceLastAttack() >= ATTACK_RATE_DURATION) { event.SetIgnoreRate(true); log("Ignoring rate!"); } } private void buffPlayer(Player wielder) { // Give player speed buff wielder.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, _speedDuration, _speedAmount)); log("Buffing"); } private boolean canBuff() { return true; // TODO: Implement cooldown? (None specified in docs, sounds OP) } }