geforkt von Mirrors/Paper
add number format api
Signed-off-by: David Mayr <davidliebtkekse@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
8363e77ad2
Commit
3ebc5bb92c
@ -0,0 +1,5 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
record BlankFormatImpl() implements NumberFormat {
|
||||
public static final BlankFormatImpl INSTANCE = new BlankFormatImpl();
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* A scoreboard number format that replaces the score number with a chat component.
|
||||
*/
|
||||
@NullMarked
|
||||
public interface FixedFormat extends NumberFormat, ComponentLike {
|
||||
|
||||
/**
|
||||
* The component shown instead of the number for a score
|
||||
*
|
||||
* @return the chat component
|
||||
*/
|
||||
Component component();
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
@NullMarked
|
||||
record FixedFormatImpl(Component component) implements FixedFormat {
|
||||
|
||||
@Override
|
||||
public Component asComponent() {
|
||||
return this.component();
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
import net.kyori.adventure.text.ComponentLike;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.StyleBuilderApplicable;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* Describes a scoreboard number format that applies custom formatting to scoreboard scores.
|
||||
*/
|
||||
@NullMarked
|
||||
public interface NumberFormat {
|
||||
|
||||
/**
|
||||
* Creates a blank scoreboard number format that removes the score number entirely.
|
||||
*
|
||||
* @return a blank number format
|
||||
*/
|
||||
static NumberFormat blank() {
|
||||
return BlankFormatImpl.INSTANCE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an un-styled number format.
|
||||
*
|
||||
* @return an un-styled number format
|
||||
*/
|
||||
static StyledFormat noStyle() {
|
||||
return StyledFormatImpl.NO_STYLE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a scoreboard number format that applies a custom formatting to the score number.
|
||||
*
|
||||
* @param style the style to apply on the number
|
||||
* @return a styled number format
|
||||
*/
|
||||
static StyledFormat styled(final Style style) {
|
||||
return new StyledFormatImpl(style);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a scoreboard number format that applies a custom formatting to the score number.
|
||||
*
|
||||
* @param styleBuilderApplicables the style to apply on the number
|
||||
* @return a styled number format
|
||||
*/
|
||||
static StyledFormat styled(final StyleBuilderApplicable... styleBuilderApplicables) {
|
||||
return styled(Style.style(styleBuilderApplicables));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a scoreboard number format that replaces the score number with a chat component.
|
||||
*
|
||||
* @param component the component to replace the number with
|
||||
* @return a fixed number format
|
||||
*/
|
||||
static FixedFormat fixed(final ComponentLike component) {
|
||||
return new FixedFormatImpl(component.asComponent());
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.StyleBuilderApplicable;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
/**
|
||||
* A scoreboard number format that applies a custom formatting to the score number.
|
||||
*/
|
||||
@NullMarked
|
||||
public interface StyledFormat extends NumberFormat, StyleBuilderApplicable {
|
||||
|
||||
/**
|
||||
* The style that is being applied to the number in the score
|
||||
*
|
||||
* @return the style to apply
|
||||
*/
|
||||
Style style();
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package io.papermc.paper.scoreboard.numbers;
|
||||
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
@NullMarked
|
||||
record StyledFormatImpl(Style style) implements StyledFormat {
|
||||
static final StyledFormat NO_STYLE = new StyledFormatImpl(Style.empty());
|
||||
|
||||
@Override
|
||||
public void styleApply(final Style.Builder style) {
|
||||
style.merge(this.style);
|
||||
}
|
||||
}
|
@ -195,4 +195,22 @@ public interface Objective {
|
||||
*/
|
||||
void setAutoUpdateDisplay(boolean autoUpdateDisplay);
|
||||
// Paper end - add more score API
|
||||
|
||||
// Paper start - number format api
|
||||
/**
|
||||
* Gets the number format for this objective's scores or null if the client default is used.
|
||||
*
|
||||
* @return this objective's number format, or null if the client default is used
|
||||
* @throws IllegalStateException if this objective has been unregistered
|
||||
*/
|
||||
@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat();
|
||||
|
||||
/**
|
||||
* Sets the number format for this objective's scores.
|
||||
*
|
||||
* @param format the number format to set, pass null to reset format to default
|
||||
* @throws IllegalStateException if this objective has been unregistered
|
||||
*/
|
||||
void numberFormat(@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat format);
|
||||
// Paper end - number format api
|
||||
}
|
||||
|
@ -129,4 +129,26 @@ public interface Score {
|
||||
*/
|
||||
void customName(net.kyori.adventure.text.@Nullable Component customName);
|
||||
// Paper end - add more score API
|
||||
|
||||
// Paper start - number format api
|
||||
/**
|
||||
* Gets the number format for this score or null if the score has not been set yet
|
||||
* or the objective's default is being used.
|
||||
*
|
||||
* @return this score's number format, or null if the objective's default is used or the score doesn't exist
|
||||
* @throws IllegalStateException if the associated objective has been
|
||||
* unregistered
|
||||
*/
|
||||
@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat numberFormat();
|
||||
|
||||
/**
|
||||
* Sets the number format for this score. If this score has not been set yet {@link #isScoreSet()}, it will be created
|
||||
*
|
||||
* @param format the number format to set, pass null to reset format to default
|
||||
* @throws IllegalStateException if the associated objective has been
|
||||
* unregistered
|
||||
*/
|
||||
void numberFormat(@Nullable io.papermc.paper.scoreboard.numbers.NumberFormat format);
|
||||
// Paper end - number format api
|
||||
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren