From d78abb326f2b09eaa1625336be4792328e30a739 Mon Sep 17 00:00:00 2001 From: 3944Realms Date: Wed, 24 Dec 2025 13:31:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A5=9E=E7=A7=98=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=AF=BC=E8=87=B4=E7=9A=84=E7=B1=BB=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../toclient/AnimationClearPacket.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/linearpast/sccore/animation/network/toclient/AnimationClearPacket.java b/src/main/java/com/linearpast/sccore/animation/network/toclient/AnimationClearPacket.java index e2deeec..0b5e238 100644 --- a/src/main/java/com/linearpast/sccore/animation/network/toclient/AnimationClearPacket.java +++ b/src/main/java/com/linearpast/sccore/animation/network/toclient/AnimationClearPacket.java @@ -6,6 +6,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.network.NetworkEvent; import org.jetbrains.annotations.Nullable; @@ -21,17 +24,20 @@ public record AnimationClearPacket(@Nullable ResourceLocation layer) { public void encode(FriendlyByteBuf buf) { buf.writeNullable(layer, FriendlyByteBuf::writeResourceLocation); } - public void handle(Supplier supplier) { NetworkEvent.Context context = supplier.get(); context.enqueueWork(() -> { context.setPacketHandled(true); - LocalPlayer player = Minecraft.getInstance().player; - if(player == null) return; - List layers = new ArrayList<>(); - if(layer != null) layers.add(layer); - else layers.addAll(AnimationRegistry.getLayers().keySet()); - layers.forEach(layer -> AnimationUtils.playAnimation(player, layer, null)); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::handleClient); }); } + @OnlyIn(Dist.CLIENT) + public void handleClient() { + LocalPlayer player = Minecraft.getInstance().player; + if(player == null) return; + List layers = new ArrayList<>(); + if(layer != null) layers.add(layer); + else layers.addAll(AnimationRegistry.getLayers().keySet()); + layers.forEach(layer -> AnimationUtils.playAnimation(player, layer, null)); + } }