package main.dk.qpqp.items.grenades; import main.dk.qpqp.McAssault; import main.dk.qpqp.items.CustomItemStack; import main.dk.qpqp.items.ItemList; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.entity.TNTPrimed; import org.bukkit.inventory.ItemStack; /** * This is the basic structure of all weapons * @author Viktor * */ public abstract class Grenade extends CustomItemStack { public long delay = 40L; // The delay in minecraft ticks, it takes to trigger the grenade public Grenade(ItemStack itemStack, ItemList itemList) { super(itemStack, itemList); } public void throwGrenade(final Player player){ Location loc = player.getEyeLocation().toVector().add(player.getLocation() .getDirection().multiply(2)) .toLocation(player.getWorld(), player.getLocation().getYaw(), player.getLocation().getPitch()); ItemStack itemStack = super.getItemStack(); ItemStack itemGrenade = new ItemStack(itemStack.getType()); itemGrenade.setData(super.getItemStack().getData()); final Item grenade = player.getWorld().dropItem(loc, itemGrenade); grenade.setVelocity(player.getLocation().getDirection().multiply(2)); grenade.setPickupDelay(999999); if(player.getItemInHand().getAmount()==1){ player.setItemInHand(new ItemStack(Material.AIR, 1)); } else { ItemStack itemInHand = player.getItemInHand(); itemInHand.setAmount(itemInHand.getAmount()-1); player.setItemInHand(itemInHand); } // Makes a delay of the delay variable, and triggers the grenade McAssault.plugin.getServer().getScheduler().scheduleSyncDelayedTask(McAssault.plugin, new Runnable() { @Override public void run() { trigger(player, grenade); } }, delay); } public void trigger(Player player, Item grenade){ // Spawns a new entity, and stores it in variable tnt Entity tnt = player.getWorld().spawnEntity(grenade.getLocation(), EntityType.PRIMED_TNT); // Removes the grenade item grenade.remove(); // Makes the tnt entity explode immediately ((TNTPrimed) tnt).setFuseTicks(0); } }