Fix save/load NaN Entity Motion (#12269)

This commit is contained in:
Pedro
2025-04-30 13:53:32 -04:00
committed by GitHub
parent cd4fe5b7d0
commit 5acfdd6af4
3 changed files with 31 additions and 11 deletions

View File

@@ -22,9 +22,7 @@ import net.minecraft.core.Vec3i;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.craftbukkit.util.Waitable;
@@ -103,6 +101,18 @@ public final class MCUtil {
run.run();
}
public static double sanitizeNanInf(final double value, final double defaultValue) {
return Double.isNaN(value) || Double.isInfinite(value) ? defaultValue : value;
}
public static Vec3 sanitizeNanInf(final Vec3 vec3, final double defaultValue) {
return new Vec3(
sanitizeNanInf(vec3.x, defaultValue),
sanitizeNanInf(vec3.y, defaultValue),
sanitizeNanInf(vec3.z, defaultValue)
);
}
public static <T> T ensureMain(Supplier<T> run) {
return ensureMain(null, run);
}