• 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 erstellen spigot 1.8.8

Status
Für weitere Antworten geschlossen.
A

Adiber

Guest
Guten Tag lieber Leser, ich hoffe, dass Sie mein Problem lösen können.

Ich versuche schon seid einer Woche ein Scoreboard zu erstellen, und habe mir schon ca. 20 Tutorials dazu angeschaut, jedoch können die Leute im Video immer Sachen machen, die ich nicht machen kann, obwohl ich alles mitgemacht habe. Kann mir bitte jemand helfen, denn das kann es nicht sein, dass es bei mir nicht funktioniert.
 
A

Adiber

Guest
Was hast du bis jetzt?
Wie gut kennst du dich mit java aus (Bitte ehrlich...)


Ich habe das Scoreboard durch Zufall jetzt geschafft!, jedoch schaffe ich folgendes nicht:
- Ich möchte im Scoreboard die Kills anzeigen lassen, dafür habe ich die MySQL Datenbank schon eingerichtet, und kann die Kills mit > MySQLKills.getKills(p); < aufrufen, aber ich weiß nicht, wie ich es ins Scoreboard setze. Hier ein Link zur Klasse vom Scoreboard: https://hastebin.com/vajujadoza.java

Achja, und ich kenne mich, auf einer Skala von 1-10, so ca. 4/5/6 aus.
Ich programmiere zwar noch nicht so lange, jedoch habe ich ein halbes Jahr zuvor ein Buch über Java gelesen
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Für die Kills registrierst du ein weiteres Objective. Du überlegst dir dann noch, welchen DisplaySlot dieses Objective verwenden soll.
In diesen Objective verwendest du dann auch wieder setScore() und verwendest hier den Spielernamen als Entry.
 

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
Ich erkläre dir mal kurz was der beste Weg ist ein Scoreboard ohne Packets und geflacker zu erstellen.

1. Erstelle eine extra Klasse wo du für jeden Spieler eine neue Instanz mit einem neuen Scoreboard erstellst.

2. Zunächst erstellst du ein Scorboard (Wichtig ist in der Klasse abspeichern für Updates ;D)
board = Bukkit.getScoreboardManager().getNewScoreboard();

3. Anschließend fügst du die Sidebar hinzu und speicherst sie auch
sidebar = board.registerNewObjective("side", "dummy");
sidebar.setDisplaySlot(DisplaySlot.SIDEBAR);
sidebar.setDisplayName(Title);

4. Anschließend erstellst du für jeden Wert der in Zukunft geändert wird ein neues Scoreboard Team. (Am besten auch abspeichern, erspart die suche)
Team on =board.registerNewTeam("online");
on.setPrefix("§7-> ");
team.setSuffix("§c" + Bukkit.getOnlinePlayers());

5. Du fügst dem Team einen Spieler hinzu, Wichtig jeder muss einzigartig sein!
on.addPlayer("§a");

6. Du fügst die Scores ein
sidebar..getScore("§r").setScore(15);
sidebar..getScore("§8Online:").setScore(14);
sidebar..getScore("§a").setScore(13); <- Da wird das Team eingefügt aufgrund des Spielers!!
sidebar..getScore("§r§r").setScore(12);

7. Du sendest dem Spieler das Scoreboard
player.setScoreboard(board);

8. Du updatest ausschließlich die Suffixe der einzelne Teams und sendest das Scoreboard nicht neu!
on.setSuffx("§c" + Bukkit.getOnlinePlayers());

Ich hoffe es war Verständlich genug ^^.
Liebe Grüße
 
A

Adiber

Guest
Ich erkläre dir mal kurz was der beste Weg ist ein Scoreboard ohne Packets und geflacker zu erstellen.

1. Erstelle eine extra Klasse wo du für jeden Spieler eine neue Instanz mit einem neuen Scoreboard erstellst.

