Fix old potion exchanges

This commit is contained in:
okx-code
2024-08-21 16:00:28 +01:00
parent 7de5891854
commit a5fbdfba8c
2 changed files with 10 additions and 2 deletions

View File

@@ -84,7 +84,11 @@ public final class PotionModifier extends ModifierData {
@Nonnull
public static PotionModifier fromNBT(@Nonnull final NBTCompound nbt) {
final var modifier = new PotionModifier();
modifier.setPotionData(NBTEncodings.decodePotionData(nbt.getCompound(BASE_KEY)));
PotionType type = NBTEncodings.decodePotionData(nbt.getCompound(BASE_KEY));
if (type == null) {
return null; // "UNCRAFTABLE" potion which is removed in 1.21
}
modifier.setPotionData(type);
modifier.setEffects(Arrays.stream(nbt.getCompoundArray(EFFECTS_KEY))
.map(NBTEncodings::decodePotionEffect)
.collect(Collectors.toCollection(ArrayList::new)));

View File

@@ -71,7 +71,11 @@ public final class NBTEncodings {
if (nbt == null) {
return null;
}
return PotionType.valueOf(nbt.getString(TYPE_KEY));
String type = nbt.getString(TYPE_KEY);
if ("UNCRAFTABLE".equals(type)) {
return null;
}
return PotionType.valueOf(type);
}
// ------------------------------------------------------------