All Downloads are FREE. Search and download functionalities are using the official Maven repository.

think.rpgitems.power.impl.Arrows Maven / Gradle / Ivy

There is a newer version: 3.12.2
Show newest version
package think.rpgitems.power.impl;

import org.bukkit.Sound;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import think.rpgitems.Events;
import think.rpgitems.I18n;
import think.rpgitems.power.*;

import static think.rpgitems.power.Utils.checkCooldown;

/**
 * Power arrow.
 * 

* The arrow power will fire an arrow on right click. *

*/ @Meta(defaultTrigger = "RIGHT_CLICK", generalInterface = PowerPlain.class, implClass = Arrows.Impl.class) public class Arrows extends BasePower { @Property(order = 0) public int cooldown = 0; @Property public int cost = 0; /** * Cost of this power */ public int getCost() { return cost; } @Override public String getName() { return "arrow"; } @Override public String displayText() { return I18n.formatDefault("power.arrow", (double) getCooldown() / 20d); } /** * Cooldown time of this power */ public int getCooldown() { return cooldown; } public class Impl implements PowerRightClick, PowerLeftClick, PowerPlain { @Override public PowerResult rightClick(Player player, ItemStack stack, PlayerInteractEvent event) { return fire(player, stack); } @Override public PowerResult fire(Player player, ItemStack stack) { if (!checkCooldown(getPower(), player, getCooldown(), true, true)) return PowerResult.cd(); if (!getItem().consumeDurability(stack, getCost())) return PowerResult.cost(); player.playSound(player.getLocation(), Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f); Events.registerRPGProjectile(getPower().getItem(), stack, player); Arrow arrow = player.launchProjectile(org.bukkit.entity.Arrow.class); arrow.setPickupStatus(org.bukkit.entity.Arrow.PickupStatus.DISALLOWED); Events.autoRemoveProjectile(arrow.getEntityId()); arrow.setPersistent(false); return PowerResult.ok(); } @Override public Power getPower() { return Arrows.this; } @Override public PowerResult leftClick(Player player, ItemStack stack, PlayerInteractEvent event) { return fire(player, stack); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy