add number format api

== AT ==
public net.minecraft.network.chat.numbers.FixedFormat value
public net.minecraft.network.chat.numbers.StyledFormat style
This commit is contained in:
David Mayr 2023-12-16 10:40:29 +01:00
parent 380cb52e43
commit 10a15650f1
3 changed files with 101 additions and 0 deletions

View file

@ -0,0 +1,38 @@
package io.papermc.paper.util;
import io.papermc.paper.adventure.PaperAdventure;
import io.papermc.paper.scoreboard.numbers.NumberFormat;
public final class PaperScoreboardFormat {
private PaperScoreboardFormat() {
}
public static net.minecraft.network.chat.numbers.NumberFormat asVanilla(final NumberFormat format) {
final net.minecraft.network.chat.numbers.NumberFormat vanilla;
if (format instanceof final io.papermc.paper.scoreboard.numbers.StyledFormat styled) {
vanilla = new net.minecraft.network.chat.numbers.StyledFormat(PaperAdventure.asVanilla(styled.style()));
} else if (format instanceof final io.papermc.paper.scoreboard.numbers.FixedFormat fixed) {
vanilla = new net.minecraft.network.chat.numbers.FixedFormat(io.papermc.paper.adventure.PaperAdventure
.asVanilla(fixed.component()));
} else if (format.equals(NumberFormat.blank())) {
vanilla = net.minecraft.network.chat.numbers.BlankFormat.INSTANCE;
} else {
throw new IllegalArgumentException("Unknown format type " + format.getClass());
}
return vanilla;
}
public static NumberFormat asPaper(final net.minecraft.network.chat.numbers.NumberFormat vanilla) {
if (vanilla instanceof final net.minecraft.network.chat.numbers.StyledFormat styled) {
return NumberFormat.styled(PaperAdventure.asAdventure(styled.style));
} else if (vanilla instanceof final net.minecraft.network.chat.numbers.FixedFormat fixed) {
return NumberFormat.fixed(io.papermc.paper.adventure.PaperAdventure.asAdventure(fixed.value));
} else if (vanilla instanceof net.minecraft.network.chat.numbers.BlankFormat) {
return NumberFormat.blank();
}
throw new IllegalArgumentException("Unknown format type " + vanilla.getClass());
}
}

View file

@ -153,6 +153,34 @@ final class CraftObjective extends CraftScoreboardComponent implements Objective
}
// Paper end
// Paper start - add number format
@Override
public io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat() {
this.checkState();
net.minecraft.network.chat.numbers.NumberFormat vanilla = this.objective.numberFormat();
if (vanilla == null) {
return null;
}
return io.papermc.paper.util.PaperScoreboardFormat.asPaper(vanilla);
}
@Override
public void numberFormat(io.papermc.paper.scoreboard.numbers.NumberFormat format) {
this.checkState();
if (format == null) {
this.objective.setNumberFormat(null);
return;
}
this.objective.setNumberFormat(io.papermc.paper.util.PaperScoreboardFormat.asVanilla(format));
}
// Paper end - add number format
@Override
public void unregister() {
CraftScoreboard scoreboard = this.checkState();

View file

@ -55,6 +55,41 @@ final class CraftScore implements Score {
this.objective.checkState().board.getOrCreatePlayerScore(this.entry, this.objective.getHandle()).set(score);
}
// Paper start - add number format
@Override
public io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat() {
ReadOnlyScoreInfo scoreInfo = this.objective.checkState().board
.getPlayerScoreInfo(this.entry, this.objective.getHandle());
if (scoreInfo == null) {
return null;
}
net.minecraft.network.chat.numbers.NumberFormat vanilla = scoreInfo.numberFormat();
if (vanilla == null) {
return null;
}
return io.papermc.paper.util.PaperScoreboardFormat.asPaper(vanilla);
}
@Override
public void numberFormat(io.papermc.paper.scoreboard.numbers.NumberFormat format) {
final net.minecraft.world.scores.ScoreAccess access = this.objective.checkState()
.board.getOrCreatePlayerScore(this.entry, this.objective.getHandle());
if (format == null) {
access.numberFormatOverride(null);
return;
}
access.numberFormatOverride(io.papermc.paper.util.PaperScoreboardFormat.asVanilla(format));
}
// Paper end - add number format
@Override
public boolean isScoreSet() {
Scoreboard board = this.objective.checkState().board;