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

Wieso funktioniert die Blockdistance nicht?

Kraetzy

Redstoneengineer
Registriert
16 Dezember 2017
Beiträge
41
Alter
22
Diamanten
250
Minecraft
MinesuchtBOT
Hey,

Die MSG soll auf beim Schreien auf 35 Blöcke begrenzt sein, und beim Flüstern auf 3, dennoch ist sie Global, warum?

Schreien:
Code:
        Player p = (Player) sender;
        int blockDistance = 35;
       
        if (args.length > 0) {
            for(Player t : Bukkit.getOnlinePlayers()) {
            Location plocation = t.getLocation();
            if(p.getLocation().distance(plocation) <= blockDistance) {
               
                    
                    }
    
                   
                    }
                   
            }
         if (args.length > 0) {
             String message = "";
             for (int i = 0; i < args.length; i++) {
                 message += args[i] + " ";
            }
            for (Player near : Bukkit.getOnlinePlayers()) {
                near.sendMessage("§7" + p.getName() + " schreit §8» §7" + message);

            }
            }

Flüstern:
Code:
        Player p = (Player) sender;
        int blockDistance = 35;
       
        if (args.length > 0) {
            for(Player t : Bukkit.getOnlinePlayers()) {
            Location plocation = t.getLocation();
            if(p.getLocation().distance(plocation) <= blockDistance) {
               
                    
                    }
    
                   
                    }
                   
            }
         if (args.length > 0) {
             String message = "";
             for (int i = 0; i < args.length; i++) {
                 message += args[i] + " ";
            }
            for (Player near : Bukkit.getOnlinePlayers()) {
                near.sendMessage("§7" + p.getName() + " schreit §8» §7" + message);

            }
            }


Normaler Chat(Funktioniert):
Code:
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(near.hasPermission("system.supporter")) {
                    near.sendMessage("§7" + p.getName() + " sagt §8» §7" + msg);
                   
                } else {
                    near.sendMessage("§7" + p.getName() + " sagt §8» §7" + msg);
                }
            }
           
        }
       
        e.getRecipients().clear();
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Deine Hilferufe hier nehmen wirklich rasant zu.
Vielleicht solltest du zukünftig deine Probleme in einen themabezogenen Thread bündeln und nicht für jedes Problem ein einzelnes Thema aufrollen.

Nun zum Eigentlichen:

Mit deinem Code kann ich persönlich nicht viel anfangen, da jeglicher Kontext fehlt.
In welchen Methoden setzt du den Code ein? Ist der Listener überhaupt registriert?
Eins sticht mir dennoch ins Auge: Wo unterscheidest du bitte zwischen flüstern, schreien und global chatten?

Dann schreibst du auch teilweise Abfragen, welche du nie nutzt, da du die folgenden Blöcke immer leer lässt.
Da wird sehr wahrscheinlich auch das Problem liegen - du platzierst deinen Code in fast schon willkürlicher Reihenfolge.

  • if(p.getLocation().distance(plocation) <= blockDistance) {
  • }
  • }
  • }
Was zum Geier hat das für einen Sinn und Zweck? :yuno:

  • if (args.length > 0) {
  • String message = "";
  • for (int i = 0; i < args.length; i++) {
  • message += args + " ";



    • }



    • for (Player near : Bukkit.getOnlinePlayers()) {



    • near.sendMessage("§7" + p.getName() + " schreit §8» §7" + message);





    • }
Gleich unter der Abfrage folgt dann der gewünschte Code.... allerdings ist er so platziert, dass die if-Abfrage darüber wirkungslos ist.

Beschäftige dich bitte mal mit Programmabläufen in Java.
Ich glaube, dass es da bei dir noch einige Missverständnisse gibt.
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Die /w (Flüstern) Befehl soll nur für jeden Spieler in der Umgebung von 3 Blöcken zu sehen sein.
Das ist soweit klar, aber der Codeblock, der nur ausgeführt wird, wenn alle Bedingungen deiner Abfrage erfüllt sind, ist leer.
Du führst den Code genau dadrunter aus, was dazu führt, dass deine eigentliche Abfrage quasi ignoriert wird.

Code:
anderer Code der unabhängig von der Abfrage ausgeführt wird

if (1 == 1) {
  Code der nur ausgeführt wird, wenn 1 == 1 "true" ergibt, also wahr ist.
}

anderer Code der unabhängig von der Abfrage ausgeführt wird

Verstehst du was ich meine?
 
Oben