• 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 MySQL-Stats abfragen

A

Adiber

Guest
Guten Tag liebe Community von Minecraft-ServerEU! Ich habe folgendes Problem, und hoffe, dass ihr mir helfen könnt. Zuvor sage ich, dass ich noch nicht so viel Erfahrung mit Java (vor allem Minecraft) -Programmierung habe, und daher auf euren Quell-Code angewiesen bin. [Also keine Erklärungen, die vielleicht etwas zu schwer sein könnten]

Ich habe in einer MySQLKills Klasse die Kills gespeichert, und die ganzen Methoden erstellt: [Weiter runter für die Scoreboard Klasse!]
Code:
package mysql;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
import org.bukkit.entity.Player;

public class MySQLKills {

    public static boolean isUserExists(UUID uuid) {
        try {
            ResultSet rs = MySQLFile.mysql.query("SELECT * FROM Kills WHERE UUID= '" + uuid + "'");
            if (rs.next()) {
                return rs.getString("UUID") != null;
            }

            return false;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    public static void setKills(UUID uuid, String playername, int kills) {
        if (isUserExists(uuid)) {
            MySQLFile.mysql.update("UPDATE Kills SET ANZAHL= '" + kills + "' WHERE UUID = '" + uuid + "';");
        } else {
            createPlayer(uuid, playername);
            setKills(uuid, playername, kills);
        }
    }

    public static void createPlayer(UUID uuid, String playername) {
        if (!isUserExists(uuid))
            MySQLFile.mysql.update(
                    "INSERT INTO Kills(UUID, SPIELERNAME, ANZAHL) VALUES ('" + uuid + "', '" + playername + "', '0');");
    }

    public static int getKills(Player p) {
        try {
            ResultSet rs = MySQLFile.mysql.query("SELECT * FROM Kills WHERE UUID = '" + p.getUniqueId() + "';");
            if (rs.next())
                return rs.getInt("ANZAHL");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return 0;
    }

}


Und hier habe ich meine Scoreboard Klasse, ich weiß aber nicht, wie ich die Kills eines Spielers abfragen, und dann für jeden SEINE Kills im Scoreboard anzeigen lassen kann. Zusätzlich brauche ich dann auch noch eine UPDATE Methode, aber ich weiß auch nicht ganz, wie ich die machen könnte.
Code:
package at.adiber.utils;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Team;

import net.md_5.bungee.api.ChatColor;

public class Scoreboard implements Listener {
   
    public org.bukkit.scoreboard.Scoreboard sb;
   
    public Scoreboard() {
       
        this.sb = Bukkit.getScoreboardManager().getNewScoreboard();

        Objective o = this.sb.registerNewObjective("dummy", "stats");
        o.setDisplaySlot(DisplaySlot.SIDEBAR);
        o.setDisplayName("§7┃ §a§lGunGame §7┃");
        o.getScore(ChatColor.BLACK.toString()).setScore(8);
        o.getScore("§2Map:").setScore(7);
        o.getScore("§8» §f" + Bukkit.getMotd()).setScore(6);
        o.getScore(ChatColor.RED.toString()).setScore(5);
        o.getScore("§2Kills:").setScore(4);
        o.getScore("§8»§f ").setScore(3);
        o.getScore(ChatColor.GREEN.toString()).setScore(2);
        o.getScore("§2Höchste Streak: ").setScore(1);
        o.getScore("§8» §f").setScore(0);

        Team owner = this.sb.registerNewTeam("00001owner");
        Team admin = this.sb.registerNewTeam("00002admin");
        Team dev = this.sb.registerNewTeam("00003dev");
        Team mod = this.sb.registerNewTeam("00004mod");
        Team sup = this.sb.registerNewTeam("00005sup");
        Team builder = this.sb.registerNewTeam("00006builder");
        Team vip = this.sb.registerNewTeam("00007vip");
        Team player = this.sb.registerNewTeam("00008player");

        owner.setPrefix("§4Owner §8:§4 ");
        admin.setPrefix("§4Admin §8:§4 ");
        dev.setPrefix("§bDev §8:§b ");
        mod.setPrefix("§cMod §8:§c ");
        builder.setPrefix("§2Builder §8:§2 ");
        sup.setPrefix("§9Sup §8:§9 ");
        vip.setPrefix("§ePremium §8: §e");
        player.setPrefix("§a");
    }
    public void sendToPlayer(Player p) {

        for (Player all : Bukkit.getOnlinePlayers()) {
            if (all.hasPermission("system.owner"))
                this.sb.getTeam("00001owner").addEntry(all.getName());
            else if (all.hasPermission("system.admin"))
                this.sb.getTeam("00002admin").addEntry(all.getName());
            else if (all.hasPermission("system.dev"))
                this.sb.getTeam("00003dev").addEntry(all.getName());
            else if (all.hasPermission("system.mod"))
                this.sb.getTeam("00004mod").addEntry(all.getName());
            else if (all.hasPermission("system.sup"))
                this.sb.getTeam("00005sup").addEntry(all.getName());
            else if (all.hasPermission("system.builder"))
                this.sb.getTeam("00006builder").addEntry(all.getName());
            else if (all.hasPermission("system.vip"))
                this.sb.getTeam("00007vip").addEntry(all.getName());
            else {
                this.sb.getTeam("00008player").addEntry(all.getName());
            }
        }
        p.setScoreboard(this.sb);
    }
}

DANKE schon mal für die Antworten, und bitte nur Antworten schicken, die mir helfen und nicht so was wie: "Lies vorher ein Buch, bevor du denkst programmieren zu können", da ich schon ein Buch angefangen habe zu lesen.

Mit freundlichen Grüßen Adiber
 
F

Figz

Guest
Ernsthaft? Im anderen Thread hast du genug Hilfe bekommen xD
Meinst du in diesem wird es besser?

Um dir das einfach noch einmal deutlich zu machen..
Du verstehst einfach selbst nicht was und warum du es tust.

Und wenn du deinen eigenen Code nicht verstehst, wie sollst du dann den Code anderer verstehen? Somit ist es eigentlich unmöglich dir zu helfen.
 
Zuletzt bearbeitet von einem Moderator:

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Im Grunde ganz simpel. Joint ein Spieler lädst du am besten seine Daten und speicherst diese in einer Map.
Dann kannst du problemlos auf die Kills eines Spielers zugreifen, diese ändern und sobald der Spieler den server verlässt auch wieder in die Datenbank speichern.

Und wenn du schon source code willst, dann benutz google. Alles was ich da jetzt geschrieben habe kann man in weniger als 20 Zeilen machen auch ohne fortgeschrittenes wissen.
 
A

Adiber

Guest
Im Grund ganz simpel. Joint ein Spieler lädst du am besten seine Daten und speicherst diese in einer Map.
Dann kannst du problemlos auf die Kills eines Spielers zugreifen, diese ändern und sobald der Spieler den server verlässt auch wieder in die Datenbank speichern.

Und wenn du schon source code willst, dann benutz google. Alles was ich da jetzt geschrieben habe kann man in weniger als 20 Zeilen machen auch ohne fortgeschrittenes wissen.

Habe ich das richtig verstanden: Ich soll die Kills beim Joinen in eine Hashmap laden, und dann wenn ich sie ins Scoreboard setzen will einfach der Hashmap entnehmen?

Ernsthaft? Im anderen Thread hast du genug Hilfe bekommen xD
Meinst du in diesem wird es besser?

Um dir das einfach noch einmal deutlich zu machen..
Du verstehst einfach selbst nicht was und warum du es tust.

Und wenn du deinen eigenen Code nicht verstehst, wie sollst du dann den Code anderer verstehen? Somit ist es eigentlich unmöglich dir zu helfen.

Wenn du nicht lesen kannst, dann lass die Kommentare!, denn wie ich schon zum ca. 13 Mal sage: Ich programmiere noch nicht so lange! Und das Scoreboard ist das schwerste, was ich bisher machen muss. (Habe aber auch schon ein SyndicateGames-Plugin gemacht)
 
Zuletzt bearbeitet von einem Moderator:

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Habe ich das richtig verstanden: Ich soll die Kills beim Joinen in eine Hashmap laden, und dann wenn ich sie ins Scoreboard setzen will einfach der Hashmap entnehmen?
Yep genau dass. Und ein tipp damit du dich hier im Forum nicht noch unbeliebter machst. Vermeide mehrfach Posts und pack alles in einen Post.
 
Oben