summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfeildmaster <admin@feildmaster.com>2012-12-20 20:05:00 -0600
committerfeildmaster <admin@feildmaster.com>2012-12-20 20:51:51 -0600
commitf4836fb42813cbd7bfaf2cca35ac50cc07fbdc98 (patch)
tree65862b5b38ed2ef5f138cf4073f24c826564308b /src
parentbd0daa6d54d00845f33af75bed2bffa3a8fae85f (diff)
downloadcraftbukkit-f4836fb42813cbd7bfaf2cca35ac50cc07fbdc98.tar
craftbukkit-f4836fb42813cbd7bfaf2cca35ac50cc07fbdc98.tar.gz
craftbukkit-f4836fb42813cbd7bfaf2cca35ac50cc07fbdc98.tar.lz
craftbukkit-f4836fb42813cbd7bfaf2cca35ac50cc07fbdc98.tar.xz
craftbukkit-f4836fb42813cbd7bfaf2cca35ac50cc07fbdc98.zip
Add the ability to make Enchanted Books. Fixes BUKKIT-3220
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/ContainerEnchantTable.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/src/main/java/net/minecraft/server/ContainerEnchantTable.java
index c0d99318..6819a606 100644
--- a/src/main/java/net/minecraft/server/ContainerEnchantTable.java
+++ b/src/main/java/net/minecraft/server/ContainerEnchantTable.java
@@ -170,17 +170,34 @@ public class ContainerEnchantTable extends Container {
return false;
}
- // TODO: Apply Diffs
- entityhuman.levelDown(-level);
+ boolean applied = !flag;
for (Map.Entry<org.bukkit.enchantments.Enchantment, Integer> entry : event.getEnchantsToAdd().entrySet()) {
try {
- item.addEnchantment(entry.getKey(), entry.getValue());
+ if (flag) {
+ int enchantId = entry.getKey().getId();
+ if (Enchantment.byId[enchantId] == null) {
+ continue;
+ }
+
+ EnchantmentInstance enchantment = new EnchantmentInstance(enchantId, entry.getValue());
+ Item.ENCHANTED_BOOK.a(itemstack, enchantment);
+ applied = true;
+ itemstack.id = Item.ENCHANTED_BOOK.id;
+ break;
+ } else {
+ item.addEnchantment(entry.getKey(), entry.getValue());
+ }
} catch (IllegalArgumentException e) {
/* Just swallow invalid enchantments */
}
- // CraftBukkit end
}
+ // Only down level if we've applied the enchantments
+ if (applied) {
+ entityhuman.levelDown(-level);
+ }
+ // CraftBukkit end
+
this.a(this.enchantSlots);
}
}