Solved Plugin doesn't work

Discussion in 'Plugin Development' started by CredibleLotus12, May 3, 2016.

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

    CredibleLotus12

    Hi guys, I'm making an assassin's creed plugin... I started making it 1 week ago. Today i tested it but after a player kills the zombie to finish the tutorial seems like the code stops working, but there are no errors in the console!

    Here's my main class:
    Code:
    package it.acraft;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.SkullType;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.inventory.meta.SkullMeta;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import it.head.HeadShop;
    import net.milkbowl.vault.economy.Economy;
    
    public class Acraft extends JavaPlugin {
       
        SettingsManager settings = SettingsManager.getInstance();
       
        public static ItemStack templareSkull = createSkull(SkullType.PLAYER, ChatColor.RED + "Templare");
        public static ItemStack assassinoSkull = createSkull(SkullType.PLAYER, ChatColor.RED + "Assassino");
        public static ItemStack zombieTemplareSkull = createSkull(SkullType.ZOMBIE, ChatColor.RED + "Templare");
        public static ItemStack zombieAssassinoSkull = createSkull(SkullType.ZOMBIE, ChatColor.RED + "Assassino");
        public static ItemStack Assassini = createItem(Material.ARROW, ChatColor.DARK_GRAY + "" + ChatColor.BOLD + "Assassini");
        public static ItemStack Templari = createItem(Material.IRON_SWORD, ChatColor.RED + "" + ChatColor.BOLD + "Templari");
        public static Economy economy = null;
       
        public void onEnable() {
           
            if (!setupEconomy() ) {
                getLogger().severe(String.format("[%s] - Disabled due to no Vault dependency found!", getDescription().getName()));
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
           
            Bukkit.getPluginManager().registerEvents(new HeadShop(), this);
            Bukkit.getPluginManager().registerEvents(new Join(), this);
            Bukkit.getPluginManager().registerEvents(new Choose(), this);
            Bukkit.getPluginManager().registerEvents(new Tutorial(), this);
            getCommand("acreset").setExecutor(new Commands());
            getCommand("settutorial").setExecutor(new Commands());
            getCommand("acspawn").setExecutor(new Commands());
            getCommand("acheadshop").setExecutor(new Commands());
            settings.setUp(this);
        }
       
        private boolean setupEconomy()
        {
            RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
            if (economyProvider != null) {
                economy = economyProvider.getProvider();
            }
    
            return (economy != null);
        }
       
        public static ItemStack createItem(Material mt, String name) {
            ItemStack item = new ItemStack(mt, 1);
            ItemMeta itemMeta = item.getItemMeta();
            itemMeta.setDisplayName(name);
            item.setItemMeta(itemMeta);
            return item;
        }
    
        public static ItemStack getSkull(Player p) {
            ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) SkullType.PLAYER.ordinal());
            SkullMeta sMeta = (SkullMeta) skull.getItemMeta();
            sMeta.setDisplayName(p.getDisplayName());
            sMeta.setOwner(p.getDisplayName());
            skull.setItemMeta(sMeta);
            return skull;
        }
       
        public static ItemStack createSkull(SkullType type, String name) {
            ItemStack customSkull = new ItemStack(Material.SKULL_ITEM, 1, (short)  type.ordinal());
            SkullMeta csMeta = (SkullMeta) customSkull.getItemMeta();
            csMeta.setDisplayName(name);
            customSkull.setItemMeta(csMeta);
            return customSkull;
        }
    }
    
    Here's my tutorial class:
    Code:
    package it.acraft;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryOpenEvent;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.event.player.PlayerDropItemEvent;
    import org.bukkit.event.player.PlayerPickupItemEvent;
    import org.bukkit.event.player.PlayerTeleportEvent;
    
    public class Tutorial implements Listener {
       
        private SettingsManager settings = SettingsManager.getInstance();
       
        @EventHandler
        public void onBlockBreakWhileTutorial (BlockBreakEvent e) {
            Player p = e.getPlayer();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Non puoi rompere blocchi durante il tutorial!");
            }
        }
       
        @EventHandler
        public void onItemDropWhileTutorial (PlayerDropItemEvent e) {
            Player p = e.getPlayer();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Non puoi lasciar cadere oggetti durante il tutorial!");
            }
        }
       
        @EventHandler
        public void onItemPickUpWhileTutorial (PlayerPickupItemEvent e) {
            Player p = e.getPlayer();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Non puoi prendere oggetti durante il tutorial!");
            }
        }
       
        @EventHandler
        public void onCommandWhileTutorial (PlayerCommandPreprocessEvent e) {
            Player p = e.getPlayer();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Non puoi eseguire comandi durante il tutorial!");
            }
        }
       
        @EventHandler
        public void onInventoryOpenWhileTutorial (InventoryOpenEvent e) {
            Player p = (Player) e.getPlayer();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.sendMessage(ChatColor.RED + "Non puoi aprire inventari durante il tutorial!");
            }
        }
       
        @EventHandler
        public void onInventoryClickWhileTutorial (InventoryClickEvent e) {
            if (!(e.getWhoClicked() instanceof Player)) return;
            Player p = (Player) e.getWhoClicked();
            if (Choose.tutorial.contains(p)) {
                e.setCancelled(true);
                p.closeInventory();
                p.sendMessage(ChatColor.RED + "Non puoi muovere oggetti nell'inventario durante il tutorial!");
            }
        }
    
        @EventHandler
        public void onTutorialArenaTp (PlayerTeleportEvent e) {
             final Player p = e.getPlayer();
                if (!(Choose.tutorial.contains(p))) return;
                for (Player players : Bukkit.getOnlinePlayers()) {
                    p.hidePlayer(players);
                }
                p.setHealth(20d);
                p.setFoodLevel(20);
                p.sendMessage(ChatColor.GOLD + "Benvenuto nel tutorial!");
                if (settings.getConfig().getString("player." + p.getName() + ".group").equals("assassino")) {
                    p.sendMessage(ChatColor.GOLD + "Uccidi lo zombie-templare per completare il tutorial!");
                    Bukkit.getScheduler().scheduleSyncDelayedTask(Acraft.getPlugin(Acraft.class), new Runnable() {
                        public void run() {
                            Entity templare = p.getWorld().spawnEntity(p.getLocation(), EntityType.ZOMBIE);
                            templare.setCustomName(ChatColor.RED + "Templare");
                            templare.setCustomNameVisible(true);   
                        }
                    }, 80);
                } else if (settings.getConfig().getString("player." + p.getName() + ".group").equals("templare")) {
                    p.sendMessage(ChatColor.GOLD + "Uccidi lo zombie-assassino per completare il tutorial!");
                    Bukkit.getScheduler().scheduleSyncDelayedTask(Acraft.getPlugin(Acraft.class), new Runnable() {
                        public void run() {
                            Entity assassino = p.getWorld().spawnEntity(p.getLocation(), EntityType.ZOMBIE);
                            assassino.setCustomName(ChatColor.RED + "Assassino");
                            assassino.setCustomNameVisible(true);   
                        }
                    }, 80);
                }
            }
       
            @EventHandler
            public void onAssassinsTutorialEnd (EntityDeathEvent e) {
                if (!(e.getEntity().getKiller() instanceof Player)) return;
                if (e.getEntity() == null) return;
                if (!(e.getEntity().getType() == EntityType.ZOMBIE)) return;
                if (!(e.getEntity().getCustomName() == ChatColor.RED + "Templare")) return;
                final Player p = (Player) e.getEntity().getKiller();
                if (!(Choose.tutorial.contains(p))) return;
                for (Player players : Bukkit.getOnlinePlayers()) {
                    p.showPlayer(players);
                }
                p.getInventory().addItem(Acraft.zombieTemplareSkull);
                if (settings.getConfig().getConfigurationSection("spawn.assassino") != null) {
                    World world = Bukkit.getServer().getWorld(settings.getConfig().getString("spawn.assassino.world"));
                    double x = settings.getConfig().getDouble("spawn.assassino.x");
                    double y = settings.getConfig().getDouble("spawn.assassino.y");
                    double z = settings.getConfig().getDouble("spawn.assassino.z");
                    final Location spawnAssassino = new Location(world, x, y, z);
                    p.sendMessage(ChatColor.GOLD + "Vendi la testa del templare per ricevere una ricompenza!");
                    Bukkit.getScheduler().scheduleSyncDelayedTask(Acraft.getPlugin(Acraft.class), new Runnable() {
                        public void run() {
                            Choose.tutorial.remove(p);
                            p.teleport(spawnAssassino);
                            p.sendMessage(ChatColor.GOLD + "Benvenuto allo spawn degli assassini!");
                        }
                    }, 200);
                } else {
                    p.sendMessage(ChatColor.RED + "Lo spawn degli assassini non è definito!");
                    p.sendMessage(ChatColor.RED + "Se non fai parte dello staff del server contatta l'amministratore o un membro dello staff!");
                }
            }
           
            @EventHandler
            public void onTemplarTutorialEnd (EntityDeathEvent e) {
                if (!(e.getEntity().getKiller() instanceof Player)) return;
                if (e.getEntity() == null) return;
                if (!(e.getEntity().getType() == EntityType.ZOMBIE)) return;
                if (!(e.getEntity().getCustomName() == ChatColor.RED + "Assassino")) return;
                final Player p = (Player) e.getEntity().getKiller();
                if (!(Choose.tutorial.contains(p))) return;
                for (Player players : Bukkit.getOnlinePlayers()) {
                    p.showPlayer(players);
                }
                p.getInventory().addItem(Acraft.zombieAssassinoSkull);
                if (settings.getConfig().getConfigurationSection("spawn.templare") != null) {
                    World world = Bukkit.getServer().getWorld(settings.getConfig().getString("spawn.templare.world"));
                    double x = settings.getConfig().getDouble("spawn.templare.x");
                    double y = settings.getConfig().getDouble("spawn.templare.y");
                    double z = settings.getConfig().getDouble("spawn.templare.z");
                    final Location spawnTemplare = new Location(world, x, y, z);
                    p.sendMessage(ChatColor.GOLD + "Vendi la testa dell'assassino per ricevere una ricompenza!");
                    Bukkit.getScheduler().scheduleSyncDelayedTask(Acraft.getPlugin(Acraft.class), new Runnable() {
                        public void run() {
                            Choose.tutorial.remove(p);
                            p.teleport(spawnTemplare);
                            p.sendMessage(ChatColor.GOLD + "Benvenuto allo spawn dei templari!");
                        }
                    }, 200);
                } else {
                    p.sendMessage(ChatColor.RED + "Lo spawn dei templari non è definito!");
                    p.sendMessage(ChatColor.RED + "Se non fai parte dello staff del server contatta l'amministratore o un membro dello staff!");
                }
            }
        }
    
    There are also other classes that don't work.
    Yesterday everything worked fine. I didn't edited the code, is the same of yesterday

    PLEASE HELP ME
    Sorry for my bad english
     
  2. Offline

    XxTimexX

    @CredibleLotus12
    If you say that there are other classes that don't work, please show them too. Also, code won't just stop working. Are you sure that the event where player kills a zombie is reached, try debugging it.
     
  3. Offline

    CredibleLotus12

Thread Status:
Not open for further replies.

Share This Page