• 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!

Hilfe ! [BungeeCord Command]

D

deleted191575

Guest
Hallo Liebe Community,


ich habe ein Problem mit meinem "Whereis" Kommand ud wollte euch um eure Hilfe bitten.
Im Anhang ist der Code von: "plugin.yml, Main.java, WhereIs_cmd.java"

Main.java
Code:
package net.brutalverzockt.proxy.main;

import net.brutalverzockt.proxy.cmds.BroadCast_cmd;
import net.brutalverzockt.proxy.cmds.Ping_cmd;
import net.brutalverzockt.proxy.cmds.WhereIs_cmd;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Plugin;

public class Main extends Plugin {
  
    @SuppressWarnings("deprecation")
    @Override
    public void onEnable() {
        registerCommands();
      
        BungeeCord.getInstance().getConsole().sendMessage(Utils.prefix + "§eDas Plugin wurde §ageladen §4!");
      
    }


    @SuppressWarnings("deprecation")
    @Override
    public void onDisable() {
        BungeeCord.getInstance().getConsole().sendMessage(Utils.prefix + "§eDas Plugin wurde §cgestoppt §4!");
      
    }
  
    private void registerCommands() {
      
        ProxyServer.getInstance().getPluginManager().registerCommand(this, new BroadCast_cmd("broadcast"));
        ProxyServer.getInstance().getPluginManager().registerCommand(this, new BroadCast_cmd("bc"));
        ProxyServer.getInstance().getPluginManager().registerCommand(this, new Ping_cmd("ping"));
        ProxyServer.getInstance().getPluginManager().registerCommand(this, new WhereIs_cmd("whereis"));
      
    }

}

WhereIs_cmd.java:
Code:
package net.brutalverzockt.proxy.cmds;

import net.brutalverzockt.proxy.main.Utils;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;

public class WhereIs_cmd extends Command {

    public WhereIs_cmd(String name) {
        super(name);
    }

    @SuppressWarnings("deprecation")
    @Override
    public void execute(CommandSender sender, String[] args) {
        if(sender instanceof ProxiedPlayer) {
            ProxiedPlayer pp = (ProxiedPlayer) sender;
                ProxiedPlayer pp2 = ProxyServer.getInstance().getPlayer(args[0]);
                    if(pp.hasPermission("bungeecord.command.whereis")) {
                        if(args.length >= 0 || args.length <= 2)  {
                            if(pp2 != null) {
                              
                                pp.sendMessage(Utils.prefix + "Der Spieler §6" + pp2.getDisplayName() + " §7spielt auf dem Server §a" + pp2.getServer().getInfo().getName());
              
                    } else
                        pp.sendMessage(Utils.prefix + "Dieser Spieler ist §4§n§lnicht§r §aonline §7oder er existiert §4§n§lnicht");
                } else
                    pp.sendMessage(Utils.usage + "/whereis <§aSpieler§7> §8'");
            } else
                pp.sendMessage(Utils.noperm);
        } else
            sender.sendMessage(Utils.notplayer);
    }
}

plugin.yml:
Code:
name: Proxy-System
version: 1.0
author: BrutalVerzockt
main: net.brutalverzockt.proxy.main.Main

commands:
   broadcast:
   bc:
   ping:
   whereis:

nLrA5ltaS-CIt8VRZ3LaQw.png

q19xuPWkQkCiBKfJ1zsrtQ.png


Also das ist mein Code, ich hoffe dass ich schnellstmöglich eine Antwort von euch bekomme :)
 
Zuletzt bearbeitet von einem Moderator:

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
BungeeCord schaut zunächst nach einer bungee.yml, erst dann nach plugin.yml. Eine Eigenschaft "commands" gibt es dort nicht, diese Zeilen werden also einfach ignoriert.

Die für einen Befehl benötigte Permission solltest du direkt im Konstruktor der Befehle setzen. Also z.B.
Code:
    public WhereIs_cmd(String name, String permission) {
        super(name, permission);
Dann musst du diese Permission nicht im Code abfragen und der Befehl wird auch nur den Spielern mit der Permission bei der Tabvervollständigung angezeigt.

Die Abfrage "if(args.length >= 0 || args.length <= 2) {" ergibt überhaupt keinen Sinn. Da könntest du genauso "if (true) {" hinschreiben.

Bei deinen Else-Zweigen solltest du immer geschweifte Klammern verwenden. Dann wird dir sicher selber schnell klar, welcher Code wann ausgeführt wird. So ist das nicht nachvollziehbar.
 
D

deleted191575

Guest
BungeeCord schaut zunächst nach einer bungee.yml, erst dann nach plugin.yml. Eine Eigenschaft "commands" gibt es dort nicht, diese Zeilen werden also einfach ignoriert.

Die für einen Befehl benötigte Permission solltest du direkt im Konstruktor der Befehle setzen. Also z.B.
Code:
    public WhereIs_cmd(String name, String permission) {
        super(name, permission);
Dann musst du diese Permission nicht im Code abfragen und der Befehl wird auch nur den Spielern mit der Permission bei der Tabvervollständigung angezeigt.

Die Abfrage "if(args.length >= 0 || args.length <= 2) {" ergibt überhaupt keinen Sinn. Da könntest du genauso "if (true) {" hinschreiben.

Bei deinen Else-Zweigen solltest du immer geschweifte Klammern verwenden. Dann wird dir sicher selber schnell klar, welcher Code wann ausgeführt wird. So ist das nicht nachvollziehbar.

Wir würdest du es denn machen ?
 

LinuxServer

Kuhfänger
Registriert
17 September 2016
Beiträge
50
Diamanten
0
Minecraft
LinuxServer
Guten Tag,

ich würde bevor ich den pp2 definiere die Permission und Argumenten Länge abfragen, dann den Spieler pp2 definieren und abfragen ob der Spieler nicht null ist, ob das weiterhilft kann ich leider nicht sagen, wenn nicht versuch es mal mit einem try-catch.

Mit freundlichen Grüßen
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Länge des Arrays abfragen, nachdem man versucht auf ein Element darin zuzugreifen... happy NPE! :gusta:
Die tausendfache Verschachtelung fördert die Lesbarkeit auch nicht unbedingt.

if(args.length >= 0 || args.length <= 2)
Kompletter Schwachsinn.
Was du vermutlich erreichen wolltest war: if (args.length == 1) ... oder?

http://www.oracle.com/technetwork/java/codeconventions-135099.html
Lesen. Anwenden.
:yuno:

Hast du eigentlich nen Blick in die Konsole geworfen?
Dein Beispiel, bei dem du nur "/whereis" eingibst, hat garantiert zu einer NullPointerException geführt...
 
Oben