From bfdf6471d2844bcd24e8b90debc87ce55e899849 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Wed, 8 Jan 2025 16:52:24 +0100 Subject: [PATCH] Cleanup things and fix setting back to default --- .../src/de/steamwar/entity/RBlockDisplay.java | 7 +- .../src/de/steamwar/entity/RDisplay.java | 109 +++++++++++------- .../src/de/steamwar/entity/RItemDisplay.java | 14 ++- .../src/de/steamwar/entity/RTextDisplay.java | 28 +++-- 4 files changed, 94 insertions(+), 64 deletions(-) diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RBlockDisplay.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RBlockDisplay.java index a134dea7..c01fdea2 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RBlockDisplay.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RBlockDisplay.java @@ -38,8 +38,9 @@ public class RBlockDisplay extends RDisplay { private static final Class iBlockDataClass = Reflection.getClass("net.minecraft.world.level.block.state.BlockState"); private static final Reflection.Method getState = Reflection.getTypedMethod(Reflection.getClass("org.bukkit.craftbukkit.block.data.CraftBlockData"), "getState", iBlockDataClass); private static final Object blockWatcher = BountifulWrapper.impl.getDataWatcherObject(22, iBlockDataClass); - private void getBlock(BiConsumer packetSink) { - if (block.getAsString(true).equals(DEFAULT_BLOCK.getAsString(true))) return; - packetSink.accept(blockWatcher, getState.invoke(block)); + private void getBlock(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || !block.getAsString(true).equals(DEFAULT_BLOCK.getAsString(true))) { + packetSink.accept(blockWatcher, getState.invoke(block)); + } } } diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RDisplay.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RDisplay.java index 077be91f..3be30b12 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RDisplay.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RDisplay.java @@ -69,16 +69,18 @@ public abstract class RDisplay extends REntity { } @SafeVarargs - protected final void sendPacket(Consumer packetSink, Consumer>... dataSinkSinks) { + protected final void sendPacket(Consumer packetSink, BiConsumer>... dataSinkSinks) { List keyValueData = new ArrayList<>(); - for (Consumer> dataSinkSink : dataSinkSinks) { - dataSinkSink.accept((dataWatcher, value) -> { + boolean ignoreDefault = packetSink == updatePacketSink; + for (BiConsumer> dataSinkSink : dataSinkSinks) { + dataSinkSink.accept(ignoreDefault, (dataWatcher, value) -> { keyValueData.add(dataWatcher); keyValueData.add(value); }); } - if (keyValueData.isEmpty()) return; - packetSink.accept(getDataWatcherPacket(keyValueData.toArray())); + if (!keyValueData.isEmpty()) { + packetSink.accept(getDataWatcherPacket(keyValueData.toArray())); + } } public void setTransform(@NonNull Transformation transform) { @@ -90,12 +92,14 @@ public abstract class RDisplay extends REntity { private static final Object leftRotationWatcher = BountifulWrapper.impl.getDataWatcherObject(12, Quaternionf.class); private static final Object scaleWatcher = BountifulWrapper.impl.getDataWatcherObject(11, Vector3f.class); private static final Object rightRotationWatcher = BountifulWrapper.impl.getDataWatcherObject(13, Quaternionf.class); - private void getTransformData(BiConsumer dataSink) { - if (transform.equals(DEFAULT_TRANSFORM)) return; - dataSink.accept(translationWatcher, transform.getTranslation()); - dataSink.accept(leftRotationWatcher, transform.getLeftRotation()); - dataSink.accept(scaleWatcher, transform.getScale()); - dataSink.accept(rightRotationWatcher, transform.getRightRotation()); + + private void getTransformData(boolean ignoreDefault, BiConsumer dataSink) { + if (ignoreDefault || !transform.equals(DEFAULT_TRANSFORM)) { + dataSink.accept(translationWatcher, transform.getTranslation()); + dataSink.accept(leftRotationWatcher, transform.getLeftRotation()); + dataSink.accept(scaleWatcher, transform.getScale()); + dataSink.accept(rightRotationWatcher, transform.getRightRotation()); + } } public void setInterpolationDuration(int interpolationDuration) { @@ -105,10 +109,12 @@ public abstract class RDisplay extends REntity { private static final Object transformationInterpolationDurationWatcher = BountifulWrapper.impl.getDataWatcherObject(8, Integer.class); private static final Object positionOrRotationInterpolationDurationWatcher = BountifulWrapper.impl.getDataWatcherObject(9, Integer.class); - private void getInterpolationDuration(BiConsumer packetSink) { - if (interpolationDelay == 0) return; - packetSink.accept(transformationInterpolationDurationWatcher, interpolationDuration); - packetSink.accept(positionOrRotationInterpolationDurationWatcher, interpolationDuration); + + private void getInterpolationDuration(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || interpolationDelay != 0) { + packetSink.accept(transformationInterpolationDurationWatcher, interpolationDuration); + packetSink.accept(positionOrRotationInterpolationDurationWatcher, interpolationDuration); + } } public void setViewRange(float viewRange) { @@ -117,9 +123,11 @@ public abstract class RDisplay extends REntity { } private static final Object viewRangeWatcher = BountifulWrapper.impl.getDataWatcherObject(16, Float.class); - private void getViewRange(BiConsumer packetSink) { - if (viewRange == 1.0F) return; - packetSink.accept(viewRangeWatcher, viewRange); + + private void getViewRange(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || viewRange != 1.0F) { + packetSink.accept(viewRangeWatcher, viewRange); + } } public void setShadowRadius(float shadowRadius) { @@ -128,9 +136,11 @@ public abstract class RDisplay extends REntity { } private static final Object shadowRadiusWatcher = BountifulWrapper.impl.getDataWatcherObject(17, Float.class); - private void getShadowRadius(BiConsumer packetSink) { - if (shadowRadius == 0.0F) return; - packetSink.accept(shadowRadiusWatcher, shadowRadius); + + private void getShadowRadius(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || shadowRadius != 0.0F) { + packetSink.accept(shadowRadiusWatcher, shadowRadius); + } } public void setShadowStrength(float shadowStrength) { @@ -139,9 +149,11 @@ public abstract class RDisplay extends REntity { } private static final Object shadowStrengthWatcher = BountifulWrapper.impl.getDataWatcherObject(18, Float.class); - private void getShadowStrength(BiConsumer packetSink) { - if (shadowStrength == 1.0F) return; - packetSink.accept(shadowStrengthWatcher, shadowStrength); + + private void getShadowStrength(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || shadowStrength != 1.0F) { + packetSink.accept(shadowStrengthWatcher, shadowStrength); + } } public void setDisplayWidth(float displayWidth) { @@ -150,9 +162,11 @@ public abstract class RDisplay extends REntity { } private static final Object displayWidthWatcher = BountifulWrapper.impl.getDataWatcherObject(19, Float.class); - private void getDisplayWidth(BiConsumer packetSink) { - if (displayWidth == 0.0F) return; - packetSink.accept(displayWidthWatcher, displayWidth); + + private void getDisplayWidth(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || displayWidth != 0.0F) { + packetSink.accept(displayWidthWatcher, displayWidth); + } } public void setDisplayHeight(float displayHeight) { @@ -161,9 +175,11 @@ public abstract class RDisplay extends REntity { } private static final Object displayHeightWatcher = BountifulWrapper.impl.getDataWatcherObject(20, Float.class); - private void getDisplayHeight(BiConsumer packetSink) { - if (displayHeight == 0.0F) return; - packetSink.accept(displayHeightWatcher, displayHeight); + + private void getDisplayHeight(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || displayHeight != 0.0F) { + packetSink.accept(displayHeightWatcher, displayHeight); + } } public void setInterpolationDelay(int interpolationDelay) { @@ -172,9 +188,11 @@ public abstract class RDisplay extends REntity { } private static final Object interpolationDelayWatcher = BountifulWrapper.impl.getDataWatcherObject(7, Integer.class); - private void getInterpolationDelay(BiConsumer packetSink) { - if (interpolationDelay == 0) return; - packetSink.accept(interpolationDelayWatcher, interpolationDelay); + + private void getInterpolationDelay(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || interpolationDelay != 0) { + packetSink.accept(interpolationDelayWatcher, interpolationDelay); + } } public void setBillboard(Display.Billboard billboard) { @@ -183,9 +201,11 @@ public abstract class RDisplay extends REntity { } private static final Object billboardWatcher = BountifulWrapper.impl.getDataWatcherObject(14, Byte.class); - private void getBillboard(BiConsumer packetSink) { - if (billboard == Display.Billboard.FIXED) return; - packetSink.accept(billboardWatcher, (byte) billboard.ordinal()); + + private void getBillboard(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || billboard != Display.Billboard.FIXED) { + packetSink.accept(billboardWatcher, (byte) billboard.ordinal()); + } } public void setGlowColorOverride(Color glowColorOverride) { @@ -194,9 +214,11 @@ public abstract class RDisplay extends REntity { } private static final Object glowColorOverrideWatcher = BountifulWrapper.impl.getDataWatcherObject(21, Integer.class); - private void getGlowColorOverride(BiConsumer packetSink) { - if (glowColorOverride == null) return; - packetSink.accept(glowColorOverrideWatcher, glowColorOverride); + + private void getGlowColorOverride(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || glowColorOverride != null) { + packetSink.accept(glowColorOverrideWatcher, glowColorOverride == null ? -1 : glowColorOverride.asARGB()); + } } public void setBrightness(Display.Brightness brightness) { @@ -205,9 +227,10 @@ public abstract class RDisplay extends REntity { } private static final Object brightnessWatcher = BountifulWrapper.impl.getDataWatcherObject(15, Integer.class); - private void getBrightness(BiConsumer packetSink) { - if (brightness == null) return; - int brightnessData = brightness.getBlockLight() << 4 | brightness.getSkyLight() << 20; - packetSink.accept(brightnessWatcher, brightnessData); + + private void getBrightness(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || brightness != null) { + packetSink.accept(brightnessWatcher, brightness == null ? -1 : brightness.getBlockLight() << 4 | brightness.getSkyLight() << 20); + } } } diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RItemDisplay.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RItemDisplay.java index 0b2a8d89..4ed1a4dc 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RItemDisplay.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RItemDisplay.java @@ -39,9 +39,10 @@ public class RItemDisplay extends RDisplay { } private static final Object itemStackWatcher = BountifulWrapper.impl.getDataWatcherObject(22, ProtocolWrapper.itemStack); - private void getItemStack(BiConsumer packetSink) { - if (itemStack.equals(DEFAULT_ITEM_STACK)) return; - packetSink.accept(itemStackWatcher, asNMSCopy.invoke(null, itemStack)); + private void getItemStack(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || !itemStack.equals(DEFAULT_ITEM_STACK)) { + packetSink.accept(itemStackWatcher, asNMSCopy.invoke(null, itemStack)); + } } private static final Object itemDisplayTransformWatcher = BountifulWrapper.impl.getDataWatcherObject(23, Byte.class); @@ -50,8 +51,9 @@ public class RItemDisplay extends RDisplay { sendPacket(updatePacketSink, this::getItemDisplayTransform); } - private void getItemDisplayTransform(BiConsumer packetSink) { - if (itemDisplayTransform == ItemDisplay.ItemDisplayTransform.NONE) return; - packetSink.accept(itemDisplayTransformWatcher, (byte) itemDisplayTransform.ordinal()); + private void getItemDisplayTransform(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || itemDisplayTransform != ItemDisplay.ItemDisplayTransform.NONE) { + packetSink.accept(itemDisplayTransformWatcher, (byte) itemDisplayTransform.ordinal()); + } } } diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RTextDisplay.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RTextDisplay.java index 1720096d..3abf9f18 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RTextDisplay.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/entity/RTextDisplay.java @@ -53,9 +53,10 @@ public class RTextDisplay extends RDisplay { private static final Class iChatBaseComponent = Reflection.getClass("net.minecraft.network.chat.Component"); private static final Object textWatcher = BountifulWrapper.impl.getDataWatcherObject(22, iChatBaseComponent); - private void getText(BiConsumer packetSink) { - if (text.isEmpty()) return; - packetSink.accept(textWatcher, ChatWrapper.impl.stringToChatComponent(text)); + private void getText(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || !text.isEmpty()) { + packetSink.accept(textWatcher, ChatWrapper.impl.stringToChatComponent(text)); + } } public void setLineWidth(int lineWidth) { @@ -64,9 +65,10 @@ public class RTextDisplay extends RDisplay { } private static final Object lineWidthWatcher = BountifulWrapper.impl.getDataWatcherObject(23, Integer.class); - private void getLineWidth(BiConsumer packetSink) { - if (lineWidth == 200) return; - packetSink.accept(lineWidthWatcher, lineWidth); + private void getLineWidth(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || lineWidth != 200) { + packetSink.accept(lineWidthWatcher, lineWidth); + } } public void setTextOpacity(byte textOpacity) { @@ -75,9 +77,10 @@ public class RTextDisplay extends RDisplay { } private static final Object textOpacityWatcher = BountifulWrapper.impl.getDataWatcherObject(25, Byte.class); - private void getTextOpacity(BiConsumer packetSink) { - if (textOpacity == (byte) -1) return; - packetSink.accept(textOpacityWatcher, textOpacity); + private void getTextOpacity(boolean ignoreDefault, BiConsumer packetSink) { + if (ignoreDefault || textOpacity != (byte) -1) { + packetSink.accept(textOpacityWatcher, textOpacity); + } } public void setShadowed(boolean shadowed) { @@ -101,7 +104,7 @@ public class RTextDisplay extends RDisplay { } private static final Object textStatusWatcher = BountifulWrapper.impl.getDataWatcherObject(26, Byte.class); - private void getTextStatus(BiConsumer packetSink) { + private void getTextStatus(boolean ignoreDefault, BiConsumer packetSink) { byte status = 0; if (shadowed) { @@ -121,7 +124,8 @@ public class RTextDisplay extends RDisplay { status |= 0x0F; } - if (status == 0) return; - packetSink.accept(textStatusWatcher, status); + if (ignoreDefault || status != 0) { + packetSink.accept(textStatusWatcher, status); + } } }