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

Spieler einen int zuweisen

EnchantedMC

Minecrafter
Registriert
24 Mai 2017
Beiträge
5
Diamanten
0
Hallo, ich schreibe grade ein Minispiel und möchte jeden Spieler, der in der Lobby ist, an einen unterschiedlichen Spawn teleportieren, der in der Config steht. Ich hab mir das so vorgestellt: Der int i hat einen Wert von 0. Eine Schleife geht jeden Spieler in der Lobby durch. Wenn Spieler X als erstes durchgegangen wird, bekommt er den Wert 1 von int i, und wenn Spieler y als zweites durchgegegangen wird bekommt er den Wert 2 von i usw. Später wird dann abgefragt, welchen wert der spieler bekommen hat. Wenn der wert 1 ist, wird der spieler zu spawn 1 teleportiert, wenn der wert 2 ist, wird er zu spawn 2 teleportiert usw. Die Frage ist, wie stelle ich das an? Oder gibt es eine andere möglichkeit, dem Spieler einen Spawn zuzuweisen? Ich bin mit meinen Kenntnissen am Ende... :confused:

PS: Es ist 1 Uhr Nachts, und ich kann mich nicht richtig konzentrieren, deshalb achtet bitte nicht auf die Rechtschreibung ;)

MfG, zocks1703...
 

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
Eine ganz einfache Methode arbeitet mit Modulu. Nehmen wir man an, dass die Spieler in einer Liste players stehen und die Anzahl der Spawns in spawnCount:
Code:
List<Integer> playerSpawns = new ArrayList<>();
for (int index = 0; index < players.size(); index++) {
    playerSpawns.add(index % spawnCount);
}
Der erste Spieler erhält 0 usw.
 

EnchantedMC

Minecrafter
Registriert
24 Mai 2017
Beiträge
5
Diamanten
0
Eine ganz einfache Methode arbeitet mit Modulu. Nehmen wir man an, dass die Spieler in einer Liste players stehen und die Anzahl der Spawns in spawnCount:
Code:
List<Integer> playerSpawns = new ArrayList<>();
for (int index = 0; index < players.size(); index++) {
    playerSpawns.add(index % spawnCount);
}
Der erste Spieler erhält 0 usw.
Sorry, aber ich kapiere irgendwie den Code nicht so ganz :confused:
 

KillawOrCarel

Kuhfänger
Registriert
15 Juli 2017
Beiträge
78
Diamanten
1
Code:
List<Integer> playerSpawns = new ArrayList<>();
for (int index = 0; index < players.size(); index++) {
    playerSpawns.add(index % spawnCount);
}
  1. ArrayList sollte mit players.size() initialisiert werden
  2. Wofür muss das gespeichert werden? Es kann einfach direkt der Spieler teleportiert werden.
  3. List muss final sein.
  4. Ein Array ist wesentlich sinnvoller und spart unnötige typecasts.

Sorry, aber ich kapiere irgendwie den Code nicht so ganz :confused:
Das passiert halt, wenn man keine Ahnung vom Programmieren hat.
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Wenn du die werte nicht speichern musst geh einfach per schleife alle Spieler durch.
Per Modulo kannst du wie die anderen es erklärt haben die spieler zwischen den möglichen spawnpoint durchwechseln.
Wenn es nur so viele Spieler wie Spawnpunkte geben kann dann kannst du aufs Modulo auch verzichten.
Und falls du es speichern musst, benutz eine HashMap mit der Spieler UUID als schlüsel und den Spawnpunkt als int.
 
Zuletzt bearbeitet:

BlackHole

Workaholic
Registriert
1 Juli 2012
Beiträge
752
Diamanten
0
Minecraft
BlackHole
  1. ArrayList sollte mit players.size() initialisiert werden
  2. Wofür muss das gespeichert werden? Es kann einfach direkt der Spieler teleportiert werden.
  3. List muss final sein.
  4. Ein Array ist wesentlich sinnvoller und spart unnötige typecasts.
1. Ja, das wäre eine kleine Optimierung
3. Es muss nur für wenige Anwendungsfälle final sein (der Compiler weißt ihn dann schon darauf hin)
4. Gerade Anfänger können mit Arrays eher Fehler machen

Metadaten sind recht ineffektiv gelöst und umständlich anzuwenden. Auch erfahrene Pluginprogrammierer verwenden dies sehr selten.

@EnchantedMC
https://de.wikipedia.org/wiki/Division_mit_Rest
 

KillawOrCarel

Kuhfänger
Registriert
15 Juli 2017
Beiträge
78
Diamanten
1
Es muss nur für wenige Anwendungsfälle final sein
Alles, was nicht verwendet wird muss und soll final sein. Einer der wichtigsten Gründe: Quelltext ist lesbarer.

Gerade Anfänger können mit Arrays eher Fehler machen
Wenn das hier C wäre, dann vielleicht (Aber moderne Betriebssysteme lassen das auch nicht zu), aber Java wirft ja bei der falschen Benutzung einen Fehler und Anfänger tuen gut daran zu merken, dass Programmierung eben gerade nicht "einfach" ist, sondern logisches Denken voraussetzt.

Metadaten sind recht ineffektiv gelöst und umständlich anzuwenden. Auch erfahrene Pluginprogrammierer verwenden dies sehr selten.
Die API ist wunderbar. Sie mag eventuelle Performance Probleme haben (habe ich nicht getestet), aber das ist ein Fehler des Servers, nicht des Plugins. Diese API ist nur leider "Low Level" und nicht abstrahiert genug. Man sollte daher einen einen Service haben, welcher Metadaten nur für das eigene Plugin lesen und schreiben kann (Ist ja kein großartige Schwierigkeit).

PS: Die schwachsinnige Behauptung "Pluginprogrammierer" wäre eine Disziplin, in der man "erfahren" sein kann, lass ich einfach mal so stehen.
 
Oben