2. Zunächst erstellst du ein Scorboard (Wichtig ist in der Klasse abspeichern für Updates ;D)
board = Bukkit.getScoreboardManager().getNewScoreboard();

3. Anschließend fügst du die Sidebar hinzu und speicherst sie auch
sidebar = board.registerNewObjective("side", "dummy");
sidebar.setDisplaySlot(DisplaySlot.SIDEBAR);
sidebar.setDisplayName(Title);

4. Anschließend erstellst du für jeden Wert der in Zukunft geändert wird ein neues Scoreboard Team. (Am besten auch abspeichern, erspart die suche)
Team on =board.registerNewTeam("online");
on.setPrefix("§7-> ");
team.setSuffix("§c" + Bukkit.getOnlinePlayers());

5. Du fügst dem Team einen Spieler hinzu, Wichtig jeder muss einzigartig sein!
on.addPlayer("§a");

6. Du fügst die Scores ein
sidebar..getScore("§r").setScore(15);
sidebar..getScore("§8Online:").setScore(14);
sidebar..getScore("§a").setScore(13); <- Da wird das Team eingefügt aufgrund des Spielers!!
sidebar..getScore("§r§r").setScore(12);

7. Du sendest dem Spieler das Scoreboard
player.setScoreboard(board);

8. Du updatest ausschließlich die Suffixe der einzelne Teams und sendest das Scoreboard nicht neu!
on.setSuffx("§c" + Bukkit.getOnlinePlayers());

Ich hoffe es war Verständlich genug ^^.
Liebe Grüße

Das bringt mir garnichts, da ich wie gesagt nicht die online Players, sondern die Kills aus meiner MySQL Klasse entnehmen muss!

Für die Kills registrierst du ein weiteres Objective. Du überlegst dir dann noch, welchen DisplaySlot dieses Objective verwenden soll.
In diesen Objective verwendest du dann auch wieder setScore() und verwendest hier den Spielernamen als Entry.

Damit kann ich leider nichts anfangen, da die Erklärung etwas schlecht ist ;D

Für die Kills registrierst du ein weiteres Objective. Du überlegst dir dann noch, welchen DisplaySlot dieses Objective verwenden soll.
In diesen Objective verwendest du dann auch wieder setScore() und verwendest hier den Spielernamen als Entry.


Bitte schick mir den Code
 
Zuletzt bearbeitet von einem Moderator:

LegitCoreYT

Kuhfänger
Registriert
20 August 2016
Beiträge
56
Alter
23
Diamanten
250
Minecraft
NochNichtGebannt
Das bringt mir garnichts, da ich wie gesagt nicht die online Players, sondern die Kills aus meiner MySQL Klasse entnehmen muss!

Dann nimmst du eben statt
Code:
team.setSuffix("§c" + Bukkit.getOnlinePlayers());

Code:
team.setSuffix("§c" + StatsAPI.getKills(p));
Musst halt die getKills Methode abrufen. Des wars
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Wenn du meine Erklärung "schlecht" findest, dann solltest du dich noch etwas mit den Grundlagen von Java beschäftigen. Ich ging bisher davon aus, dass du den vorhandenen Code selbst geschrieben hast und nicht zusammen kopiert.

Entsprechend wirst du bei jeder Kleinigkeit wieder stecken bleiben. Ich empfehle dir, zunächst dieses kostenlose Buch durchzuarbeiten:
http://openbook.rheinwerk-verlag.de/javainsel/
 
A

Adiber

Guest
Dann nimmst du eben statt
Code:
team.setSuffix("§c" + Bukkit.getOnlinePlayers());

Code:
team.setSuffix("§c" + StatsAPI.getKills(p));
Musst halt die getKills Methode abrufen. Des wars

Geht leider nicht!
Dann nimmst du eben statt
Code:
team.setSuffix("§c" + Bukkit.getOnlinePlayers());

Code:
team.setSuffix("§c" + StatsAPI.getKills(p));
Musst halt die getKills Methode abrufen. Des wars

