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

Scoreboard

Besonderes

Minecrafter
Registriert
20 April 2020
Beiträge
5
Diamanten
300
Minecraft
Besonderes
Hey liebe Community,

ich bin noch ein ziemlicher Anfänger im Programmieren von Spigot Plugins aber ich hab mich daran versucht ein Scorboard bzw. Tablist zu programmieren.
Mein Ziel war es, dass Scoreboard zu ordnen und bei Teammitgliedern bzw. Spielern mit OP ein Suffix mit Team erscheinen zu lassen (z.B. 04Nvco | Team).

Hier der Code:

JoinListener:
Code:
package de.Nvco.IzumaCity.listeners;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.scoreboard.Scoreboard;

public class JoinListener implements Listener {

    @EventHandler
    public void handlePlayerJoin(PlayerJoinEvent e) {

        e.setJoinMessage("§e§lIZUMA | §a§rDer Spieler §6" + e.getPlayer().getName() + "§a hat den Server betreten.");
        Player p = e.getPlayer();

        Scoreboard sb = Bukkit.getScoreboardManager().getNewScoreboard();

        sb.registerNewTeam("00Team");
        sb.registerNewTeam("05Spieler");

        sb.getTeam("00Team").setSuffix("| §4§lTeam");
        sb.getTeam("05Spieler").setPrefix("§7");

        String team = "";

        if (p.hasPermission("Server.Team")|| p.isOp()) {
            team = "00Team";
        } else {
            team = "05Spieler";
        }

        sb.getTeam(team).addPlayer(p);
        p.setDisplayName(sb.getTeam(team).getPrefix() + p.getName());

        for (Player all : Bukkit.getOnlinePlayers()) {
            all.setScoreboard(sb);

        }
    }
}

Main:
Code:
package de.Nvco.IzumaCity.main;

import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

    private static String prefix = "§7[§cIzumaCity§7] ";

    @Override
    public void onEnable() {
        System.out.println(prefix + "§awurde aktiviert!");

        this.getServer().getPluginManager().registerEvents(this, this);

    }

    @Override
    public void onDisable() {
        System.out.println(prefix + "§cwurdedeaktiviert!");
    }

}

Leider funktioniert es nicht und Ingame passiert so ziemlich nix.

Kann mir jemand helfen bzw Tipps geben?
 
D

deleted201136

Guest
Du gibst dort zwar an, dass du Spieler beim PlayerJoin einem Team zuweist, aber nirgendswo sehe ich eine Möglichkeit,
diese wieder zu entfernen. Ich arbeite nicht sonderlich viel mit Scoreboards, aber wäre das vllt. eine mögliche Ursache deines Problems? (Sprich, dass Spieler in mehreren Teams sind und deshalb die Tabliste nicht, so wie gewünscht, angezeigt wird?)
 

Besonderes

Minecrafter
Registriert
20 April 2020
Beiträge
5
Diamanten
300
Minecraft
Besonderes
Danke für die schnelle Antwort.

Java:
    if (p.hasPermission("Server.Team")|| p.isOp()) {
            team = "00Team";
        } else {
            team = "05Spieler";
        }

Sprich, dass Spieler in mehreren Teams sind und deshalb die Tabliste nicht, so wie gewünscht, angezeigt wird?
Es ist ziemlich einfach gemacht, da entweder der Spieler die Rechte (Server.Team) hat (oder OP hat), falls dies der Fall ist wird die erste if benutz falls nicht wird er der Gruppe "Spieler" zugewiesen.
Das bedeutet, es ist nicht möglich dass der Spieler in 2 Gruppen sein kann.

aber nirgendswo sehe ich eine Möglichkeit, diese wieder zu entfernen
Dies will ich später noch in den Code einbauen

Ich hatte schon die Idee, dass es etwas mit der Main.java zutun hat, also dass ich es vielleich nicht richtig registriert habe o.ä.
 
D

deleted201136

Guest
1. Ist es durchaus möglich, dass der Spieler in zwei verschiedenen Teams ist.
Folgendes Szenario: Spieler ohne Op joint und wird dem Team "05Spieler" zugewiesen. Er wird zum Operator ernannt, verlässt den Server und betritt ihn erneut. Er durchläuft wieder das Joinevent und ist nun im Team "00Team". Da du die Teams nirgendswo "aufräumst" ist es gut möglich, dass Spieler in mehreren Teams sind.
2. Bzgl Listenerregistrierung: Lass dir doch einfach mehrere Debugstrings ausgeben um zu checken, welche Teile deines Codes ausgeführt werden (inkl. des Listeners).
 

Besonderes

Minecrafter
Registriert
20 April 2020
Beiträge
5
Diamanten
300
Minecraft
Besonderes
1. Ist es durchaus möglich, dass der Spieler in zwei verschiedenen Teams ist.
Folgendes Szenario: Spieler ohne Op joint und wird dem Team "05Spieler" zugewiesen. Er wird zum Operator ernannt, verlässt den Server und betritt ihn erneut. Er durchläuft wieder das Joinevent und ist nun im Team "00Team". Da du die Teams nirgendswo "aufräumst" ist es gut möglich, dass Spieler in mehreren Teams sind.
Gute Idee, vielen Dank. Ich lasse einfach für diesen Spieler die Teams reseten bei einem Rejoin, dass er aus allen entfernt wird und je nach dem welche Rechte er hat, er zugeteilt wird.

2. Bzgl Listenerregistrierung: Lass dir doch einfach mehrere Debugstrings ausgeben um zu checken, welche Teile deines Codes ausgeführt werden (inkl. des Listeners).
Mach ich.
 

Besonderes

Minecrafter
Registriert
20 April 2020
Beiträge
5
Diamanten
300
Minecraft
Besonderes
Java:
this.getServer().getPluginManager().registerEvents(new JoinListener(), this);

Ich habe den JoinListener jetzt genannt, doch es funktioniert trotzdem nicht.
Wie ich bereits erwähnt habe bin ich noch ein ziemlicher Anfänger deshalb bin ich mir nicht sicher ob ich dies richtig gemacht habe :oops:
 
D

deleted201136

Guest
Erstmal kannst du noch die Implementierung des Listeners aus der Mainklasse entfernen.
Ich gehe einmal davon aus, dass du den Listener auch importiert hast.
Kannst du mir sagen was genau "trotzdem nicht funktioniert"? Wie sieht es mit den Debugstrings aus?
 
Oben