Files
MinecraftConsoles/Minecraft.World/ScoreboardSaveData.h
daoge b3feddfef3 feat: TU19 (Dec 2014) Features & Content (#155)
* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
2026-03-03 03:04:10 +08:00

189 lines
6.1 KiB
C++

#pragma once
// 4J Not converted
#if 0
class ScoreboardSaveData extends SavedData {
public static final String FILE_ID = "scoreboard";
private Scoreboard scoreboard;
private CompoundTag delayLoad;
public ScoreboardSaveData() {
this(FILE_ID);
}
public ScoreboardSaveData(String id) {
super(id);
}
public void setScoreboard(Scoreboard scoreboard) {
this.scoreboard = scoreboard;
if (delayLoad != null) {
load(delayLoad);
}
}
@Override
public void load(CompoundTag tag) {
if (scoreboard == null) {
delayLoad = tag;
return;
}
loadObjectives((ListTag<CompoundTag>) tag.getList("Objectives"));
loadPlayerScores((ListTag<CompoundTag>) tag.getList("PlayerScores"));
if (tag.contains("DisplaySlots")) {
loadDisplaySlots(tag.getCompound("DisplaySlots"));
}
if (tag.contains("Teams")) {
loadTeams((ListTag<CompoundTag>) tag.getList("Teams"));
}
}
protected void loadTeams(ListTag<CompoundTag> list) {
for (int i = 0; i < list.size(); i++) {
CompoundTag tag = list.get(i);
PlayerTeam team = scoreboard.addPlayerTeam(tag.getString("Name"));
team.setDisplayName(tag.getString("DisplayName"));
team.setPrefix(tag.getString("Prefix"));
team.setSuffix(tag.getString("Suffix"));
if (tag.contains("AllowFriendlyFire")) team.setAllowFriendlyFire(tag.getBoolean("AllowFriendlyFire"));
if (tag.contains("SeeFriendlyInvisibles")) team.setSeeFriendlyInvisibles(tag.getBoolean("SeeFriendlyInvisibles"));
loadTeamPlayers(team, (ListTag<StringTag>) tag.getList("Players"));
}
}
protected void loadTeamPlayers(PlayerTeam team, ListTag<StringTag> list) {
for (int i = 0; i < list.size(); i++) {
scoreboard.addPlayerToTeam(list.get(i).data, team);
}
}
protected void loadDisplaySlots(CompoundTag tag) {
for (int i = 0; i < Scoreboard.DISPLAY_SLOTS; i++) {
if (tag.contains("slot_" + i)) {
String name = tag.getString("slot_" + i);
Objective objective = scoreboard.getObjective(name);
scoreboard.setDisplayObjective(i, objective);
}
}
}
protected void loadObjectives(ListTag<CompoundTag> list) {
for (int i = 0; i < list.size(); i++) {
CompoundTag tag = list.get(i);
ObjectiveCriteria criteria = ObjectiveCriteria.CRITERIA_BY_NAME.get(tag.getString("CriteriaName"));
Objective objective = scoreboard.addObjective(tag.getString("Name"), criteria);
objective.setDisplayName(tag.getString("DisplayName"));
}
}
protected void loadPlayerScores(ListTag<CompoundTag> list) {
for (int i = 0; i < list.size(); i++) {
CompoundTag tag = list.get(i);
Objective objective = scoreboard.getObjective(tag.getString("Objective"));
Score score = scoreboard.getPlayerScore(tag.getString("Name"), objective);
score.setScore(tag.getInt("Score"));
}
}
@Override
public void save(CompoundTag tag) {
if (scoreboard == null) {
MinecraftServer.getInstance().getLogger().warning("Tried to save scoreboard without having a scoreboard...");
return;
}
tag.put("Objectives", saveObjectives());
tag.put("PlayerScores", savePlayerScores());
tag.put("Teams", saveTeams());
saveDisplaySlots(tag);
}
protected ListTag<CompoundTag> saveTeams() {
ListTag<CompoundTag> list = new ListTag<CompoundTag>();
Collection<PlayerTeam> teams = scoreboard.getPlayerTeams();
for (PlayerTeam team : teams) {
CompoundTag tag = new CompoundTag();
tag.putString("Name", team.getName());
tag.putString("DisplayName", team.getDisplayName());
tag.putString("Prefix", team.getPrefix());
tag.putString("Suffix", team.getSuffix());
tag.putBoolean("AllowFriendlyFire", team.isAllowFriendlyFire());
tag.putBoolean("SeeFriendlyInvisibles", team.canSeeFriendlyInvisibles());
ListTag<StringTag> playerList = new ListTag<StringTag>();
for (String player : team.getPlayers()) {
playerList.add(new StringTag("", player));
}
tag.put("Players", playerList);
list.add(tag);
}
return list;
}
protected void saveDisplaySlots(CompoundTag tag) {
CompoundTag slots = new CompoundTag();
boolean hasDisplaySlot = false;
for (int i = 0; i < Scoreboard.DISPLAY_SLOTS; i++) {
Objective objective = scoreboard.getDisplayObjective(i);
if (objective != null) {
slots.putString("slot_" + i, objective.getName());
hasDisplaySlot = true;
}
}
if (hasDisplaySlot) tag.putCompound("DisplaySlots", slots);
}
protected ListTag<CompoundTag> saveObjectives() {
ListTag<CompoundTag> list = new ListTag<CompoundTag>();
Collection<Objective> objectives = scoreboard.getObjectives();
for (Objective objective : objectives) {
CompoundTag tag = new CompoundTag();
tag.putString("Name", objective.getName());
tag.putString("CriteriaName", objective.getCriteria().getName());
tag.putString("DisplayName", objective.getDisplayName());
list.add(tag);
}
return list;
}
protected ListTag<CompoundTag> savePlayerScores() {
ListTag<CompoundTag> list = new ListTag<CompoundTag>();
Collection<Score> scores = scoreboard.getScores();
for (Score score : scores) {
CompoundTag tag = new CompoundTag();
tag.putString("Name", score.getOwner());
tag.putString("Objective", score.getObjective().getName());
tag.putInt("Score", score.getScore());
list.add(tag);
}
return list;
}
};
#endif