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

Cooldown trotz bypass Permission

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Guten morgen,

ich habe folgendes Problem: Ich habe einen ChatListener der 1. das Chatformat regelt, 2. einen Chat Cooldown
für Spieler bietet & 3. (falls aktiviert) den Chat deaktiviert. Jetzt ist das Problem das der Cooldown aktuell bei
allen Spieler vorhanden ist.. Hier ist der Code (Und bitte kein Geflame wie schlecht er ist xD)


Code:
@EventHandler
    public void onChat(AsyncPlayerChatEvent e) {
        Player p = e.getPlayer();
        if(!p.hasPermission("pc.chat") || !p.hasPermission("pc.prem+") || p.hasPermission("pc.staff")) {
            if(!GmuteCommand.gmute.contains(true)) {
                e.getMessage();
                if(!cooldowns.containsKey(p.getName())) {
                    cooldowns.put(p.getName(), System.currentTimeMillis());

                    Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getPlugin(), new Runnable() {
                       
                        @Override
                        public void run() {

                            if(cooldowns.containsKey(p.getName())) {
                                cooldowns.remove(p.getName());
                            }
                        }
                    }, 20 * 3);
                } else {
                    e.setCancelled(true);
                    p.sendMessage(Main.prefix + "§7Du kannst nur alle §63 Sekunden §7schreiben!");
                }
            } else {
                p.sendMessage(Main.prefix + "§7Der Chat ist aktuell §cDeaktiviert§7!");
                e.setCancelled(true);
            }
        } else
            if(!GmuteCommand.gmute.contains(true)) {
                e.getMessage();
            } else {
                p.sendMessage(Main.prefix + "§7Der Chat ist aktuell §cDeaktiviert§7!");
                e.setCancelled(true);
            }
    }
 
F

Figz

Guest
Code:
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
Playerp=e.getPlayer();

if(GmuteCommand.gmute.contains(p) || (!p.hasPermission("pc.chat") && (!p.hasPermission("pc.prem+") ||!p.hasPermission("pc.staff"))))
{
p.sendMessage(Main.prefix+"§7Der Chat ist aktuell §cDeaktiviert§7!");
e.setCancelled(true);
return;
}

if(!cooldowns.contains(p))
{
Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(), newRunnable() {
@Override
public void run() {
// if kann eig auch weggelassen werden...
if(cooldowns.contains(p)) {
cooldowns.remove(p);
}
}
}, 20*3);
}
else
{
e.setCancelled(true);
p.sendMessage(Main.prefix+"§7Du kannst nur alle §63 Sekunden §7schreiben!");
}
}

Ich unterstelle einfach mal dass..
- GmuteCommand.gmute eine List<Player> ist
- cooldowns eine List<Player> ist
- Spieler nicht schreiben können, wenn sie gemutet sind - unabhängig davon, ob sie Premium oder Staff sind.
- Spieler schreiben können, obwohl sie keine chatpermission haben, sobald sie Premium oder Staff sind.
 
Zuletzt bearbeitet von einem Moderator:

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Hups ^^ Ja die abfrage mit "p.hasPermission("pc.staff")" war fehlerhaft ^^ Danke für das
"leiten" ^^

Um die 2 Fragen noch zu beantworten:

Aktuell soll Niemand schreiben können wenn das aktiviert ist & "GuteCommand.gmute" ist
meine ArrayList welche sich in der Class "GmuteCommand" befindet & "gmute" heißt ^^
 

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Das mit der Übersichtlichkeit lass ich mal außen vor ^^ Ist nicht mein Ding, jedoch hält
sich dein Code exakt 0 an die Java Conventions :D Desweiteren hast du die "if" abfragen
ein wenig seltsam gemacht ._. Du fragst im Prinzip ab ob ein Spielername in der ArrayList
ist welche den Global Mute spiegelt & gleichzeitig ob er die Permission nicht hat bzw bei
den Perms sogar ein "&&" was überhaupt keinen Sinn ergibt ^^

Ich glaube dein Code hat mich grad mehr verwirrt als das Grundproblem xD #NoHate ^^
 
F

Figz

Guest
Ist okay, musst du nicht benutzen, war nur ein Vorschlag. Und zur Orientierung da ;)

edoch hält
sich dein Code exakt 0 an die Java Conventions
Beispiel?

GmuteCommand.gmute.contains(true)

Wie sieht es damit aus? Was sagen die Java Conventions dazu?

Wenn ich mich nicht an welche halte, liegt es daran, dass ich deine Fehler mit übernommen habe :)

EDIT: #noHate
 

AconTM

Schafhirte
Registriert
15 Juni 2015
Beiträge
118
Alter
29
Diamanten
260
Minecraft
AconTM
Zu den Conventions gehört z.b die Formatierung des Codes ^^ D.h deine Formatierung
kann nicht von mir übernommen worden sein :p Aber ist ja auch egal ^^ Das Problem
ist gelöst & es soll hier ja auch keine Diskussion entstehen.

Lg. AconTM
 
Oben