• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Bungeecord Neustart mit countdown

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Hi, ich schreibe zurzeit an einem Neustart Kommando, jedoch weiß ich nicht was ich in diesem Code falsch mache, (in Spigot funktioniert es mit dem Bukkitscheduler):

Code:
  int timer;
  ScheduledTask task;
  @SuppressWarnings("deprecation")
  public void execute(CommandSender sender, String[] args) {
//    if (sender.hasPermission("plugin.command.neustart")) {
      if (task == null){
        if (args.length == 1){
          if (!args[0].isEmpty()){
            if (main.isInt(args[0])){
              if (Integer.parseInt(args[0]) != 0){
                timer = Integer.parseInt(args[0]);
                task = ProxyServer.getInstance().getScheduler().schedule(main.getInstance(), new Runnable() {
                  @Override
                  public void run() {
                    if (timer == 0){
                      ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), "end");
                      ProcessBuilder pb = new ProcessBuilder("./start.sh");
                      try {
                        pb.start();
                      } catch (IOException e) {
                        e.printStackTrace();
                      }
                      task.cancel();
                    }
                    else {
                      ProxyServer.getInstance().broadcast(main.Loop(main.Prefix + "Der Proxyserver startet in &e" + timer + "&7 Sekunden neu!"));
                      timer = timer - 1;
                    }
                  }
                }, 1L, TimeUnit.SECONDS);
                sender.sendMessage(main.Loop(main.Prefix + "Countdown wurde gestartet!"));
                return;
              }
            }
            sender.sendMessage(main.Loop(main.Prefix + "Erste Argument muss eine Zahl sein!"));
            return;
          }
        }
        sender.sendMessage(main.Loop(main.Prefix + "Benutzung: &c/bend <Zahl>"));
        return;
      }
      if (task != null){
        if (args.length == 1){
          if (args[0].equalsIgnoreCase("stop")){
            task.cancel();
          }
        }
      }
      sender.sendMessage(main.Loop(main.Prefix + "Es laeuft schon ein Coutndown!"));
//    }
//    else {
//      sender.sendMessage(main.Loop(main.rechte));
//    }
    return;
  }
Code:
 [WARNING] Error in dispatching command
java.lang.NullPointerException: owner
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
    at net.md_5.bungee.scheduler.BungeeScheduler.schedule(BungeeScheduler.java:91)
    at net.md_5.bungee.scheduler.BungeeScheduler.schedule(BungeeScheduler.java:85)
    at iforce.bungee.cmds.bend.execute(bend.java:28)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:169)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:116)
    at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:140)
    at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:50)
    at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:797)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at java.lang.Thread.run(Thread.java:748)
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
main.getInstance() liefert vermutlich null zurück.

Derzeit würde dein Task auch nur einmal ausgeführt werden. Zum wiederholten Ausführen musst du eine andere Überladung von TaskScheduler.schedule() benutzen.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Geändert, jetzt kommt da aber dieser Error:
Code:
[WARNING] Error in dispatching command
java.lang.NullPointerException
    at iforce.bungee.cmds.bend.execute(bend.java:30)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:169)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:116)
    at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:140)
    at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:50)
    at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:797)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304)
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
    at java.lang.Thread.run(Thread.java:748)
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Dann solltest du mal deinen geänderten Code posten und diesmal irgendwie deutlich machen, welche Zeile davon die Zeile 30 ist. Oder du schaust selber, welche Zugriffe in Zeile 30 auftreten und welches davon ganz sicher nicht null sein könnte und überprüfst den Rest.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Code:
package <plugin>.bungee.cmds;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import <plugin>.bungee.main;
import i<plugin>.bungee.api.Data;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.scheduler.ScheduledTask;
import net.md_5.bungee.api.scheduler.TaskScheduler;

public class bend
extends Command {
  public <Command>() {
    super("<Command>", "<plugin>.command.bend", new String[0]);
  }
  int timer;
  private ScheduledTask task;
  private TaskScheduler taskscheduler;
  @SuppressWarnings("deprecation")
  public void execute(CommandSender sender, String[] args) {
    if (sender.hasPermission("Command>.command.countdown")) {
      if (task == null){
        if (args.length == 1){
          if (!args[0].isEmpty()){
            if (main.isInt(args[0])){
              if (Integer.parseInt(args[0]) != 0){
                timer = Integer.parseInt(args[0]); //Zeile 30
                task = taskscheduler.schedule(Data.instance, new Runnable() {
                  @Override
                  public void run() {
                    if (timer == 0){
                      ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), "end");
                      ProcessBuilder pb = new ProcessBuilder("./start.sh");
                      try {
                        pb.start();
                      } catch (IOException e) {
                        e.printStackTrace();
                      }
                      task.cancel();
                    }
                    else {
                      ProxyServer.getInstance().broadcast(main.Loop(main.Prefix + "Der Proxyserver startet in &e" + timer + "&7 Sekunden neu!"));
                      timer = timer - 1;
                    }
                  }
                }, 1L, TimeUnit.SECONDS);
                sender.sendMessage(main.Loop(main.Prefix + "Countdown wurde gestartet!"));
                return;
              }
            }
            sender.sendMessage(main.Loop(main.Prefix + "Erste Argument muss eine Zahl sein!"));
            return;
          }
        }
        sender.sendMessage(main.Loop(main.Prefix + "Benutzung: &c/bend <Zahl>"));
        return;
      }
      if (task != null){
        if (args.length == 1){
          if (args[0].equalsIgnoreCase("stop")){
            task.cancel();
          }
        }
      }
      sender.sendMessage(main.Loop(main.Prefix + "Es laeuft schon ein Coutndown!"));
    }
    else {
      sender.sendMessage(main.Loop(main.rechte));
    }
    return;
  }
}
Code:
public class main
extends Plugin {
  private static main instance;
  public static main getInstance()
  {
    return instance;
  }
public void onEnable(){
    instance = this;
  getProxy().getPluginManager().registerCommand(this, new <Command>());
  //rest zeugs vom plugin
  }
  public static boolean isInt(String s) {
    try {
      Integer.parseInt(s);
    } catch (NumberFormatException nfe) {
      return false;
    }
    return true;
  }
}
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Also in deiner Klasse bend kann in Zeile 30 unmöglich eine NPE auftreten. Bitte erstelle dein Plugin von diesem Quellcode noch einmal.

