KrejzolekPRO 600 Opublikowano 10 sierpnia 2017 Udostępnij Opublikowano 10 sierpnia 2017 (edytowane) Witajcie mam sobie taki kod (a w sumie cześć kodu): else if (args[0].equalsIgnoreCase("dom")){ if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Utils.fixColor("&cNie posiadasz dzialki.")); return true; } Location pll = ((Player) sender).getLocation(); Double X = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajX"); Double Y = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajY"); Double Z = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajZ"); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run{ if(((Player) sender).getLocation() == pll){ final Location l = new Location(Bukkit.getWorld(yml.getString("swiatDzialek")),X,Y,Z); ((Player)sender).teleport(l.add(0, 1, 0)); sender.sendMessage(Utils.fixColor("&7Teleportacja przebiegla &apomyslnie&7.")); } else { sender.sendMessage(Utils.fixColor("&cRuszyles sie.")); } } }, 20*5); } Błędów w eclipsie nie ma, ale po wywołaniu komendy /działka dom sypie się, błąd leży w tej linijce. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() Może ktoś poprawić/wytłumaczyć? Bez taska działa wszystko okej. Edytowane 10 sierpnia 2017 przez KrejzolekPRO Odnośnik do komentarza https://skript.pl/temat/20685-runtask/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 insertt 39 Opublikowano 10 sierpnia 2017 Udostępnij Opublikowano 10 sierpnia 2017 wklej logi z błędem przy uruchomieniu Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140578 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 11 sierpnia 2017 Autor Udostępnij Opublikowano 11 sierpnia 2017 (edytowane) 2 godziny temu, insertt napisał: wklej logi z błędem przy uruchomieniu Przy uruchamianiu nic nie ma, dopiero po wykonaniu komendy. //edit wkleje jak bede na kompie, czyli jutro. Edytowane 11 sierpnia 2017 przez KrejzolekPRO Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140600 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Ixidi 719 Opublikowano 11 sierpnia 2017 Udostępnij Opublikowano 11 sierpnia 2017 Użyj tego: new BukkitRunnable() { @Override public void run() { } }.runTaskLater(plugin, czas_w_tickach); Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140626 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 11 sierpnia 2017 Autor Udostępnij Opublikowano 11 sierpnia 2017 1 godzinę temu, Ixidi napisał: Użyj tego: new BukkitRunnable() { @Override public void run() { } }.runTaskLater(plugin, czas_w_tickach); @insertt @Ixidi, po dodaniu twojego kodu, sypie błędem w .runTaskLater(...). A tutaj błędy z konsoli: KrejzolekPR0 issued server command: /dzialka dom [14:42:05 ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'dzialka' in plugin CrazyCuboids v0.1 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at java.lang.Thread.run(Unknown Source) [?:1.8.0_131] Caused by: java.lang.IllegalArgumentException: Plugin cannot be null at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.validate(CraftScheduler.java:397) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:123) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.runTaskLater(CraftScheduler.java:106) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.scheduler.BukkitRunnable.runTaskLater(BukkitRunnable.java:64) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] at pl.krejzolekpro.crazycuboids.Cmd.onCommand(Cmd.java:114) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52] ... 15 more Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140649 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Ixidi 719 Opublikowano 11 sierpnia 2017 Udostępnij Opublikowano 11 sierpnia 2017 Plugin jest nullem. Podaj kod. Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140650 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 11 sierpnia 2017 Autor Udostępnij Opublikowano 11 sierpnia 2017 9 minut temu, Ixidi napisał: Plugin jest nullem. Podaj kod. public class Cmd implements CommandExecutor { public static Plugin plugin = this; public boolean onCommand(final CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("dzialka")) { if(sender instanceof Player){ final FileConfiguration yml = Main.getInst().getConfig(); if ((args.length < 1) || (args.length > 2)) { sender.sendMessage(""); sender.sendMessage(Main.c("&2/dzialka dom &7- teleportuje na dom dzialki.")); sender.sendMessage(Main.c("&2/dzialka dodaj [GRACZ] &7- dodaje gracza do dzialki.")); sender.sendMessage(Main.c("&2/dzialka wyrzuc [GRACZ] &7- wyrzuca gracza z dzialki.")); sender.sendMessage(Main.c("&2/dzialka opusc &7- opuszczasz dzialke.")); sender.sendMessage(Main.c("&2/dzialka usun &7- usuwa dzialke.")); sender.sendMessage(""); sender.sendMessage(Main.c("&7Crafting dzialki znajduje sie na &2spawnie.")); return true; } if (args[0].equalsIgnoreCase("dodaj")) { if (args.length != 2) { sender.sendMessage(Main.s1 + Main.c("&cPoprawne uzycie: /dzialka dodaj [GRACZ].")); return true; } if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Main.s1 + Main.c("&cNie posiadasz dzialki.")); return true; } Player poff = Bukkit.getPlayer(args[1]); if (poff == null) { sender.sendMessage(Main.s1 + Main.c("&cTen gracz nie jest online.")); return true; } yml.set("dzialki." + sender.getName().toLowerCase() + ".addmem." + args[1].toLowerCase(), Boolean.valueOf(true)); Main.getInst().saveConfig(); sender.sendMessage(Main.s1 + Main.c(new StringBuilder("&7Pomyslnie dodano do dzialki gracza: &2").append(poff.getName()).toString())); poff.sendMessage(Main.s1 + Main.c(new StringBuilder("&7Gracz &2").append(sender.getName()).append(" &7dodal Cie do dzialki!").toString())); return true; } else if (args[0].equalsIgnoreCase("wyrzuc")) { if (args.length != 2) { sender.sendMessage(Main.s1 + Main.c("&cPoprawne uzycie: /dzialka wyrzuc [GRACZ]")); return true; } if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Main.s1 + Main.c("&cNie posiadasz dzialki.")); return true; } if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".addmem." + args[1].toLowerCase())) { sender.sendMessage(Main.s1 + Main.c("&cTen gracz nie nalezy do twojej dzialki.")); return true; } yml.set("dzialki." + sender.getName().toLowerCase() + ".addmem." + args[1].toLowerCase(), null); Main.getInst().saveConfig(); sender.sendMessage(Main.s1 + Main.c(new StringBuilder("&7Usunieto z dzialki gracza: &2").append(args[1]).toString())); } else if (args[0].equalsIgnoreCase("opusc")){ if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Main.s1 + Main.c("&cNie posiadasz dzialki.")); return true; } for (String p : yml.getConfigurationSection("dzialki").getKeys(false)){ yml.set("dzialki." + p + ".addmem." + sender.getName().toLowerCase() , null); sender.sendMessage(Main.c("&7Opusciles dzialke gracza: &2" + p + "&7.")); } } else if (args[0].equalsIgnoreCase("dom")){ if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Main.s1 + Main.c("&cNie posiadasz dzialki.")); return true; } final Location pll = ((Player) sender).getLocation(); new BukkitRunnable() { public void run() { if(((Player) sender).getLocation() == pll){ Double X = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajX"); Double Y = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajY"); Double Z = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajZ"); final Location l = new Location(Bukkit.getWorld(yml.getString("swiatDzialek")),X,Y,Z); ((Player)sender).teleport(l.add(0, 1, 0)); sender.sendMessage(Main.s1 + Main.c("&7Teleportacja przebiegla &apomyslnie&7.")); } else { sender.sendMessage(Main.s1 + Main.c("&cRuszyles sie, teleportacja nie powiodla sie.")); } } }.runTaskLater(plugin, 100); } else if (args[0].equalsIgnoreCase("usun")){ if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Main.s1 + Main.c("&cNie posiadasz dzialki.")); return true; } Double X = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajX"); Double Y = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajY"); Double Z = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajZ"); Location l = new Location(Bukkit.getWorld(yml.getString("swiatDzialek")),X,Y,Z); l.getBlock().setType(Material.AIR); yml.set("dzialki." + sender.getName().toLowerCase(), null); sender.sendMessage(Main.s1 + Main.c("&7Dzialka zostala usunieta.")); } else { sender.sendMessage(""); sender.sendMessage(Main.c("&2/dzialka dom &7- teleportuje na dom dzialki.")); sender.sendMessage(Main.c("&2/dzialka dodaj [GRACZ] &7- dodaje gracza do dzialki.")); sender.sendMessage(Main.c("&2/dzialka wyrzuc [GRACZ] &7- wyrzuca gracza z dzialki.")); sender.sendMessage(Main.c("&2/dzialka opusc &7- opuszczasz dzialke.")); sender.sendMessage(Main.c("&2/dzialka usun &7- usuwa dzialke.")); return true; } } } return true; } } Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140653 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Ixidi 719 Opublikowano 11 sierpnia 2017 Udostępnij Opublikowano 11 sierpnia 2017 new BukkitRunnable() { @Override public void run() { } }.runTaskLater(plugin, czas_w_tickach); W miejsce plugin musisz podac instacje klasy glownej, czyli Main.getInst(). KrejzolekPRO 1 Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140654 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 11 sierpnia 2017 Autor Udostępnij Opublikowano 11 sierpnia 2017 3 minuty temu, Ixidi napisał: new BukkitRunnable() { @Override public void run() { } }.runTaskLater(plugin, czas_w_tickach); W miejsce plugin musisz podac instacje klasy glownej, czyli Main.getInst(). Jeszcze jedno pytanko, możesz sprawdzić dlaczego zawsze po 5 sekundach wyrzuca (w komendzie: /dzialka dom), że się ruszam? Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140656 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Ixidi 719 Opublikowano 11 sierpnia 2017 Udostępnij Opublikowano 11 sierpnia 2017 Musisz na poczatku oczytwywac pierwotny x, y i z gracza metoda loc.getBlockZ(); Potem musisz musisz znowu je odczytac i porownac. Nie mozesz calej Loaklizacji, bo ona przechowuje w sobie Yaw i Pitch, wiec nawet najdrobniejszu ruch przerwie. KrejzolekPRO 1 Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140660 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 11 sierpnia 2017 Autor Udostępnij Opublikowano 11 sierpnia 2017 1 minutę temu, Ixidi napisał: Musisz na poczatku zapisywac pierwotny x, y i z gracza metoda loc.getBlockZ(); Potem musisz je odczytywac. Nie mozesz calej Loaklizacji, bo ona przechowuje w sobie Yaw i Pitch, wiec nawet najdrobniejszu ruch przerwie. Sam o tym pomyślałem gdy obie wartości wyświteliłem na ekranie. Dzięki Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140661 Udostępnij na innych stronach Więcej opcji udostępniania...
0 Gość Ewald Opublikowano 11 sierpnia 2017 Udostępnij Opublikowano 11 sierpnia 2017 Problem został rozwiązany. Odnośnik do komentarza https://skript.pl/temat/20685-runtask/#findComment-140666 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
KrejzolekPRO 600
Witajcie mam sobie taki kod (a w sumie cześć kodu):
else if (args[0].equalsIgnoreCase("dom")){ if (!yml.getBoolean("dzialki." + sender.getName().toLowerCase() + ".tak")) { sender.sendMessage(Utils.fixColor("&cNie posiadasz dzialki.")); return true; } Location pll = ((Player) sender).getLocation(); Double X = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajX"); Double Y = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajY"); Double Z = yml.getDouble("dzialki." + sender.getName().toLowerCase() + ".jajZ"); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){ public void run{ if(((Player) sender).getLocation() == pll){ final Location l = new Location(Bukkit.getWorld(yml.getString("swiatDzialek")),X,Y,Z); ((Player)sender).teleport(l.add(0, 1, 0)); sender.sendMessage(Utils.fixColor("&7Teleportacja przebiegla &apomyslnie&7.")); } else { sender.sendMessage(Utils.fixColor("&cRuszyles sie.")); } } }, 20*5); }Błędów w eclipsie nie ma, ale po wywołaniu komendy /działka dom sypie się, błąd leży w tej linijce.
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable()Może ktoś poprawić/wytłumaczyć? Bez taska działa wszystko okej.
Edytowane przez KrejzolekPROOdnośnik do komentarza
https://skript.pl/temat/20685-runtask/Udostępnij na innych stronach
11 odpowiedzi na to pytanie
Rekomendowane odpowiedzi