Sie dir den SRC-Code an, und sag mir, was daran nicht so ist, wie du es meintest? : https://hastebin.com/ocekatolic.java

Wenn du meine Erklärung "schlecht" findest, dann solltest du dich noch etwas mit den Grundlagen von Java beschäftigen. Ich ging bisher davon aus, dass du den vorhandenen Code selbst geschrieben hast und nicht zusammen kopiert.

Entsprechend wirst du bei jeder Kleinigkeit wieder stecken bleiben. Ich empfehle dir, zunächst dieses kostenlose Buch durchzuarbeiten:
http://openbook.rheinwerk-verlag.de/javainsel/
Erstens : Kein Copy und Paste! Zweitens: https://hastebin.com/ocekatolic.java

Wenn du meine Erklärung "schlecht" findest, dann solltest du dich noch etwas mit den Grundlagen von Java beschäftigen. Ich ging bisher davon aus, dass du den vorhandenen Code selbst geschrieben hast und nicht zusammen kopiert.

Entsprechend wirst du bei jeder Kleinigkeit wieder stecken bleiben. Ich empfehle dir, zunächst dieses kostenlose Buch durchzuarbeiten:
http://openbook.rheinwerk-verlag.de/javainsel/

Schick mir doch einfach den Code, wenn du helfen willst!

Wenn du meine Erklärung "schlecht" findest, dann solltest du dich noch etwas mit den Grundlagen von Java beschäftigen. Ich ging bisher davon aus, dass du den vorhandenen Code selbst geschrieben hast und nicht zusammen kopiert.

Entsprechend wirst du bei jeder Kleinigkeit wieder stecken bleiben. Ich empfehle dir, zunächst dieses kostenlose Buch durchzuarbeiten:
http://openbook.rheinwerk-verlag.de/javainsel/

Ich verstehe nicht, was du mit nimm den Spielernamen als Entry meinst
 
Zuletzt bearbeitet von einem Moderator:
F

Figz

Guest
Alter bist du nervig..
Ich programmiere zwar noch nicht so lange, jedoch habe ich ein halbes Jahr zuvor ein Buch über Java gelesen

Kann man dir nicht glauben, sry.
Schick mir doch einfach den Code, wenn du helfen willst!
Wo bliebt denn dann der Lerneffekt?

Erstens : Kein Copy und Paste! Zweitens: https://hastebin.com/ocekatolic.java
Lustig, dass die Scoreboardcodes sich immer so ähneln bei den Anfängern und auch immer gleich beschissen aufgebaut sind:
https://minecraft-server.eu/forum/t...icht-den-richtigen-rang-an.42897/#post-253544

Ich hätte da eine selbstgeschriebene ScoreboardAPI (Auch wenn es bereits Tausend gibt), werde sie dir jedoch aufgrund deiner bis jetzt gezeigten Undankbarkeit nicht zur Verfügung stellen.

Und hör auf mit denen Multi-Posts!
 
A

Adiber

Guest
Alter bist du nervig..


Kann man dir nicht glauben, sry.

Wo bliebt denn dann der Lerneffekt?


Lustig, dass die Scoreboardcodes sich immer so ähneln bei den Anfängern und auch immer gleich beschissen aufgebaut sind:
https://minecraft-server.eu/forum/t...icht-den-richtigen-rang-an.42897/#post-253544

Ich hätte da eine selbstgeschriebene ScoreboardAPI (Auch wenn es bereits Tausend gibt), werde sie dir jedoch aufgrund deiner bis jetzt gezeigten Undankbarkeit nicht zur Verfügung stellen.

Und hör auf mit denen Multi-Posts!

Wenn ich deine ScoreboardAPI nehmen würde, würde sie auch gleich aussehen, und wie gesagt, ich programmiere noch nicht so lange, aber habe zuvor ein Buch gelesen. Außerdem habe ich um Hilfe gefragt, wenn du mir keine gibst, dann schreib nichts! Und bei Hilfe geht man normalerweise auf die Probleme des anderen ein, und kritisiert nicht!

