ServerPlugin Nach Teleport bricht Code ab, warum

Dieses Thema im Forum "Programmierung" wurde erstellt von McWizzardDev, 12. Oktober 2015.

  1. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    Hallo Community,

    Ich habe gemacht, das wenn man Joint, des man teleportiert wird, und wenn 2 Spieler online sind startet ein Countdown. Wenn ich das Teleportierien weglasse, startet der Cooldown


    Mit Teleport

    Code (Text):
    1. @EventHandler
    2.     public void onJoin(final PlayerJoinEvent e) {
    3.         plugin.game.add(e.getPlayer().getName());
    4.         Player p = e.getPlayer();
    5.         p.getInventory().clear();
    6.         ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
    7.         SkullMeta meta = (SkullMeta) item.getItemMeta();
    8.         meta.setOwner(p.getName());
    9.         meta.setDisplayName("§c§lTeamauswahl");
    10.         item.setItemMeta(meta);
    11.         p.getInventory().setItem(4, item);
    12.         e.setJoinMessage("§3" + p.getName() + " §7ist Labyrinth beigetreten, es sind §3" + Bukkit.getOnlinePlayers().size() + "§c/§38");
    13.      
    14.         //Teleportieren zur Lobby
    15.      
    16.         String str = "lobby.";
    17.         World w = Bukkit.getWorld(plugin.cfg.getString(str + "world"));
    18.  
    19.         double x = plugin.cfg.getDouble(str + "x");
    20.         double y = plugin.cfg.getDouble(str + "y");
    21.         double z = plugin.cfg.getDouble(str + "z");
    22.         double yaw = plugin.cfg.getDouble(str + "yaw");
    23.         double pitch = plugin.cfg.getDouble(str + "pitch");
    24.         Location loc = new Location(w, x, y, z, (float) yaw, (float) pitch);
    25.         p.teleport(loc);
    26.      
    27.         //Scheduler
    28.             if(plugin.getServer().getOnlinePlayers().size() == 2) {
    29.          
    30.             for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    31.                 target.sendMessage("§7Das Spiel beginnt in §3" + high + " §7Sekunden, es sind §3" + Bukkit.getOnlinePlayers().size() + " §7dabei");
    32.             }
    33.          
    34.          
    35.             scheduler = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    36.                 @Override
    37.                 public void run() {
    38.                     if(high !=0) {
    39.                         high--;
    40.                         for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    41.                             target.setLevel(high);
    42.                          
    43.                         }
    44.                     } else {
    45.                         for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    46.                             target.sendMessage("§aDas Spiel beginnt jetzt!");
    47.                         //Teleport zu den Teams
    48.                          
    49.                             //Team grün (1)
    50.                             Playe .......
    51. ................................................................


    Ohne Teleport

    Code (Text):
    1. @EventHandler
    2.     public void onJoin(final PlayerJoinEvent e) {
    3.         plugin.game.add(e.getPlayer().getName());
    4.         Player p = e.getPlayer();
    5.         p.getInventory().clear();
    6.         ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
    7.         SkullMeta meta = (SkullMeta) item.getItemMeta();
    8.         meta.setOwner(p.getName());
    9.         meta.setDisplayName("§c§lTeamauswahl");
    10.         item.setItemMeta(meta);
    11.         p.getInventory().setItem(4, item);
    12.         e.setJoinMessage("§3" + p.getName() + " §7ist Labyrinth beigetreten, es sind §3" + Bukkit.getOnlinePlayers().size() + "§c/§38");
    13.      
    14.         //Teleportieren zur Lobby
    15.      
    16.      
    17.         //Scheduler
    18.             if(plugin.getServer().getOnlinePlayers().size() == 2) {
    19.          
    20.             for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    21.                 target.sendMessage("§7Das Spiel beginnt in §3" + high + " §7Sekunden, es sind §3" + Bukkit.getOnlinePlayers().size() + " §7dabei");
    22.             }
    23.          
    24.          
    25.             scheduler = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    26.                 @Override
    27.                 public void run() {
    28.                     if(high !=0) {
    29.                         high--;
    30.                         for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    31.                             target.setLevel(high);
    32.                          
    33.                         }
    34.                     } else {
    35.                         for(Player target : Bukkit.getServer().getOnlinePlayers()) {
    36.                             target.sendMessage("§aDas Spiel beginnt jetzt!");
    37.                         //Teleport zu de ....
    38. .........................................

    Danke wenn ihr mir wieder helft :)
     
    #1
  2. McWizzardDev
    Offline

    McWizzardDev

    Registriert seit:
    7. Oktober 2015
    Beiträge:
    58
    Währe echt net, wenn du mir hilftst!
     
    #2
  3. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    657
    Dein Code ist einfach unlesbar. Viel zu viel Code, keine Kommentare und ein paar zweifelhafte Konstrukte, also ich hab keine Lust mich da einzulesen und ich denk mal so wird es anderen auch gehen. Ich versteh auch nicht wirklich dein Problem. Guck dir deinen Beitrag doch mal an, du hast da einen Haufen Quellcode reingeworfen und 2 Zeilen zu deinem Problem geschrieben. Einrückung ist auch Mist.

    Protip: Shift + Ctrl + F (in Eclipse) formatiert deinen Code entsprechend der eingestellen Formatierungsregeln automatisch, würd ich mal empfehlen.

    Jetzt gehste hin, machst das nochmal schön, verstehst bitte auch warum Einrückung wichtig ist und dann editierst du deinen ersten Post nochmal so, dass es klar ist was deine Frage ist, wo das Problem auftritt und was du geändert hast, damit es nicht auftritt (oder wie auch immer) dabei nimmst du Bezug auf die Zeilen in denen du etwas änderst. Es würd auch helfen, wenn du erklärst was du da überhaupt machst, von deinen 2 Zeilen klingt das so, als ob du da nen Duelmodus implementierst, es hilft aber, wenn du einfach erklärst was es tut.
     
    #3
  4. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    Kommt irgendeine fehlermeldung oder ähnliches?

    Nähmlich so auf anhieb kann ich es dir net sagen.

    Eine möglichkeit währe, dass es die location gar net gibt und somit ne nullpointer rausgeworfen wird...

    LG
    Kronos197
     
    #4
  5. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    JA, ich hatte da auch so meine problem ;)

    Das problem, kann man wirklich ein bisschen ausfürlicher beschreiben ;)
    Auch wenn ich es so einigermaßen verstanden hab, dank dem titel

    LG
    Kronos197

    Da hast du vollkommen recht, ich würde sogar emphelen, es automatisch einrücken zu lassen wenn man speicchert, so hab ich es ;)
    Und es hilft, auch wenn mitlerweile kaum noch was automatisch eingerückt wird ;)

    LG
    Kronos197
     
    #5
  6. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    657
    Die Frage ist halt, wozu ich Zeit investieren soll den Code von anderen zu verstehen, wenn die anderen Hilfe suchen. Beim nächsten mal macht er es wieder falsch und dann investiert wieder jemand unnötige Zeit den Code zu verstehen. Wenn man kostenlose Hilfe erwartet, sollte man es den potenziellen Helfern möglichst einfach machen, das Problem zu verstehen und zu helfen.
     
    #6
  7. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    Ja, ich habe ja, gesagt es dass e besser währe es ausfürlicher zu beschreiben. Ich verstehe schon wie du es meint :D

    LG
    Kronos197
     
    #7
  8. Verschraubt
    Online

    Verschraubt

    Hätte ne Vermutung, kann man aber dem Code nicht entnehmen.
    Du beendest die Scheduler wahrscheinlich. Da du aber eine synchrone Scheduler hast, wird das ein Problem.
    Versuch mal, eine Async SCheduler draus zu machen :) Viel Glück, DasThema

    Zitat von wiki.bukkit.org:
    Synchrone Aufgaben
    Wichtig ist: Wenn so ein Thread stoppt wird der ganze Server eingefroren.
     
    #8