Wie programmiert man in ein Scoreboard ein wie viele blöcke gesetzt und abgebaut wurden??

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Du nimmst 2 Maps ... HashMap<UUID, double>

Als UUID nimmste den Spieler, wenn der Spieler ein Block platziert, updatest du den Wert in der ersten Map. Wenn ein Spieler einen Block abbaut, updatest du den Wert in der zweiten Map. Speicherst die Werte alle paar Minuten in ein File.


blxckocean 
Fragesteller
 10.06.2018, 18:27

Ok danke, aber kannst du mir mal vielleicht schicken, wie du das machen würdest. Verstehe das nicht ganz

0
Xearox  10.06.2018, 18:42
@blxckocean

Das ist jetzt nur so in etwa, habe ich jetzt nicht in Eclipse gemacht

Du hast eine Hauptklasse, die nennen wir jetzt einfach Main. Dort hast du 2 Statische HashMaps

public static HashMap<UUID, Double> playerBlockBreakMap = new HashMap<>();
public static HashMap<UUID, Double> playerBlockPlaceMap = new HashMap<>();

Dann hast du 2 Listener. Einmal BlockPlaceEvent und einmal BlockBreakEvent

UUID uuid = event.getPlayer.getUniqueId();
if(Main.playerBlockBreakMap.containsKey(uuid)){
  Main.playerBlockBreakMap.replace(uuid, Main.playerBlockBreakMap.get(uuid)++);
} else {
  Main.playerBlockBreakMap.put(uuid, 1D);
}

Das Scoreboard kannst du dann einfach updaten lassen, sobald das Update durch ist. Das Speichern solltest du allerdings nicht jedes Mal machen, wenn das Event aufgerufen wird, sondern alle paar Minuten, denn, wenn du es jedes Mal machst und der Spieler z.B. ganz viele Blöcke hintereinander platziert oder abbaut und das 100 Spieler gleichzeitig machen, hast du eine enorme Festplatten Aktivität.

Wenn du genau wissen willst, welcher Block der Spieler abgebaut hat, muss du die Map wie folgt anlegen.

HashMap<UUID, BlockData>

Die Klasse BlockData musst du dann aber selbst noch anlegen. Aber das wirst du sicherlich wissen, wie man eine Klasse erstellt und was dort rein muss.

Um die Daten zu bekommen, um was für ein Block es sich handelt, kannst du mit meiner API machen. Die API ist allerdings nicht auf dem neusten Stand. Glaub die ist nur 1.10, wenn ich mich recht erinnere: https://www.spigotmc.org/resources/xitemapi-get-the-name-of-an-item-block-with-the-raw-name-and-data-value.29667/

1