diff --git a/src/main/java/dev/threeadd/packeteventssk/api/util/ConversionUtil.java b/src/main/java/dev/threeadd/packeteventssk/api/util/ConversionUtil.java index 9e4dc29..2be760d 100644 --- a/src/main/java/dev/threeadd/packeteventssk/api/util/ConversionUtil.java +++ b/src/main/java/dev/threeadd/packeteventssk/api/util/ConversionUtil.java @@ -82,6 +82,16 @@ public static long toTicks(Timespan timespan) { return timespan.getAs(Timespan.TimePeriod.TICK); } + public static int toPackedBrightness(int level) { + int clamped = Math.clamp(level, 0, 15); + return (clamped << 4) | (clamped << 20); + } + + public static int fromPackedBrightness(int packed) { + if (packed == -1) return -1; + return (packed >> 4) & 0xF; + } + public static Display.Billboard toBillboard(AbstractDisplayMeta.BillboardConstraints billboardConstraints) { return Display.Billboard.valueOf(billboardConstraints.name()); } diff --git a/src/main/java/dev/threeadd/packeteventssk/element/entity/field/meta/DisplayMetaFieldRegistrar.java b/src/main/java/dev/threeadd/packeteventssk/element/entity/field/meta/DisplayMetaFieldRegistrar.java index 84738f5..f55577d 100644 --- a/src/main/java/dev/threeadd/packeteventssk/element/entity/field/meta/DisplayMetaFieldRegistrar.java +++ b/src/main/java/dev/threeadd/packeteventssk/element/entity/field/meta/DisplayMetaFieldRegistrar.java @@ -67,8 +67,8 @@ public void register() { (meta, newBillboard) -> meta.setBillboardConstraints(ConversionUtil.toBillboardConstraints(newBillboard)), "display billboard constraints", "display billboard") .optionalField(Number.class, - AbstractDisplayMeta::getBrightnessOverride, - (meta, newNum) -> meta.setBrightnessOverride(newNum.intValue()), + meta -> ConversionUtil.fromPackedBrightness(meta.getBrightnessOverride()), + (meta, newNum) -> meta.setBrightnessOverride(ConversionUtil.toPackedBrightness(newNum.intValue())), "display brightness override", "display brightness") .optionalField(Number.class, AbstractDisplayMeta::getViewRange, @@ -297,7 +297,7 @@ else if (display.isAlignRight()) Number brightnessOverride = context.getOptional("display brightness override", Number.class); if (brightnessOverride != null) { - meta.setBrightnessOverride(brightnessOverride.intValue()); + meta.setBrightnessOverride(ConversionUtil.toPackedBrightness(brightnessOverride.intValue())); } Number viewRange = context.getOptional("display view range", Number.class);