So i have some code but when i want to use an BukkitRunnable it will give me lots of errors! And Some Sounds Dont work! Why? Code : Code:java package me.norbert.norbuland; import java.util.ArrayList; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.Location;import org.bukkit.Material;import org.bukkit.Sound;import org.bukkit.block.Block;import org.bukkit.entity.Arrow;import org.bukkit.entity.Entity;import org.bukkit.entity.LivingEntity;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.EventPriority;import org.bukkit.event.Listener;import org.bukkit.event.block.Action;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.entity.EntityDamageEvent;import org.bukkit.event.entity.PlayerDeathEvent;import org.bukkit.event.entity.ProjectileHitEvent;import org.bukkit.event.entity.EntityDamageEvent.DamageCause;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.event.player.PlayerMoveEvent;import org.bukkit.event.player.PlayerQuitEvent;import org.bukkit.event.player.PlayerToggleSneakEvent;import org.bukkit.inventory.Inventory;import org.bukkit.inventory.ItemStack;import org.bukkit.potion.PotionEffect;import org.bukkit.util.BlockIterator;import org.bukkit.util.Vector; public class shooterhouse implements Listener{ ArrayList<String> gunner = new ArrayList<String>(); ArrayList<String> jumpers = new ArrayList<String>(); ArrayList<String> level1 = new ArrayList<String>(); ArrayList<String> level2 = new ArrayList<String>(); ArrayList<String> level3 = new ArrayList<String>(); ArrayList<String> level4 = new ArrayList<String>(); ArrayList<String> level5 = new ArrayList<String>(); ItemStack upgrade = new ItemStack(Material.INK_SACK, 1, (short)10); @EventHandler public void onClick(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) { Player p = e.getPlayer(); if (gunner.contains(p.getName())) { if(p.getItemInHand().getType() == Material.FIREWORK_CHARGE) { p.playSound(p.getLocation(), Sound.BLAZE_HIT, 200, 3); Ammo(p); } } } } @EventHandler public void onClickUpgrade(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) { Player p = e.getPlayer(); if (gunner.contains(p.getName())) { p.playSound(p.getLocation(), Sound.BLAZE_HIT, 200, 3); if(p.getItemInHand().getType() == Material.INK_SACK) { if (gunner.contains(p.getName())) { p.getInventory().removeItem(new ItemStack(upgrade)); p.playSound(p.getLocation(), Sound.FIREWORK_LAUNCH, -200, 3); if (level1.contains(p.getName())) { level2.add(p.getName()); level1.remove(p.getName()); p.chat(ChatColor.GRAY+"Ik ben geupgrade naar lvl : "+ChatColor.GREEN+"2 "+ChatColor.GRAY+"In GunHouse!" ); p.playSound(p.getLocation(), Sound.FIREWORK_LAUNCH, -200, 3); } else if (level2.contains(p.getName())) { level3.add(p.getName()); level2.remove(p.getName()); p.playSound(p.getLocation(), Sound.FIREWORK_LAUNCH, -200, 3); p.chat(ChatColor.GRAY+"Ik ben geupgrade naar lvl : "+ChatColor.GREEN+"3 "+ChatColor.GRAY+"In GunHouse!" ); } else if (level3.contains(p.getName())) { level4.add(p.getName()); level3.remove(p.getName()); p.playSound(p.getLocation(), Sound.FIREWORK_LAUNCH, -200, 3); p.chat(ChatColor.GRAY+"Ik ben geupgrade naar lvl : "+ChatColor.GREEN+"4 "+ChatColor.GRAY+"In GunHouse!" ); } else if (level4.contains(p.getName())) { level5.add(p.getName()); level4.remove(p.getName()); p.playSound(p.getLocation(), Sound.ENDERMAN_DEATH, -200, 3); p.chat(ChatColor.GRAY+"Ik ben geupgrade naar lvl : "+ChatColor.GREEN+"5 "+ChatColor.GRAY+"In GunHouse!" ); } else if (level5.contains(p.getName())) { p.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.RED+" Je bent al in Kill Streak mode! "+ChatColor.DARK_GRAY+"[*]"); } } } } } } private void Ammo(Player p) { if (level1.contains(p.getName())) { Arrow ar = p.launchProjectile(Arrow.class); ar.setVelocity(p.getLocation().getDirection().multiply(1.8)); } else if (level2.contains(p.getName())) { Arrow ar = p.launchProjectile(Arrow.class); ar.setVelocity(p.getLocation().getDirection().multiply(2.4)); } else if (level3.contains(p.getName())) { Arrow ar = p.launchProjectile(Arrow.class); ar.setVelocity(p.getLocation().getDirection().multiply(3.2)); } else if (level4.contains(p.getName())) { Arrow ar = p.launchProjectile(Arrow.class); ar.setVelocity(p.getLocation().getDirection().multiply(4.1)); } else if (level5.contains(p.getName())) { Arrow ar = p.launchProjectile(Arrow.class); ar.setVelocity(p.getLocation().getDirection().multiply(5.0)); } }; @EventHandler public void onPlayerInteractWithGunner(PlayerInteractEvent event) { if (event.getAction().equals(Action.PHYSICAL)) { if (event.getClickedBlock().getType().equals(Material.STONE_PLATE)) { Location location = event.getClickedBlock().getLocation(); location.setY(location.getY()-1); if(location.getBlock().getType().equals(Material.EMERALD_BLOCK)){ event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.NOTE_PIANO, -200, 3); Player p = event.getPlayer(); p.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GRAY+" Ammo Loaded "+ChatColor.DARK_GRAY+"[*]"); gunner.add(p.getName()); level1.add(p.getName()); } } } } @EventHandler public void onPlayerInteractWithRemoveGunner(PlayerInteractEvent event) { if (event.getAction().equals(Action.PHYSICAL)) { if (event.getClickedBlock().getType().equals(Material.STONE_PLATE)) { Location location = event.getClickedBlock().getLocation(); location.setY(location.getY()-1); if(location.getBlock().getType().equals(Material.REDSTONE_BLOCK)){ event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.CLICK, 200, 3); Player p = event.getPlayer(); p.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GRAY+" Ammo Empty "+ChatColor.DARK_GRAY+"[*]"); gunner.remove(p.getName()); level1.remove(p.getName()); level2.remove(p.getName()); level3.remove(p.getName()); level4.remove(p.getName()); level5.remove(p.getName()); for (PotionEffect effect : p.getActivePotionEffects()) p.removePotionEffect(effect.getType()); } } } } @EventHandler public void onPlayerToggleSneakEvent(PlayerToggleSneakEvent event) { Player player = event.getPlayer(); if (gunner.contains(player.getName())) { if(player.isSneaking()) {player.setMaxHealth(6.00); player.setHealth(6.00); player.sendMessage(ChatColor.DARK_GRAY+"NorbuLand : "+ChatColor.GRAY+"Je bent uit Ghost Mode"); player.sendMessage(ChatColor.DARK_GRAY+"NorbuLand : "+ChatColor.GRAY+"Je hebt weer 3 Levens :)"); for(Player all : Bukkit.getServer().getOnlinePlayers()) { all.showPlayer(player); } } else { player.setMaxHealth(2.00); player.setHealth(2.00); player.sendMessage(ChatColor.DARK_GRAY+"NorbuLand : "+ChatColor.GRAY+"Je bent in Ghost Mode"); player.sendMessage(ChatColor.DARK_GRAY+"NorbuLand : "+ChatColor.GRAY+"Maar pas op! je hebt maar 1 Leven!"); for(Player all : Bukkit.getServer().getOnlinePlayers()) { all.hidePlayer(player); } } } } @SuppressWarnings("deprecation") @EventHandler public void onProjectileHit(ProjectileHitEvent event) { Entity entity = event.getEntity(); if (entity instanceof Arrow) { BlockIterator iterator = new BlockIterator(entity.getWorld(), entity.getLocation().toVector(), entity.getVelocity().normalize(), 0, 4); Block hitBlock = null; while(iterator.hasNext()) { hitBlock = iterator.next(); if(hitBlock.getTypeId()!=0) { break; } } entity.remove(); //remove arrow } } @EventHandler public void GunnerLeave(PlayerQuitEvent event){ Player p = event.getPlayer(); p.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GRAY+" Ammo Empty "+ChatColor.DARK_GRAY+"[*]"); gunner.remove(p.getName()); level1.remove(p.getName()); level2.remove(p.getName()); level3.remove(p.getName()); level4.remove(p.getName()); level5.remove(p.getName()); for (PotionEffect effect : p.getActivePotionEffects()) p.removePotionEffect(effect.getType()); } public int Timer = 30; @EventHandler (priority = EventPriority.LOW, ignoreCancelled = false) public void onArrowHit(EntityDamageByEntityEvent event) { Entity damaged = event.getEntity(); Entity damageEntity = event.getDamager(); if(damaged instanceof Player) if(damageEntity instanceof Arrow) { Arrow arrow = (Arrow)damageEntity; LivingEntity entityThrower = arrow.getShooter(); if(entityThrower instanceof Player) { Player ph = (Player)damaged; Player pt = (Player)entityThrower; Inventory pti = pt.getInventory(); ph.setHealth(00.00); pti.addItem(upgrade); ph.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.RED+"Je bent dood gegaan! Wreek je dood door "+pt.getName()+" Te doden!"+ChatColor.DARK_GRAY+"[*]"); if (gunner.contains(pt.getName())) { pt.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GREEN+" Pas op! volgens mij gaat "+ph.getName()+" Zijn dood door jou wreken!"+ChatColor.DARK_GRAY+"[*]"); pt.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GREEN+" Hallo daar! Ik ben een upgrade! Klik op mij om te upgraden! "+ChatColor.DARK_GRAY+"[*]"); if (ph.isSneaking()) { pt.sendMessage(ChatColor.DARK_GRAY+"[*]"+ChatColor.GRAY+" Je hebt een Ghost verslagen! "+ChatColor.DARK_GRAY+"[*]"); } } } } } @EventHandler(priority=EventPriority.LOW) public void onPlayerDeath(PlayerDeathEvent event) { Player p = event.getEntity(); gunner.remove(p.getName()); level1.remove(p.getName()); level2.remove(p.getName()); level3.remove(p.getName()); level4.remove(p.getName()); level5.remove(p.getName()); for (PotionEffect effect : p.getActivePotionEffects()) p.removePotionEffect(effect.getType()); } @EventHandler public void onPlayerMove(PlayerMoveEvent event) { Block below = event.getPlayer().getWorld().getBlockAt(event.getPlayer().getLocation().getBlockX(), event.getPlayer().getLocation().getBlockY() - 1, event.getPlayer().getLocation().getBlockZ()); Player p = event.getPlayer(); if (below.getType() == Material.BEDROCK){ if (gunner.contains(p.getName())) { Vector vector = p.getEyeLocation().getDirection(); vector.multiply(1.0F); vector.setY(2.0); p.setVelocity(vector); p.playSound(p.getLocation(), Sound.PISTON_EXTEND, -200, 3); jumpers.add(p.getName()); } } } @EventHandler public void onPlayerDamage(EntityDamageEvent e) { if (e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if (e.getCause() == DamageCause.FALL && jumpers.contains(p)) { e.setDamage(0.0); ParticleEffect.CRIT.display(p.getLocation(), (float) 0.2, (float) 0.2, (float) 0.2, 1, 5); ParticleEffect.HAPPY_VILLAGER.display(p.getLocation(), (float) 0.2, (float) 0.2, (float) 0.2, 1, 5); p.playSound(p.getLocation(), Sound.STEP_SAND, 1, -100); jumpers.remove(p.getName()); } } }}
Code:java @EventHandler public void onClick(PlayerInteractEvent e) { if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) { Player p = e.getPlayer(); if (gunner.contains(p.getName())) { if(p.getItemInHand().getType() == Material.FIREWORK_CHARGE) { p.playSound(p.getLocation(), Sound.BLAZE_HIT, 200, 3); Ammo(p); new BukkitRunnable { @Override public void run() { plugin.getServer().broadcastMessage( "here are the errors at plugin . and new"); } }.runTaskLater(this.plugin, 20); } } } } syntax error on token "." delete this token plugin can not be resolved or is not a field syntax error on token "new" , interface expected
FYI, I ran into a similar problem. I found the example for an anonymous class at http://wiki.bukkit.org/Scheduler_Programming had a mistake in it. The line where you create it had: Code: new BukkitRunnable { where it should read: Code: new BukkitRunnable() { It was missing parentheses in the constructor, and that caused the error you reported: Code: syntax error on token "new" , interface expected Your code in the second code section of this thread has the exact same problem, so I am guessing you based your code on that wiki page. I have since then edited that page, correcting the mistake, so future people won't have the same problem.