scheduleSyncDelayedTask Error:

Discussion in 'Plugin Development' started by Icy_Code, May 23, 2017.

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

    Icy_Code

    Full Code Of Class:
    Code:
    package me.frostbyte;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Color;
    import org.bukkit.FireworkEffect;
    import org.bukkit.FireworkEffect.Type;
    import org.bukkit.GameMode;
    import org.bukkit.Location;
    import org.bukkit.entity.Firework;
    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.EntityDamageEvent;
    import org.bukkit.event.entity.FoodLevelChangeEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.FireworkMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class PlayerListener implements Listener {
    
        public PlayerListener(MainClass plugin) {
          
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
        }
      
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
          
            Player player = event.getPlayer();
            if(player.getGameMode() == GameMode.CREATIVE) {
              
                // Allow the player to break blocks if in creative
                event.setCancelled(false);
              
            }else if(player.getGameMode() == GameMode.SURVIVAL) {
              
                event.setCancelled(true);
              
                player.sendMessage(ChatColor.RED.toString() + ChatColor.BOLD + "You cannot break blocks here!");
              
            }
        }
      
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
          
            Player player = event.getPlayer();
          
            player.sendMessage(ChatColor.BLUE + "Welcome To FrostByte!");
          
            ItemStack serverItem = new ItemSmith().serverItem(1);
          
            player.getInventory().addItem(serverItem);
          
            player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 0, false, false));
          
            player.setFoodLevel(20);
            player.setHealth(20);
          
            player.teleport(new Location(Bukkit.getWorld("world"), 0, 73, 0));
        }
      
        @EventHandler
        public void onPlayerLogin(final PlayerLoginEvent event) {
            if(!event.getPlayer().hasPlayedBefore()) {
                Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
                    public void run() {
                        Firework f = (Firework) event.getPlayer().getWorld().spawn(event.getPlayer().getLocation(), Firework.class);
                      
                        FireworkMeta fm = f.getFireworkMeta();
                        fm.addEffect(FireworkEffect.builder()
                            .flicker(false)
                            .trail(true)
                            .with(Type.CREEPER)
                            .withColor(Color.GREEN)
                            .withFade(Color.BLUE)
                            .build());
                        fm.setPower(3);
                        f.setFireworkMeta(fm);
                    }
                }, 20);
            }
        }
      
        @EventHandler
        public void onPlayerLeave(PlayerQuitEvent event) {
            Player player = event.getPlayer();
          
            player.getInventory().clear();
          
            for(PotionEffect effect : player.getActivePotionEffects()) {
                player.removePotionEffect(effect.getType());
            }
        }
      
        @EventHandler
        public void onPlayerDamage(EntityDamageEvent event) {
          
            event.setCancelled(true);
        }
      
        @EventHandler
        public void onPlayerHunger(FoodLevelChangeEvent event) {
            event.setCancelled(true);
        }
    }
    
    
    
    Description:
    onPlayerLogin event, the scheduleSyncDelayedTask has an error that says: "The method scheduleSyncDelayedTask(Plugin, Runnable, long) in the type BukkitScheduler is not applicable for the arguments (PlayerListener, new Runnable(){}, int)"

    I got the onPlayerLogin code from a tutorial and most of it I understand. But i do not understand the scheduleSyncDelayedTask, and because I don't understand what it does its difficult to fix it.

    It would be great if someone could explain what it does and help me fix it.
     
    Last edited by a moderator: May 23, 2017
  2. Offline

    Zombie_Striker

    @Icy_Code
    The first parameter needs to be the main class instance. Store the 'plugin' instance from the constructor in a field, and then replace "this" with that field when calling the delayed task.
     
Thread Status:
Not open for further replies.

Share This Page