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

Spigot [Gelöst] Probleme mit CFG.

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Grüß Gott, Freunde der Sonne.

Ich habe ein Problem mit meiner Spigot Datei.
Erstellt habe ich unter der UUID des Spielers einen .team Bereich.
In diesem Bereich wird der Rang (Beispielsweise Administrator) gesetzt.
Wenn ich nun abfrage ob er denn nun diesen Rang hat, damit ein bestimmter
Prefix gesetzt wird, wird dieser dennoch nicht angenommen.
Auch bei Permissionabfragen (ersetzt durch Configabfragen) werden diese garnicht erst beachtet.
Hier ein beispiel:

Java:
 if(Config.cfg.getString(p.getUniqueId() + ".team") == "Projektleitung") {
                         near.sendMessage("§4Projektleitung §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                      
                         }

Joinlistener:
Java:
if(Config.cfg.getString(p.getUniqueId() + ".team") == null) {
            Config.cfg.set(p.getUniqueId() + ".team", "Zivilist");
            Main.getPlugin().saveConfig();
          
        }

Config:
YAML:
63791e4c-7b4d-46ce-8a67-d38dcc4d9b04:
  name: CapuzDE
  team: Projektleitung
  fraktion: Zivilist
  gamemode: 2
  buildmode: false
  editmode: false

Ich freue mich auf Rückmeldung.

MfG, Luca.
 

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Java:
@EventHandler
    public void onChat(AsyncPlayerChatEvent e) {
        Player p = e.getPlayer();
        String msg = e.getMessage();
        @SuppressWarnings("unused")
        String msg1 = "§7" + p.getName() + "§8» §7" + msg;
        int blockDistance = 15;
        Location plocation = e.getPlayer().getLocation();
        
        for(Player near : e.getRecipients()) {
            

            if(near.getLocation().distance(plocation) <= blockDistance) {
                
                     if(Config.cfg.getString(p.getUniqueId() + ".team") == "Projektleitung") {
                         near.sendMessage("§4Projektleitung §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                        
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Administrator") {
                             near.sendMessage("§cAdministrator §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Entwickler") {
                             near.sendMessage("§bEntwickler §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Moderator") {
                             near.sendMessage("§6Moderator §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Supporter") {
                             near.sendMessage("§9Supporter §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Designer") {
                             near.sendMessage("§dDesigner §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else if(Config.cfg.getString(p.getUniqueId() + ".team") == "Architekt") {
                             near.sendMessage("§eArchitekt §8× §7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                            
                         } else {
                             near.sendMessage("§7" + p.getName() + "[§c" + "LEVEL" + "§7] sagt §8» §7" + msg);
                         }
                    
                    
                }
            }
            
        
        
        e.getRecipients().clear();
        
    }
 

BestPixelHD

Minecrafter
Registriert
10 März 2016
Beiträge
9
Alter
35
Diamanten
300
Als erstes würde ich (obwohl es nicht viel Auswirkungen hat) die UUID zum String "machen":
Java:
p.getUniqueId().toString()

Dann brauchst du teo. keine for-Schleife, wenn die Nachricht an alle Player gesendet werden soll:
Mach z.B: diese for-Schleife weg und setze die Message vom Event
 

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Nunja, die Nachricht ist ja nicht das Problem.
Die Funktioniert einwandfrei, als die Permissions noch da waren, auch richtig.

Wieso muss ich die UniqueID zu einem String umwandeln?
Es funktioniert beispielsweise im EditMode Command auch mit der CFG. (Siehe Config .editmode: false)
Nur halt komischerweise nicht mit dem .team Bereicht.
@BestPixelHD
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Der Teil
Code:
if(Config.cfg.getString(p.getUniqueId() + ".team") == "Projektleitung")
wird niemals zutreffen. Strings werden in Java über String$equals(String) verglichen, nicht über 2 Gleichzeichen. Die 2 Gleichzeichen sollten nur dann eingesetzt werden, wenn man weiß, was man tut oder wenn man primitive Datentypen benutzt.

Und ob man jetzt die UUID serialisiert oder nicht, sollte egal sein. Ich kann mir gut vorstellen, dass die YML-Umwandlung selbst weiß, wie man UUIDs serialisiert, da braucht es dann keine explizite Transformation.

Btw - für solche Sachen eignen sich Permissions wie durch Luckperms bereitgestellt sehr gut. Dann müsstest du das Rad auch nicht neu erfinden ;)
 

Shoqrii

Redstoneengineer
Registriert
16 Juni 2018
Beiträge
46
Diamanten
301
Minecraft
Shoqrii
Der Teil
Code:
if(Config.cfg.getString(p.getUniqueId() + ".team") == "Projektleitung")
wird niemals zutreffen. Strings werden in Java über String$equals(String) verglichen, nicht über 2 Gleichzeichen. Die 2 Gleichzeichen sollten nur dann eingesetzt werden, wenn man weiß, was man tut oder wenn man primitive Datentypen benutzt.

Und ob man jetzt die UUID serialisiert oder nicht, sollte egal sein. Ich kann mir gut vorstellen, dass die YML-Umwandlung selbst weiß, wie man UUIDs serialisiert, da braucht es dann keine explizite Transformation.

Btw - für solche Sachen eignen sich Permissions wie durch Luckperms bereitgestellt sehr gut. Dann müsstest du das Rad auch nicht neu erfinden ;)
Das hat das Problem gelöst, danke! ;)
 
Oben