From d6607c7dd6fa94e185a5bba710ea5cbf5ac8640e Mon Sep 17 00:00:00 2001 From: blablubbabc Date: Fri, 31 May 2024 07:14:09 +1000 Subject: [PATCH] SPIGOT-7675: Fix FoodComponent config deserialization Be more lenient when converting floating point numbers during config deserialization of item data. --- .../craftbukkit/inventory/SerializableMeta.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java b/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java index 863bfd62a..91197ad3a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/SerializableMeta.java @@ -102,6 +102,19 @@ public final class SerializableMeta implements ConfigurationSerializable { if (clazz.isInstance(object)) { return clazz.cast(object); } + + // SPIGOT-7675 - More lenient conversion of floating point numbers from other number types: + if (clazz == Float.class || clazz == Double.class) { + if (Number.class.isInstance(object)) { + Number number = Number.class.cast(object); + if (clazz == Float.class) { + return clazz.cast(number.floatValue()); + } else { + return clazz.cast(number.doubleValue()); + } + } + } + if (object == null) { if (!nullable) { throw new NoSuchElementException(map + " does not contain " + field);