Помогите пытаюсь разобраться с шудлером/задержкой ничего не понимаю

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
Проблема думаю ясна. Я знаю что в гугле 1КК решений но я не могу понять что я делаю не так.
Сейчас код выглядит так
Код:
        Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
            @Override
            public void run() {
                loc.getBlock().setType(Material.OAK_LOG);
            }
        }, 20L);
он был взят из гугла. но он выдает огромную ошибку в консоль.
Код:
[14:03:49] [Server thread/ERROR]: Could not pass event BlockBreakEvent to OneBlockChallenge v0.0.1
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerInteractManager.breakBlock(PlayerInteractManager.java:309) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerInteractManager.a(PlayerInteractManager.java:268) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerInteractManager.a(PlayerInteractManager.java:162) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1297) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PacketPlayInBlockDig.a(SourceFile:40) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PacketPlayInBlockDig.a(SourceFile:10) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.PlayerConnectionUtils$$Lambda$4085/904383845.run(Unknown Source) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:942) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:935) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:919) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:851) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at net.minecraft.server.v1_16_R3.MinecraftServer$$Lambda$3178/911264794.run(Unknown Source) [1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
Caused by: java.lang.IllegalArgumentException: An objective of name '╨С╨╗╨╛╨║╨╕' already exists
        at org.apache.commons.lang.Validate.isTrue(Validate.java:136) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftScoreboard.registerNewObjective(CraftScoreboard.java:45) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftScoreboard.registerNewObjective(CraftScoreboard.java:34) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftScoreboard.registerNewObjective(CraftScoreboard.java:29) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at org.bukkit.craftbukkit.v1_16_R3.scoreboard.CraftScoreboard.registerNewObjective(CraftScoreboard.java:1) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        at ru.OBC.ListenerE.blockevent(ListenerE.java:53) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[1.16.5.jar:2991-Spigot-018b9a0-f3f3094]
        ... 23 more
 
Caused by: java.lang.IllegalArgumentException: An objective of name '╨С╨╗╨╛╨║╨╕' already exists
видимо ошибка Caused by: java.lang.IllegalArgumentException: Plugin cannot be null гдето в конструкторе
Код:
    private Main plugin;
    public RandomTutorial(Main main) {
    this.plugin = main;
    }
не пойму что не так
 
понял что уже существует объект с именем но не понял где оно вообще есть я ниче не указывал
Ну подними задницу да поищи где ты регистрируешь registerNewObjective. Уже и так на ошибку указал.
И утверждает тут сидит, что весь гугл перерыл.
 
видимо ошибка Caused by: java.lang.IllegalArgumentException: Plugin cannot be null гдето в конструкторе
Код:
    private Main plugin;
    public RandomTutorial(Main main) {
    this.plugin = main;
    }
не пойму что не так
Ты при создании объекта передал туда null, как советует eclipse? Молодец. Когда регистрируешь слушатель в главном классе, передавай туда ссылку this
 
перебираю миллион вариков щас он выглядит так
Код:
public class RandomTutorial {


    private final RandomTutorial plugin;

    public RandomTutorial(RandomTutorial plugin) {
        this.plugin = plugin;
    }

    public RandomTutorial(ListenerE listenerE) {
        this.plugin = null;
        // TODO Auto-generated constructor stub
    }

    public void random(int x, int y, int z, Location loc, Player p) {
      

      
        int d = (int) (Math.random() * 11);
  
        p.sendMessage("§cчисло: " + d);

          
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)+ Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);

        //Bukkit.getScheduler().runTask(plugin, () -> loc.getBlock().setType(Material.OAK_LOG));
        p.sendMessage("дебаг0");

        Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) plugin, new Runnable() {
            @Override
            public void run() {
                loc.getBlock().setType(Material.OAK_LOG);
            }
        }, 20L);
      

    }
  
  

}
ошибка Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
метод в этом классе вызывается в другом классе который является слушателем разрушения блока
 
перебираю миллион вариков щас он выглядит так
Код:
public class RandomTutorial {


    private final RandomTutorial plugin;

    public RandomTutorial(RandomTutorial plugin) {
        this.plugin = plugin;
    }

    public RandomTutorial(ListenerE listenerE) {
        this.plugin = null;
        // TODO Auto-generated constructor stub
    }

    public void random(int x, int y, int z, Location loc, Player p) {
      

      
        int d = (int) (Math.random() * 11);
  
        p.sendMessage("§cчисло: " + d);

          
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)+ Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);

        //Bukkit.getScheduler().runTask(plugin, () -> loc.getBlock().setType(Material.OAK_LOG));
        p.sendMessage("дебаг0");

        Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) plugin, new Runnable() {
            @Override
            public void run() {
                loc.getBlock().setType(Material.OAK_LOG);
            }
        }, 20L);
      

    }
  
  

}
ошибка Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
Скинь главный класс, чует сердце, что ты null передал. Интуиция говорит.
 
Скинь главный класс, чует сердце, что ты null передал. Интуиция говорит.
класс листенера
Код:
public class ListenerE implements Listener {


    private Main plugin;
    public ListenerE(Main main) {
    this.plugin = main;
    }

