Entity Servershutdown bug

Discussion in 'Plugin Help/Development/Requests' started by maxecito, Apr 23, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    maxecito

    Hey guys.
    Just updated my plugin, everything I added is the code below. Now my server keeps crashing after ~ 10 seconds, when I unload my plugin it works. There is a known 1.8 entity bug, so could any1 tell me how to fix this issue?

    Code:
    
    this.getServer().getScheduler().runTaskLater(this, new Runnable() {
    
             @Override
             public void run() {
               Location loc = p.getLocation();
               loc.setX(-160);
               loc.setY(65);
               loc.setZ(62);
               Villager starter_villager_elf = loc.getWorld().spawn(loc,
                   Villager.class);
    
               starter_villager_elf
                   .setProfession(Villager.Profession.LIBRARIAN);
               starter_villager_elf.setCustomName("§a§lGaladriel");
               starter_villager_elf.setCustomNameVisible(true);
               starter_villager_elf.setAdult();
               starter_villager_elf.setAgeLock(true);
               starter_villager_elf.addPotionEffect(new PotionEffect(
                   PotionEffectType.SLOW, 100000000, 100));
    
             }
           }, 50L);
    

    Thanks,
    -Maxe.
     
  2. Offline

    Koobaczech

    Hey bud post the console error/shutdown code?
     
  3. Offline

    maxecito

    @Koobaczech It is shutdowned by watchdog:
    Code:
    2015-07-26 21:06:11 [Server Watchdog/FATAL]: A single server tick took 60.00 seconds (should be max 0.05)
    2015-07-26 21:06:11 [Server Watchdog/FATAL]: Considering it to be crashed, server will forcibly shutdown.
    
    
    (Not my report, but the same message. Too lazy to crash my server again p:

    Works when I remove my plugin.
    Even WORKS when I remove the code I added.
    Strange.
     
  4. Offline

    Koobaczech

    This might have something to do with it?
    Code:
    Location loc = p.getLocation();
    Maybe the code is called and it doesn't know what player to get? Or something could be wrong here
    Code:
    Villager starter_villager_elf = loc.getWorld().spawn(loc,
                   Villager.class);
    Try spawning a villager at a static location just to test if the server goes down when it gets spawned. Sorry i can't be of more help!
     
  5. Offline

    maxecito

    @Koobaczech np, I used the code before with p.getLocation().
    worked fine every time.

    I spawned the villager this way at the players location
    worked fine every time.

    The problem has to do with the Scheduler, I simply know it.
     
  6. Moved to Bukkit Alternates.
     
  7. Offline

    Koobaczech

    Then maybe try to do this
    Code:
    Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() 
    instead of runtasklater? So
    Code:
    this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
             @Override
             public void run() {
               Location loc = p.getLocation();
               loc.setX(-160);
               loc.setY(65);
               loc.setZ(62);
               Villager starter_villager_elf = loc.getWorld().spawn(loc,
                   Villager.class);
               starter_villager_elf
                   .setProfession(Villager.Profession.LIBRARIAN);
               starter_villager_elf.setCustomName("§a§lGaladriel");
               starter_villager_elf.setCustomNameVisible(true);
               starter_villager_elf.setAdult();
               starter_villager_elf.setAgeLock(true);
               starter_villager_elf.addPotionEffect(new PotionEffect(
                   PotionEffectType.SLOW, 100000000, 100));
             }
           }, 50L);
     
  8. Offline

    maxecito

    @Koobaczech Will try that one
    But now it isnt even working with an older version of the plugin, Bukkit is strange sometimes
     
  9. Offline

    Koobaczech

    Yea it gets frustrating sometimes! haha
     
  10. Offline

    maxecito

    @Koobaczech
    Wow. When I use your code, it shutsdown after ~ 1 sec :3
    I don't know what the hell I did wrong...

    So what happens:
    Ticks are behind (for whatever reason)
    Watchdog kills Server
     
    Last edited by a moderator: Apr 23, 2015
  11. Offline

    Koobaczech

    lmao. paste the whole code you have written and il mess with it
     
  12. Offline

    maxecito

    @Koobaczech You dont want that code :p It is terrible, false variable names, etc...
    Im learning Java while doing this, but if you want....
    Main:
    Code:
    package at.skyblock.main;
    
    import java.io.File;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.ExperienceOrb;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Villager;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityTargetEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class Main extends JavaPlugin implements Listener {
    
       public void onEnable() {
    
         this.getConfig().set("RPG.villagerspawn", "false");
         PluginManager pm = getServer().getPluginManager();
         pm.registerEvents(new Events(this), this);
         pm.registerEvents(this, this);
         String fileName = getDataFolder()
             + System.getProperty("file.separator") + "config.yml";
         File file = new File(fileName);
         if (!file.exists()) {
           loadConfiguration();
         }
    
       }
    
       @Override
       public void onDisable() {
         saveConfig();
    
         Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
             "kill @e[type=Villager]");
       }
    
       public void loadConfiguration() {
    
         final FileConfiguration config = this.getConfig();
         config.options().copyDefaults(true);
         saveDefaultConfig();
    
       }
    
       public boolean onCommand(CommandSender sender, Command cmd,
           String commandLabel, String[] args) {
         Player p = (Player) sender;
         if (cmd.getName().equalsIgnoreCase("resetskills")) {
           getConfig().set("RPG.levelups." + p.getName() + ".mobility", 0);
           getConfig().set("RPG.levelups." + p.getName() + ".trickshot", 0);
           return true;
    
         } else if (cmd.getName().equalsIgnoreCase("perks")) {
           p.sendMessage("Trickshot: "
               + getConfig().getInt(
                   "RPG.levelups." + p.getName() + ".trickshot"));
           p.setLevel(0);
    
         }
    
         return false;
       }
    
       @EventHandler
       public void onPlayerJoin(PlayerJoinEvent event) {
         final Player p = event.getPlayer();
         p.setHealthScale(20);
    
         Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
    
           @Override
           public void run() {
    
             p.openInventory(Tribe_inventory.tribe_selector);
           }
    
         }, 20L);
         p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 100000,
             9));
         p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 100000, 100));
         p.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD
             + "Succesfully chose the "
             + getConfig().getString("RPG.folk." + p.getName())
             + " tribe, as "
             + getConfig().getString("RPG.folk.class." + p.getName()));
         if (getConfig().getBoolean("RPG.villagerspawn") == false) {
           getConfig().set("RPG.villagerspawn", true);
    
           this.getServer().getScheduler()
               .scheduleSyncDelayedTask(this, new Runnable() {
                 @Override
                 public void run() {
                   Location loc = p.getLocation();
                   loc.setX(-160);
                   loc.setY(65);
                   loc.setZ(62);
                   Villager starter_villager_elf = loc.getWorld()
                       .spawn(loc, Villager.class);
                   starter_villager_elf
                       .setProfession(Villager.Profession.LIBRARIAN);
                   starter_villager_elf.setCustomName("§a§lGaladriel");
                   starter_villager_elf.setCustomNameVisible(true);
                   starter_villager_elf.setAdult();
                   starter_villager_elf.setAgeLock(true);
                   starter_villager_elf
                       .addPotionEffect(new PotionEffect(
                           PotionEffectType.SLOW, 100000000,
                           100));
                 }
               }, 50L);
    
         } else if (getConfig().getBoolean("RPG.villagerspawn") == true) {
           p.sendMessage("Villagerspawn done");
         }
    
         if (!p.hasPlayedBefore()) {
           p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,
               100000, 9));
           p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 100000,
               100));
    
           p.openInventory(at.skyblock.main.Tribe_inventory.tribe_selector);
           this.getConfig().set("RPG.folk." + p.getName(), "");
           this.getConfig().set("RPG.folk.class" + p.getName(), "");
           this.getConfig().set("RPG." + p.getName() + ".level", p.getLevel());
    
         }
       }
    
       @EventHandler
       public void onEntityTarget(EntityTargetEvent ev) {
         Entity e = ev.getEntity();
         if (e instanceof ExperienceOrb) {
           ev.setCancelled(true);
           ev.setTarget(null);
         }
       }
    
    }
    
    Events:
    Code:
    package at.skyblock.main;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Villager;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryOpenEvent;
    import org.bukkit.event.player.PlayerInteractEntityEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerLevelChangeEvent;
    import org.bukkit.event.player.PlayerMoveEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class Events implements Listener {
    
       Main plugin;
       public boolean villager_spawned = false;
    
       public Events(Main instance) {
         plugin = instance;
       }
    
       private int skilltokens;
    
       @EventHandler
       public void onQuit(PlayerQuitEvent e) {
         skilltokens = plugin.getConfig().getInt("");
       }
    
       @EventHandler
       public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
         Player p = event.getPlayer();
         Entity entity = event.getRightClicked();
         if ((entity instanceof Villager))
           event.setCancelled(true);
    
         if (entity.getCustomName().equals("§a§lGaladriel")) {
           if (plugin.getConfig().getBoolean("RPG.quests.elf." + p.getName()) == false) {
             p.sendMessage(ChatColor.GRAY + "[Quest started]");
             p.sendMessage(ChatColor.GRAY + "[1/5] " + ChatColor.DARK_GREEN
                 + "My village! Orcs are invading it!");
             p.sendMessage(ChatColor.GRAY + "[2/5] " + ChatColor.DARK_GREEN
                 + "I were able to escape, but...");
             p.sendMessage(ChatColor.GRAY + "[3/5] " + ChatColor.DARK_GREEN
                 + "our Precious. It is stored in the clocktower!");
             p.sendMessage(ChatColor.GRAY + "[4/5] " + ChatColor.DARK_GREEN
                 + "Please, help me out... Take it to me!");
             p.sendMessage(ChatColor.GRAY
                 + "[5/5] "
                 + ChatColor.DARK_GREEN
                 + "It is on the top-floor of the clocktower... find it!");
    
             plugin.getConfig().set(
                 "RPG.quests.human." + p.getName() + ".starter", true);
           } else {
             p.sendMessage(ChatColor.RED
                 + "You've already started/done this quest!");
           }
         }
         return;
    
       }
    
       @EventHandler(priority = EventPriority.HIGH)
       public void onPlayerUse(PlayerInteractEvent event) {
         Player p = event.getPlayer();
    
         if (p.getItemInHand().getType() == Material.CHEST) {
           event.setCancelled(true);
           p.openInventory(Elf_levelup.levelup_elf);
         }
       }
    
       @EventHandler
       public void onInventoryClickTribe(InventoryClickEvent event) {
         Player p = (Player) event.getWhoClicked();
         ItemStack clicked = event.getCurrentItem();
         org.bukkit.inventory.Inventory inventory = event.getInventory();
         if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.BOW)) {
           plugin.getConfig().set("RPG.folk." + p.getName(), "elf");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
    
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.IRON_AXE)) {
    
           plugin.getConfig().set("RPG.folk." + p.getName(), "orc");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
    
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.ANVIL)) {
    
           plugin.getConfig().set("RPG.folk." + p.getName(), "dwarf");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
         } else if ((inventory.getName().equals(Tribe_inventory.tribe_selector
             .getName())) && (clicked.getType() == Material.NETHER_STAR)) {
           plugin.getConfig().set("RPG.folk." + p.getName(), "demon");
           event.setCancelled(true);
           p.closeInventory();
           p.openInventory(Class_inventory.class_selector);
         }
       }
    
       @SuppressWarnings("unused")
       @EventHandler
       public void onInventoryClickClass(InventoryClickEvent event) {
    
         // ITEMS
         // OAKWOOD ELVEN-BOW
         ItemStack elf_bow = new ItemStack(Material.BOW, 1);
         elf_bow.addEnchantment(Enchantment.ARROW_INFINITE, 1);
         ItemMeta elf_bow_meta = elf_bow.getItemMeta();
         elf_bow_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Oakwood elven-bow");
         ArrayList<String> lore = new ArrayList<String>();
         lore.add(ChatColor.AQUA + "Damage: 3-5");
         lore.add(ChatColor.AQUA + "Requires no Level");
         lore.add(ChatColor.AQUA + "Rarity: " + ChatColor.GREEN + "Common");
         elf_bow_meta.setLore(lore);
         elf_bow.setItemMeta(elf_bow_meta);
         // Hunter bow
         ItemStack hunterbow = new ItemStack(Material.BOW, 1);
         hunterbow.addEnchantment(Enchantment.ARROW_INFINITE, 1);
         ItemMeta hunterbow_meta = hunterbow.getItemMeta();
         hunterbow_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Oakwood Hunterbow");
         ArrayList<String> lore1 = new ArrayList<String>();
         lore1.add(ChatColor.AQUA + "Damage: 2-3");
         lore1.add(ChatColor.AQUA + "Requires no Level");
         lore1.add(ChatColor.AQUA + "Rarity: " + ChatColor.GREEN + "Common");
         hunterbow_meta.setLore(lore1);
         hunterbow.setItemMeta(hunterbow_meta);
         //
         // OAKWOOD ORC-AXE
         ItemStack orc_axe = new ItemStack(Material.IRON_AXE, 1);
         ItemMeta orc_axe_meta = orc_axe.getItemMeta();
         orc_axe_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Oakwood Orc-axe");
         ArrayList<String> lore2 = new ArrayList<String>();
         lore2.add(ChatColor.AQUA + "Damage: 4-6");
         lore2.add(ChatColor.AQUA + "Requires no Level");
         lore2.add(ChatColor.AQUA + "Rarity: " + ChatColor.GREEN + "Common");
         orc_axe_meta.setLore(lore2);
         orc_axe.setItemMeta(orc_axe_meta);
    
         // LEATHER TEST DEFENCE (REMOVE AFTER TEST)
         ItemStack orc_axe2 = new ItemStack(Material.LEATHER_CHESTPLATE, 1);
         ItemMeta orc_axe_meta2 = orc_axe2.getItemMeta();
         orc_axe_meta2.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + ChatColor.GREEN + "Simple Tunic");
         ArrayList<String> lore3 = new ArrayList<String>();
         lore3.add(ChatColor.AQUA + "+10 Health");
         orc_axe_meta2.setLore(lore3);
         orc_axe2.setItemMeta(orc_axe_meta2);
    
         // ####################
         Player p = (Player) event.getWhoClicked();
         World w = p.getWorld();
    
         // LOCATIONS
         Location elf_loc = new Location(w, -196, 64, 244);
         Location orc_loc = new Location(w, -196, 64, 244);
         Location dwarf_loc = new Location(w, -196, 64, 244);
         Location demon_loc = new Location(w, -196, 64, 244);
         // #########################
         ItemStack elf_levelupchest = new ItemStack(Material.CHEST);
         ItemMeta elf_levelupchest_meta = elf_levelupchest.getItemMeta();
         elf_levelupchest_meta.setDisplayName(ChatColor.GOLD + ""
             + ChatColor.BOLD + "Levelup Skills");
    
         elf_levelupchest.setItemMeta(elf_levelupchest_meta);
    
         ItemStack clicked = event.getCurrentItem();
         org.bukkit.inventory.Inventory inventory = event.getInventory();
         if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.BLAZE_POWDER)) {
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "mage");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
    
             p.getInventory().setItem(0, elf_bow);
             p.getInventory().setItem(8, new ItemStack(Material.ARROW));
             p.getInventory().setChestplate(orc_axe2);
             p.getInventory().setItem(7, elf_levelupchest);
    
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
    
             p.getInventory().setItem(0, orc_axe);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("demon")) {
    
             // p.teleport(demon_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
           event.setCancelled(true);
           p.closeInventory();
    
         } else if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.SAPLING)) {
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "shaman");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
           event.setCancelled(true);
           p.closeInventory();
         } else if ((inventory.getName().equals(Class_inventory.class_selector
             .getName())) && (clicked.getType() == Material.IRON_SWORD)) {
           event.setCancelled(true);
           p.closeInventory();
           plugin.getConfig().set("RPG.folk.class." + p.getName(), "warrior");
    
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("elf")) {
    
             // p.teleport(elf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("dwarf")) {
    
             // p.teleport(dwarf_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("orc")) {
    
             // p.teleport(orc_loc);
           }
           if (plugin.getConfig().getString("RPG.folk." + p.getName())
               .equals("demon")) {
    
             // p.teleport(demon_loc);
           }
    
           p.removePotionEffect(PotionEffectType.BLINDNESS);
           p.removePotionEffect(PotionEffectType.SLOW);
           p.sendMessage(ChatColor.GREEN
               + ""
               + ChatColor.BOLD
               + "Succesfully chose the "
               + plugin.getConfig().getString("RPG.folk." + p.getName())
               + " tribe, as "
               + plugin.getConfig().getString(
                   "RPG.folk.class." + p.getName()));
    
         }
         if ((inventory.getName().equals(Elf_levelup.levelup_elf.getName()))
             && (clicked.getType() == Material.BOW)) {
           event.setCancelled(true);
           skilltokens--;
           plugin.getConfig().set("RPG." + p.getName() + ".skilltokens",
               skilltokens);
           p.sendMessage("Tokens: "
               + plugin.getConfig().getInt(
                   "RPG." + p.getName() + ".skilltokens"));
           plugin.getConfig().set("RPG.levelups." + p.getName() + ".mobility",
               1);
    
         }
    
       }
    
       @EventHandler
       public void onEntityDamage(EntityDamageByEntityEvent event) {
         Entity projectile = event.getDamager();
         if (projectile instanceof Arrow) {
           Entity target = event.getEntity();
           Arrow arrow = (Arrow) event.getDamager();
    
           if (arrow.getShooter() instanceof Player) {
    
             Player shooter = (Player) arrow.getShooter();
    
             if (plugin.getConfig().getInt(
                 "RPG.levelups." + shooter.getName() + ".trickshot") == 1) {
    
               if (target instanceof Player) {
                 Player damagd = (Player) target;
                 if (plugin.getConfig().getBoolean(
                     "RPG.marked." + damagd.getName()) == false) {
                   plugin.getConfig().set(
                       "RPG.marked." + damagd.getName(), true);
                   shooter.sendMessage(ChatColor.GREEN + "You marked "
                       + ChatColor.DARK_RED + damagd.getName());
                 } else if (plugin.getConfig().getBoolean(
                     "RPG.marked." + damagd.getName()) == true) {
                   shooter.sendMessage(ChatColor.GREEN
                       + "You activated your mark on "
                       + ChatColor.DARK_RED + damagd.getName());
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.BLINDNESS, 100, 0));
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.SLOW, 100, 1));
                   damagd.addPotionEffect(new PotionEffect(
                       PotionEffectType.CONFUSION, 100, 0));
                   plugin.getConfig().set(
                       "RPG.marked." + damagd.getName(), false);
    
                 }
    
               }
             }
           }
         }
    
       }
    
       @EventHandler
       public void onLevelup(PlayerLevelChangeEvent e) {
         Player p = e.getPlayer();
    
         skilltokens++;
    
         plugin.getConfig().set("RPG." + p.getName() + ".skilltokens",
             skilltokens);
         p.sendMessage(ChatColor.GRAY + "[Level up!]");
         p.sendMessage(ChatColor.GREEN
             + "You now have "
             + plugin.getConfig().getInt(
                 "RPG." + p.getName() + ".skilltokens") + " Skilltokens");
       }
    
       @EventHandler
       public void onSneak(PlayerMoveEvent e) {
         Player p = e.getPlayer();
         if (plugin.getConfig().getInt(
             "RPG.levelups." + p.getName() + ".mobility") == 1) {
           while (p.isSneaking()) {
             if (p.getMaxHealth() == p.getHealth()) {
               for (Player all : Bukkit.getServer().getOnlinePlayers()) {
                 all.hidePlayer(p);
               }
             }
           }
    
         }
       }
    
    }
    
    Elf_levelup:
    Code:
    package at.skyblock.main;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class Elf_levelup {
    
       static org.bukkit.inventory.Inventory levelup_elf = Bukkit.createInventory(
           null, 27, ChatColor.DARK_GREEN + "" + ChatColor.BOLD
               + "Levelup-manager");
       static {
    
         ItemStack mobility = new ItemStack(Material.WEB);
         ItemMeta mobility_meta = mobility.getItemMeta();
         mobility_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Mobility I");
         ArrayList<String> mobility_desc = new ArrayList<String>();
         mobility_desc.add(ChatColor.AQUA + "Invisibility upon sneaking");
         mobility_desc.add(ChatColor.AQUA + "until taking damage");
         mobility_meta.setLore(mobility_desc);
         mobility.setItemMeta(mobility_meta);
    
         ItemStack trickshot = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot_meta = trickshot.getItemMeta();
         trickshot_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot I");
         ArrayList<String> trickshot_desc = new ArrayList<String>();
         trickshot_desc.add(ChatColor.AQUA + "10% Chance to apply");
         trickshot_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot_meta.setLore(trickshot_desc);
         trickshot.setItemMeta(trickshot_meta);
    
         ItemStack trickshot2 = new ItemStack(Material.BLAZE_POWDER);
         ItemMeta trickshot2_meta = trickshot2.getItemMeta();
         trickshot2_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot II");
         ArrayList<String> trickshot2_desc = new ArrayList<String>();
         trickshot2_desc.add(ChatColor.AQUA + "15% Chance to apply");
         trickshot2_desc.add(ChatColor.AQUA + "Blindness I on hit");
         trickshot2_meta.setLore(trickshot2_desc);
         trickshot2.setItemMeta(trickshot2_meta);
    
         ItemStack trickshot_path = new ItemStack(Material.BOW);
         ItemMeta trickshot_path_meta = trickshot_path.getItemMeta();
         trickshot_path_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Trickshot Lvlup");
         trickshot_path.setItemMeta(trickshot_path_meta);
    
         ItemStack mobility_path = new ItemStack(Material.WOOD_SWORD);
         ItemMeta mobility_path_meta = mobility_path.getItemMeta();
         mobility_path_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD
             + "Mobility Lvlup");
         mobility_path.setItemMeta(mobility_path_meta);
    
         levelup_elf.setItem(0, mobility);
         levelup_elf.setItem(9, trickshot_path);
         levelup_elf.setItem(18, trickshot);
         levelup_elf.setItem(19, trickshot2);
    
       }
    }
    
    Class_Inventory:
    Code:
    package at.skyblock.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class Class_inventory {
       public static org.bukkit.inventory.Inventory class_selector = Bukkit
           .createInventory(null, 9, ChatColor.DARK_GREEN + ""
               + ChatColor.BOLD + "Choose a class!");
    
    
    
    
       static {
    
         ItemStack mage = new ItemStack(Material.BLAZE_POWDER, 1);
         ItemMeta mage_meta = mage.getItemMeta();
         mage_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "Mage");
         mage.setItemMeta(mage_meta);
    
         ItemStack shaman = new ItemStack(Material.SAPLING, 1);
         ItemMeta shaman_meta = shaman.getItemMeta();
         shaman_meta.setDisplayName(ChatColor.GREEN + "" + ChatColor.BOLD
             + "Shaman");
         shaman.setItemMeta(shaman_meta);
    
         ItemStack warrior = new ItemStack(Material.IRON_SWORD, 1);
         ItemMeta warrior_meta = warrior.getItemMeta();
         warrior_meta.setDisplayName(ChatColor.DARK_RED + "" + ChatColor.BOLD
             + "Warrior");
         warrior.setItemMeta(warrior_meta);
    
         class_selector.setItem(0, mage);
         class_selector.setItem(1, shaman);
         class_selector.setItem(2, warrior);
    
       }
    }
    
    tribe_inventory:
    Code:
    package at.skyblock.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class Tribe_inventory {
       public static org.bukkit.inventory.Inventory tribe_selector = Bukkit
           .createInventory(null, 9, ChatColor.DARK_GREEN + ""
               + ChatColor.BOLD + "Choose a tribe!");
    
       static {
    
         ItemStack elf = new ItemStack(Material.BOW, 1);
         ItemMeta elf_meta = elf.getItemMeta();
         elf_meta.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "Elf");
         elf.setItemMeta(elf_meta);
    
         ItemStack orc = new ItemStack(Material.IRON_AXE, 1);
         ItemMeta orc_meta = orc.getItemMeta();
         orc_meta.setDisplayName(ChatColor.DARK_RED + "" + ChatColor.BOLD
             + "Orc");
         orc.setItemMeta(orc_meta);
    
         ItemStack dwarf = new ItemStack(Material.ANVIL, 1);
         ItemMeta dwarf_meta = dwarf.getItemMeta();
         dwarf_meta.setDisplayName(ChatColor.DARK_BLUE + "" + ChatColor.BOLD
             + "Dwarf");
         dwarf.setItemMeta(dwarf_meta);
    
         ItemStack demon = new ItemStack(Material.NETHER_STAR, 1);
         ItemMeta demon_meta = demon.getItemMeta();
         demon_meta.setDisplayName(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD
             + "Demon");
         demon.setItemMeta(demon_meta);
    
         tribe_selector.setItem(0, elf);
         tribe_selector.setItem(8, orc);
         tribe_selector.setItem(1, dwarf);
         tribe_selector.setItem(7, demon);
         tribe_selector.setItem(4, new ItemStack(Material.IRON_FENCE));
    
       }
    }
    
     
  13. Offline

    Koobaczech

    So it works for me, i think your bug is somewhere else than in that runtasklater spawn code
     

    Attached Files:

  14. Offline

    maxecito

    @Koobaczech Well, which bukkit version are you using?
    I belive it is more of a bug... :3
     
  15. Offline

    Koobaczech

  16. Offline

    maxecito

    @Koobaczech I even switched it.
    It is confirmed. Bukkit hates me.
     
  17. Offline

    Koobaczech

    Haha awe. Dude I'm sorry. I think your bug/code is happening somewhere else than in that code. It could even be watchdog settings not allowing entities or something strange! A lot of different factors come into play
     
  18. Offline

    maxecito

    @Koobaczech Yea, the problem is I can spawn it when I use the players location.
    Some bugs are so strange..
     
  19. Offline

    Koobaczech

    This is why we all need to become super smart and recode bukkit
     
  20. Offline

    maxecito

    @Koobaczech
    The villager is spawning.
    Everything is fine.
    And then... 1, 2, 3 RANDOM!
    The Server crashes.
     
  21. Offline

    Koobaczech

    Lol! wtheck. Hey send me your compiled plugin, i want to try and run it
     
  22. Offline

    maxecito

Thread Status:
Not open for further replies.

Share This Page