Das ist eine perfekte Anleitung und du kannst das Suffix zu jeden beliebigen Wert ändern.

Ja schon, aber dafür müsste ich folgendes einsetzen: MySQLKills.getKills(p), jedoch geht das nicht, da ich keinen Player p definiert habe. Wenn ich das mache, dann müsste ich in meiner Hauptklasse die Instanz auch ändern, jedoch würde er in die Klammern dann "null" setzen, und so funktioniert das ganze nicht mehr
 
Zuletzt bearbeitet von einem Moderator:

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
Ich erkläre es nochmal ._.
1. Erstelle eine extra Klasse wo du für jeden Spieler eine neue Instanz mit einem neuen Scoreboard erstellst.

Das sieht dann etwa so aus

private static HashMap<Player, PlayerBoard> boardByPlayer = new HashMap<>();

private Scoreboard board;
private Player p;

public PlayerBoard(Player p) {
// Dann der rest den ich gemacht habe
boardByPlayer.put(p, this);
}

Uhh da taucht ja das p auf :eek:
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Ja, du musst dir überlegen, ob jeder Spieler exakt das selbe Scoreboard sehen soll oder jede Spieler z.B. seine eigenen Kills an der selben Stelle. Im letzteren Fall benötigt jeder Spieler seine eigene Scoreboard-Instanz.

Dein MySQLKills.getKills(p) solltest du so umschreiben, dass dort nicht eine Spielerinstanz übergeben wird, sondern die UUID des Spielers. Denn in der Datenbank wirst du die Kills doch sicher auch mit der UUID der Spieler speichern?
 
A

Adiber

Guest
Ich erkläre es nochmal ._.


Das sieht dann etwa so aus

private static HashMap<Player, PlayerBoard> boardByPlayer = new HashMap<>();

private Scoreboard board;
Ja, du musst dir überlegen, ob jeder Spieler exakt das selbe Scoreboard sehen soll oder jede Spieler z.B. seine eigenen Kills an der selben Stelle. Im letzteren Fall benötigt jeder Spieler seine eigene Scoreboard-Instanz.

Dein MySQLKills.getKills(p) solltest du so umschreiben, dass dort nicht eine Spielerinstanz übergeben wird, sondern die UUID des Spielers. Denn in der Datenbank wirst du die Kills doch sicher auch mit der UUID der Spieler speichern?

private Player p;

public PlayerBoard(Player p) {
// Dann der rest den ich gemacht habe
boardByPlayer.put(p, this);
}
Ja, in der MySQL werden die Spieler mit der UUID gespeichert

Ja, du musst dir überlegen, ob jeder Spieler exakt das selbe Scoreboard sehen soll oder jede Spieler z.B. seine eigenen Kills an der selben Stelle. Im letzteren Fall benötigt jeder Spieler seine eigene Scoreboard-Instanz.

Dein MySQLKills.getKills(p) solltest du so umschreiben, dass dort nicht eine Spielerinstanz übergeben wird, sondern die UUID des Spielers. Denn in der Datenbank wirst du die Kills doch sicher auch mit der UUID der Spieler speichern?

Kannst du mir nicht einfach schreiben, wie das aussehen würde, wenn ich das machen soll, wie du sagst?
 
Zuletzt bearbeitet von einem Moderator:

Leon338

Minecrafter
Registriert
16 Mai 2012
Beiträge
8
Diamanten
0
Kannst du mir nicht einfach schreiben, wie das aussehen würde, wenn ich das machen soll, wie du sagst?

Eyy hier stehen jetzt 100 Beispiele ... Wen du das noch immer nicht verstehst solltest du dein Buch vielleicht nochmal lesen und nicht nur die Bilder angucken .. Ganzen Quellcode zu senden macht ja keinen Sinn, weil du lernst ja dann nichts
 