    @EventHandler
    private void blockevent(BlockBreakEvent e)
    {
        Location loc = e.getBlock().getLocation();
        int x = loc.getBlockX();
        int y = loc.getBlockY();
        int z = loc.getBlockZ();
        Player p = e.getPlayer();
        World w = p.getWorld();
       
        if (x == 0 && z == 0 && y == 61)
        {
            RandomTutorial randomTutorial = new RandomTutorial(this);
            randomTutorial.random(x, y, z, loc, p);
            plugin.getConfig().set("block1.progress", plugin.getConfig().getInt("block1.progress")+1);
            plugin.getConfig().set(p + ".progress", plugin.getConfig().getInt(p + ".progress")+1);
            String prog = plugin.getConfig().getString(p + ".progress");
            plugin.saveConfig();
           
            p.sendTitle("Сломано блоков: ", plugin.getConfig().getString(p + ".progress"));
           
           /* ScoreboardManager manager = Bukkit.getScoreboardManager();
            Scoreboard board = manager.getNewScoreboard();
           
            Objective objective1 = board.registerNewObjective("list", prog);
           
            Objective objective = board.registerNewObjective("showhealth", "health");
           
            objective.setDisplaySlot(DisplaySlot.BELOW_NAME);
            objective.setDisplayName(prog);
            objective1.setDisplaySlot(DisplaySlot.PLAYER_LIST);
            p.setScoreboard(board);
            objective1.getScore(p);*/

           
           
        }

    }
}
главный класс
Код:
public class Main extends JavaPlugin {
   


    Logger log = Logger.getLogger("Minecraft");
    //Получить доступ к консоли
    public File file = new File(getDataFolder() + File.separator + "config.yml");
    public FileConfiguration fileConfig = YamlConfiguration.loadConfiguration(file);
    //В этом коде переменная - fileConfig - для конфиг файла config.yml
    public File file2 = new File(getDataFolder() + File.separator + "data.yml");
    public FileConfiguration fileConfig2 = YamlConfiguration.loadConfiguration(file);
    //В этом коде переменная - fileConfig2 - для доп. конфиг файла playerdata.yml

    FileConfiguration conf = getConfig();


    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(new ListenerE(this), this);
        Bukkit.getConsoleSender().sendMessage(ChatColor.RED + " / "); // оформление ебашь с красным или каким хочешь цветом, ок да?
        log.info("Enabled.");
        if (!this.file.exists() ) {    //Если файла не существует
            saveResource("config.yml", true); //То копирование при запуске  сервера доп. конфиг файла config.yml
        }
       


        saveDefaultConfig();
        if (!this.file2.exists() ) {    //Если файла не существует
            this.fileConfig2.set("Command","data" ); // То присваиваем переменной Config2 -данные со строкой Command- и значением -data
            saveCfg();    // Сохраняем данные из переменной в конфиг custom.yml
            // к строке saveCfg();  Мы создаем метод ниже
        }}
    private void saveCfg() {
        try {
            fileConfig2.save(file2);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    public void onDisable() {
        this.saveConfig();
    }

}
 
RandomTutorial randomTutorial = new RandomTutorial(plugin);
randomTutorial.random(x, y, z, loc, p);
PHP:
public class RandomTutorial {


    private final RandomTutorial plugin;

    public RandomTutorial(RandomTutorial plugin) {
        this.plugin = plugin;
    }
    public void random(int x, int y, int z, Location loc, Player p) {
      

      
        int d = (int) (Math.random() * 11);
 
        p.sendMessage("§cчисло: " + d);

          
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)+ Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);

        //Bukkit.getScheduler().runTask(plugin, () -> loc.getBlock().setType(Material.OAK_LOG));
        p.sendMessage("дебаг0");

        Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) plugin, new Runnable() {
            @Override
            public void run() {
                loc.getBlock().setType(Material.OAK_LOG);
            }
        }, 20L);
      

    }
 
 

}

УЧИ ЯВУ!
 
RandomTutorial randomTutorial = new RandomTutorial(plugin);
randomTutorial.random(x, y, z, loc, p);
PHP:
public class RandomTutorial {


    private final RandomTutorial plugin;

    public RandomTutorial(RandomTutorial plugin) {
        this.plugin = plugin;
    }
    public void random(int x, int y, int z, Location loc, Player p) {
   

   
        int d = (int) (Math.random() * 11);
 
        p.sendMessage("§cчисло: " + d);

       
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)+ Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) - Math.random(), (y+0.5)- Math.random(), (z+0.5)+ Math.random()), (int) 0.99999);
        p.spawnParticle(Particle.CLOUD, new Location(p.getWorld(), (x+0.5) + Math.random(), (y+0.5)- Math.random(), (z+0.5)- Math.random()), (int) 0.99999);

        //Bukkit.getScheduler().runTask(plugin, () -> loc.getBlock().setType(Material.OAK_LOG));
        p.sendMessage("дебаг0");

        Bukkit.getScheduler().scheduleSyncDelayedTask((Plugin) plugin, new Runnable() {
            @Override
            public void run() {
                loc.getBlock().setType(Material.OAK_LOG);
            }
        }, 20L);
   

    }
 
 

}

УЧИ ЯВУ!
выдает ошибку в листенере, я уже пытался так сделать но ошибка
upload_2021-5-5_15-55-19.png
 
Назад
Верх