From a52adf9a61ba1def33ddfb57e733daf46c50e151 Mon Sep 17 00:00:00 2001 From: CallMeEchoCodes Date: Wed, 19 Mar 2025 14:58:45 +1100 Subject: [PATCH] fix: check if data has changed before syncing attachment --- .../common/mixin/PlayerDanceTickMixin.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/kleinbox/dancerizer/common/mixin/PlayerDanceTickMixin.java b/src/main/java/dev/kleinbox/dancerizer/common/mixin/PlayerDanceTickMixin.java index 25950bc..8237fe6 100644 --- a/src/main/java/dev/kleinbox/dancerizer/common/mixin/PlayerDanceTickMixin.java +++ b/src/main/java/dev/kleinbox/dancerizer/common/mixin/PlayerDanceTickMixin.java @@ -37,14 +37,18 @@ protected PlayerDanceTickMixin(EntityType entityType, Le String pose = data.getPose(); boolean valid = GroovingTrinket.Companion.hasSpecificAnimation(pose, inventory, getMainHandItem()); + boolean changed = false; + if (!pose.isEmpty()) { if (!valid) { data.reset(); return; } - if (data.getDanceDuration() < 0) + if (data.getDanceDuration() < 0) { data.setDanceStartTimestamp(level().getGameTime()); + changed = true; + } } LivingEntity entity = this; @@ -67,7 +71,9 @@ protected PlayerDanceTickMixin(EntityType entityType, Le ); data.setPose(""); } + data.setTaunting(taunt); + changed = true; } int duration = data.getDanceDuration(); @@ -76,6 +82,8 @@ protected PlayerDanceTickMixin(EntityType entityType, Le duration--; data.setDanceDuration(duration); + changed = true; + if (duration == 0) { PlayerAnimationCallback.EVENT.invoker().interact( player, @@ -87,10 +95,12 @@ protected PlayerDanceTickMixin(EntityType entityType, Le ) ); data.setPose(""); + changed = true; } } - //noinspection UnstableApiUsage - setAttached(PlayerExtendedData.Companion.getDATA_TYPE(), data); + if (changed) + //noinspection UnstableApiUsage + setAttached(PlayerExtendedData.Companion.getDATA_TYPE(), data); } }