修复神秘的方法导致的类加载问题

This commit is contained in:
叁玖领域 2025-12-24 13:31:30 +08:00
parent 5a6877e2db
commit d78abb326f

View File

@ -6,6 +6,9 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation; 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 net.minecraftforge.network.NetworkEvent;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@ -21,17 +24,20 @@ public record AnimationClearPacket(@Nullable ResourceLocation layer) {
public void encode(FriendlyByteBuf buf) { public void encode(FriendlyByteBuf buf) {
buf.writeNullable(layer, FriendlyByteBuf::writeResourceLocation); buf.writeNullable(layer, FriendlyByteBuf::writeResourceLocation);
} }
public void handle(Supplier<NetworkEvent.Context> supplier) { public void handle(Supplier<NetworkEvent.Context> supplier) {
NetworkEvent.Context context = supplier.get(); NetworkEvent.Context context = supplier.get();
context.enqueueWork(() -> { context.enqueueWork(() -> {
context.setPacketHandled(true); context.setPacketHandled(true);
LocalPlayer player = Minecraft.getInstance().player; DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::handleClient);
if(player == null) return;
List<ResourceLocation> layers = new ArrayList<>();
if(layer != null) layers.add(layer);
else layers.addAll(AnimationRegistry.getLayers().keySet());
layers.forEach(layer -> AnimationUtils.playAnimation(player, layer, null));
}); });
} }
@OnlyIn(Dist.CLIENT)
public void handleClient() {
LocalPlayer player = Minecraft.getInstance().player;
if(player == null) return;
List<ResourceLocation> layers = new ArrayList<>();
if(layer != null) layers.add(layer);
else layers.addAll(AnimationRegistry.getLayers().keySet());
layers.forEach(layer -> AnimationUtils.playAnimation(player, layer, null));
}
} }