Ich vermute, dass es dann tatsächlich in Zeile 31 passiert und dort entsprechend "Data.instance" null ist. Vielleicht solltest du dort besser auf "main.getInstance()" zurückgreifen.
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
mit main.getInstagce() anstatt von Data.instance bekomme ich diesen Error:
Code:
[WARNING] Error in dispatching command
java.lang.NullPointerException
    at iforce.bungee.cmds.bend.execute(bend.java:30)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:169)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:116)
    at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:62)
    at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)
Code:
package <plugin>.bungee.cmds;
 
import java.io.IOException;
import java.util.concurrent.TimeUnit;
 
import <plugin>.bungee.main;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.scheduler.ScheduledTask;
import net.md_5.bungee.api.scheduler.TaskScheduler;
 
public class bend
extends Command {
  public <Command>() {
    super("<Command>", "<plugin>.command.bend", new String[0]);
  }
  int timer;
  private ScheduledTask task;
  private TaskScheduler taskscheduler;
  @SuppressWarnings("deprecation")
  public void execute(CommandSender sender, String[] args) {
    if (sender.hasPermission("Command>.command.countdown")) {
      if (task == null){
        if (args.length == 1){
          if (!args[0].isEmpty()){
            if (main.isInt(args[0])){
              if (Integer.parseInt(args[0]) != 0){
                timer = Integer.parseInt(args[0]);
                task = taskscheduler.schedule(Data.instance, new Runnable() { //Zeile 30
                  @Override
                  public void run() {
                    if (timer == 0){
                      ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), "end");
                      ProcessBuilder pb = new ProcessBuilder("./start.sh");
                      try {
                        pb.start();
                      } catch (IOException e) {
                        e.printStackTrace();
                      }
                      task.cancel();
                    }
                    else {
                      ProxyServer.getInstance().broadcast(main.Loop(main.Prefix + "Der Proxyserver startet in &e" + timer + "&7 Sekunden neu!"));
                      timer = timer - 1;
                    }
                  }
                }, 1L, TimeUnit.SECONDS);
                sender.sendMessage(main.Loop(main.Prefix + "Countdown wurde gestartet!"));
                return;
              }
            }
            sender.sendMessage(main.Loop(main.Prefix + "Erste Argument muss eine Zahl sein!"));
            return;
          }
        }
        sender.sendMessage(main.Loop(main.Prefix + "Benutzung: &c/bend <Zahl>"));
        return;
      }
      if (task != null){
        if (args.length == 1){
          if (args[0].equalsIgnoreCase("stop")){
            task.cancel();
          }
        }
      }
      sender.sendMessage(main.Loop(main.Prefix + "Es laeuft schon ein Coutndown!"));
    }
    else {
      sender.sendMessage(main.Loop(main.rechte));
    }
    return;
  }
}
 

xXSchrandXx

Schafhirte
Registriert
16 September 2012
Beiträge
126
Diamanten
302
Minecraft
xXSchrandXx
Code:
package <plugin>.bungee.cmds;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import <plugin>.bungee.main;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.scheduler.ScheduledTask;

public class <command>
extends Command {
  public <command>() {
    super("<command>", "<plugin>.command.<command>", new String[0]);
  }
  int timer;
  private ScheduledTask task;
  @SuppressWarnings("deprecation")
  public void execute(CommandSender sender, String[] args) {
//    if (sender.hasPermission("<plugin>.command.<command>")) {
      if (task == null){
        if (args.length == 1){
          if (!args[0].isEmpty()){
            if (main.isInt(args[0])){
              if (Integer.parseInt(args[0]) != 0){
                timer = Integer.parseInt(args[0]);
                task = ProxyServer.getInstance().getScheduler().schedule(main.getInstance(), new Runnable() {
                  @Override
                  public void run() {
                    if (timer == 0){
                      ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), "end");
                      ProcessBuilder pb = new ProcessBuilder("./start.sh");
                      try {
                        pb.start();
                      } catch (IOException e) {
                        e.printStackTrace();
                      }
                      task.cancel();
                    }
                    else {
                      ProxyServer.getInstance().broadcast(main.Loop(main.Prefix + "Der Proxyserver startet in &e" + timer + "&7 Sekunden neu!"));
                      timer = timer - 1;
                    }
                  }
                }, 1, 1, TimeUnit.SECONDS);
                sender.sendMessage(main.Loop(main.Prefix + "Countdown wurde gestartet!"));
                return;
              }
            }
            sender.sendMessage(main.Loop(main.Prefix + "Erste Argument muss eine Zahl sein!"));
            return;
          }
        }
        sender.sendMessage(main.Loop(main.Prefix + "Benutzung: &c/bend <Zahl>"));
        return;
      }
      if (task != null){
        if (args.length == 1){
          if (args[0].equalsIgnoreCase("stop")){
            task.cancel();
          }
        }
      }
      sender.sendMessage(main.Loop(main.Prefix + "Es laeuft schon ein Coutndown!"));
//    }
//    else {
//      sender.sendMessage(main.Loop(main.rechte));
//    }
    return;
  }
}
 
Oben