Commits
blablubbabc authored and md_5 committed 7c8bbcbee7b
1 1 | package org.bukkit.craftbukkit.inventory; |
2 2 | |
3 3 | import com.google.common.collect.ImmutableMap; |
4 4 | import com.google.common.collect.ImmutableMap.Builder; |
5 - | import java.util.HashMap; |
5 + | import java.util.LinkedHashMap; |
6 6 | import java.util.Map; |
7 7 | import net.minecraft.nbt.NBTTagCompound; |
8 8 | import org.bukkit.Material; |
9 9 | import org.bukkit.configuration.serialization.DelegateDeserialization; |
10 10 | import org.bukkit.craftbukkit.inventory.CraftMetaItem.ItemMetaKey; |
11 11 | import org.bukkit.craftbukkit.inventory.CraftMetaItem.SerializableMeta; |
12 12 | import org.bukkit.enchantments.Enchantment; |
13 13 | import org.bukkit.inventory.meta.EnchantmentStorageMeta; |
14 14 | |
15 15 | SerializableMeta.class) | (
21 21 | CraftMetaEnchantedBook(CraftMetaItem meta) { |
22 22 | super(meta); |
23 23 | |
24 24 | if (!(meta instanceof CraftMetaEnchantedBook)) { |
25 25 | return; |
26 26 | } |
27 27 | |
28 28 | CraftMetaEnchantedBook that = (CraftMetaEnchantedBook) meta; |
29 29 | |
30 30 | if (that.hasEnchants()) { |
31 - | this.enchantments = new HashMap<Enchantment, Integer>(that.enchantments); |
31 + | this.enchantments = new LinkedHashMap<Enchantment, Integer>(that.enchantments); |
32 32 | } |
33 33 | } |
34 34 | |
35 35 | CraftMetaEnchantedBook(NBTTagCompound tag) { |
36 36 | super(tag); |
37 37 | |
38 38 | if (!tag.hasKey(STORED_ENCHANTMENTS.NBT)) { |
39 39 | return; |
40 40 | } |
41 41 | |
98 98 | } |
99 99 | |
100 100 | return original != hash ? CraftMetaEnchantedBook.class.hashCode() ^ hash : hash; |
101 101 | } |
102 102 | |
103 103 | |
104 104 | public CraftMetaEnchantedBook clone() { |
105 105 | CraftMetaEnchantedBook meta = (CraftMetaEnchantedBook) super.clone(); |
106 106 | |
107 107 | if (this.enchantments != null) { |
108 - | meta.enchantments = new HashMap<Enchantment, Integer>(this.enchantments); |
108 + | meta.enchantments = new LinkedHashMap<Enchantment, Integer>(this.enchantments); |
109 109 | } |
110 110 | |
111 111 | return meta; |
112 112 | } |
113 113 | |
114 114 | |
115 115 | Builder<String, Object> serialize(Builder<String, Object> builder) { |
116 116 | super.serialize(builder); |
117 117 | |
118 118 | serializeEnchantments(enchantments, builder, STORED_ENCHANTMENTS); |
139 139 | } |
140 140 | |
141 141 | |
142 142 | public Map<Enchantment, Integer> getStoredEnchants() { |
143 143 | return hasStoredEnchants() ? ImmutableMap.copyOf(enchantments) : ImmutableMap.<Enchantment, Integer>of(); |
144 144 | } |
145 145 | |
146 146 | |
147 147 | public boolean addStoredEnchant(Enchantment ench, int level, boolean ignoreRestrictions) { |
148 148 | if (enchantments == null) { |
149 - | enchantments = new HashMap<Enchantment, Integer>(4); |
149 + | enchantments = new LinkedHashMap<Enchantment, Integer>(4); |
150 150 | } |
151 151 | |
152 152 | if (ignoreRestrictions || level >= ench.getStartLevel() && level <= ench.getMaxLevel()) { |
153 153 | Integer old = enchantments.put(ench, level); |
154 154 | return old == null || old != level; |
155 155 | } |
156 156 | return false; |
157 157 | } |
158 158 | |
159 159 | |