461353e2cb
This was useful when plugins first started upgrading to uuid because each plugin would implement their own way for grabbing uuid's from mojang. Because none of them shared the result they would quickly hit the limits on the api causing the conversion to either fail or pause for long periods of time. The global api cache was a (very hacky) way to force all plugins to share a cache but caused a few issues with plugins that expected a full implementation of the HTTPURLConnection. Due to the fact that most servers/plugins have updated now it seems to be a good time to remove this as its usefulness mostly has expired.
29 lines
1.3 KiB
Diff
29 lines
1.3 KiB
Diff
From a67c0c9c88796b03060c0721a923de982c9cdf0d Mon Sep 17 00:00:00 2001
|
|
From: Thinkofdeath <thinkofdeath@spigotmc.org>
|
|
Date: Tue, 19 Aug 2014 11:04:21 +0100
|
|
Subject: [PATCH] Skip invalid enchants in CraftMetaItem
|
|
|
|
Its a rare case but when loading a world from a modded server which added enchantments
|
|
CraftMetaItem would add a null enchantment into the enchantment map which causes
|
|
NullPointers later
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
index 99d3226..e28f077 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
|
|
@@ -450,7 +450,11 @@ class CraftMetaItem implements ItemMeta, Repairable {
|
|
int id = 0xffff & ((NBTTagCompound) ench.get(i)).getShort(ENCHANTMENTS_ID.NBT);
|
|
int level = 0xffff & ((NBTTagCompound) ench.get(i)).getShort(ENCHANTMENTS_LVL.NBT);
|
|
|
|
- enchantments.put(Enchantment.getById(id), level);
|
|
+ // Spigot start - skip invalid enchantments
|
|
+ Enchantment e = Enchantment.getById(id);
|
|
+ if (e == null) continue;
|
|
+ // Spigot end
|
|
+ enchantments.put(e, level);
|
|
}
|
|
|
|
return enchantments;
|
|
--
|
|
2.1.0
|
|
|