A

Adiber

Guest
Eyy hier stehen jetzt 100 Beispiele ... Wen du das noch immer nicht verstehst solltest du dein Buch vielleicht nochmal lesen und nicht nur die Bilder angucken .. Ganzen Quellcode zu senden macht ja keinen Sinn, weil du lernst ja dann nichts

Anstatt, das ihr dauernd Sachen schreibt, mit denen ich nichts anfangen kann, weil ich dieses Bildliche vorstellen noch nicht ganz kann, könntet ihr mir einfach den Quellcode schicken, und dann könnte ich daraus lernen


Eyy hier stehen jetzt 100 Beispiele ... Wen du das noch immer nicht verstehst solltest du dein Buch vielleicht nochmal lesen und nicht nur die Bilder angucken .. Ganzen Quellcode zu senden macht ja keinen Sinn, weil du lernst ja dann nichts

Und übrigens, ich habe es so gemacht, wie in einem anderen Plugin von mir auch, jedoch ist dieses schon älter, und funktioniert daher leider nicht


Ja, du musst dir überlegen, ob jeder Spieler exakt das selbe Scoreboard sehen soll oder jede Spieler z.B. seine eigenen Kills an der selben Stelle. Im letzteren Fall benötigt jeder Spieler seine eigene Scoreboard-Instanz.

Dein MySQLKills.getKills(p) solltest du so umschreiben, dass dort nicht eine Spielerinstanz übergeben wird, sondern die UUID des Spielers. Denn in der Datenbank wirst du die Kills doch sicher auch mit der UUID der Spieler speichern?

Bei einem Plugin von meinem Freund hat es mit einer Methode funktioniert, die bei mir nicht so geht
 
Zuletzt bearbeitet von einem Moderator:

moinless

Schafhirte
Registriert
4 Oktober 2013
Beiträge
103
Diamanten
302
Wenn du mit den ganze Sachen, die hier geschrieben wurden, nichts anfangen kannst, solltest du definitiv das Buch, welches BlackHole vorgeschlagen hat, erst lesen, bevor du anfängst zu programmieren.

Ich würde jetzt ehrlich gesagt einfach mal raten, dass du all deine bisherigen Projekte mit Youtube Tutorials gemacht hast und kein Buch vorher gelesen hast. Oder dieses war einfach nur grottenschlecht.
 
F

Figz

Guest
Ich selbst habe mir das Entwickeln (ANFANGS!) auch nur mit learning by doing beigebracht.

Es ist nicht falsch ein Projekt zu haben, mit dem man dann das Entwickeln lernt, jedoch sollte man dann auch versuchen selbst etwas dazu beizusteuern und nicht tausend mal nach einem perfekt fertigen Code fragen!

Und um ganz ehrlich zu sein, gehen mir deine frechen Antworten sowas von auf den SACK!
Schafft es nicht einen so simplen Code fertig zu stellen, obwohl er schon einen fast fertigen bekommen hat und reißt seine Fresse dennoch so weit auf.

So viele Leute haben dir hier geholfen und dir wirklich SEHR GUTE Antworten geliefert.
Wenn du damit nix anfangen kannst, weil du dein Hirn nicht anstrengen willst, dann ist das DEIN EIGENES PECH! Du bist dir schließlich auch zu fein mal den LIKE-Button zu drücken, obwohl die Leute es verdient haben.

Ändere lieber deine Einstellung oder lass das Programmieren sein. GANZ EINFACH

Wenn ich deine ScoreboardAPI nehmen würde, würde sie auch gleich aussehen

Woher willst du das wissen? Hast du den Quellcode gesehen? Nicht aus Spaß schreibt man sich eine eigene, wenn es so viele im Internet gibt xD

EDIT: Kleine Frage am Rande... Du sagst immer nur, dass es nicht funktioniert.. Was genau funktioniert denn nicht? Was ist das konkrete Problem?
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Oben