PocketMine-MP 5.14.2 git-50e2c469a547a16a23b2dc691e70a51d34e29395
VanillaEnchantments.php
1<?php
2
3/*
4 *
5 * ____ _ _ __ __ _ __ __ ____
6 * | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
7 * | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
8 * | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
9 * |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
10 *
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * @author PocketMine Team
17 * @link http://www.pocketmine.net/
18 *
19 *
20 */
21
22declare(strict_types=1);
23
24namespace pocketmine\item\enchantment;
25
29
59 use RegistryTrait;
60
61 protected static function setup() : void{
62 self::register("PROTECTION", new ProtectionEnchantment(
63 KnownTranslationFactory::enchantment_protect_all(),
64 Rarity::COMMON,
65 0,
66 0,
67 4,
68 0.75,
69 null,
70 fn(int $level) : int => 11 * ($level - 1) + 1,
71 20
72 ));
73 self::register("FIRE_PROTECTION", new ProtectionEnchantment(
74 KnownTranslationFactory::enchantment_protect_fire(),
75 Rarity::UNCOMMON,
76 0,
77 0,
78 4,
79 1.25,
80 [
81 EntityDamageEvent::CAUSE_FIRE,
82 EntityDamageEvent::CAUSE_FIRE_TICK,
83 EntityDamageEvent::CAUSE_LAVA
84 //TODO: check fireballs
85 ],
86 fn(int $level) : int => 8 * ($level - 1) + 10,
87 12
88 ));
89 self::register("FEATHER_FALLING", new ProtectionEnchantment(
90 KnownTranslationFactory::enchantment_protect_fall(),
91 Rarity::UNCOMMON,
92 0,
93 0,
94 4,
95 2.5,
96 [
97 EntityDamageEvent::CAUSE_FALL
98 ],
99 fn(int $level) : int => 6 * ($level - 1) + 5,
100 10
101 ));
102 self::register("BLAST_PROTECTION", new ProtectionEnchantment(
103 KnownTranslationFactory::enchantment_protect_explosion(),
104 Rarity::RARE,
105 0,
106 0,
107 4,
108 1.5,
109 [
110 EntityDamageEvent::CAUSE_BLOCK_EXPLOSION,
111 EntityDamageEvent::CAUSE_ENTITY_EXPLOSION
112 ],
113 fn(int $level) : int => 8 * ($level - 1) + 5,
114 12
115 ));
116 self::register("PROJECTILE_PROTECTION", new ProtectionEnchantment(
117 KnownTranslationFactory::enchantment_protect_projectile(),
118 Rarity::UNCOMMON,
119 0,
120 0,
121 4,
122 1.5,
123 [
124 EntityDamageEvent::CAUSE_PROJECTILE
125 ],
126 fn(int $level) : int => 6 * ($level - 1) + 3,
127 15
128 ));
129 self::register("THORNS", new Enchantment(
130 KnownTranslationFactory::enchantment_thorns(),
131 Rarity::MYTHIC,
132 0,
133 0,
134 3,
135 fn(int $level) : int => 20 * ($level - 1) + 10,
136 50
137 ));
138 self::register("RESPIRATION", new Enchantment(
139 KnownTranslationFactory::enchantment_oxygen(),
140 Rarity::RARE,
141 0,
142 0,
143 3,
144 fn(int $level) : int => 10 * $level,
145 30
146 ));
147
148 self::register("SHARPNESS", new SharpnessEnchantment(
149 KnownTranslationFactory::enchantment_damage_all(),
150 Rarity::COMMON,
151 0,
152 0,
153 5,
154 fn(int $level) : int => 11 * ($level - 1) + 1,
155 20
156 ));
157 self::register("KNOCKBACK", new KnockbackEnchantment(
158 KnownTranslationFactory::enchantment_knockback(),
159 Rarity::UNCOMMON,
160 0,
161 0,
162 2,
163 fn(int $level) : int => 20 * ($level - 1) + 5,
164 50
165 ));
166 self::register("FIRE_ASPECT", new FireAspectEnchantment(
167 KnownTranslationFactory::enchantment_fire(),
168 Rarity::RARE,
169 0,
170 0,
171 2,
172 fn(int $level) : int => 20 * ($level - 1) + 10,
173 50
174 ));
175 //TODO: smite, bane of arthropods, looting (these don't make sense now because their applicable mobs don't exist yet)
176
177 self::register("EFFICIENCY", new Enchantment(
178 KnownTranslationFactory::enchantment_digging(),
179 Rarity::COMMON,
180 0,
181 0,
182 5,
183 fn(int $level) : int => 10 * ($level - 1) + 1,
184 50
185 ));
186 self::register("FORTUNE", new Enchantment(
187 KnownTranslationFactory::enchantment_lootBonusDigger(),
188 Rarity::RARE,
189 0,
190 0,
191 3,
192 fn(int $level) : int => 9 * ($level - 1) + 15,
193 50
194 ));
195 self::register("SILK_TOUCH", new Enchantment(
196 KnownTranslationFactory::enchantment_untouching(),
197 Rarity::MYTHIC,
198 0,
199 0,
200 1,
201 fn(int $level) : int => 15,
202 50
203 ));
204 self::register("UNBREAKING", new Enchantment(
205 KnownTranslationFactory::enchantment_durability(),
206 Rarity::UNCOMMON,
207 0,
208 0,
209 3,
210 fn(int $level) : int => 8 * ($level - 1) + 5,
211 50
212 ));
213
214 self::register("POWER", new Enchantment(
215 KnownTranslationFactory::enchantment_arrowDamage(),
216 Rarity::COMMON,
217 0,
218 0,
219 5,
220 fn(int $level) : int => 10 * ($level - 1) + 1,
221 15
222 ));
223 self::register("PUNCH", new Enchantment(
224 KnownTranslationFactory::enchantment_arrowKnockback(),
225 Rarity::RARE,
226 0,
227 0,
228 2,
229 fn(int $level) : int => 20 * ($level - 1) + 12,
230 25
231 ));
232 self::register("FLAME", new Enchantment(
233 KnownTranslationFactory::enchantment_arrowFire(),
234 Rarity::RARE,
235 0,
236 0,
237 1,
238 fn(int $level) : int => 20,
239 30
240 ));
241 self::register("INFINITY", new Enchantment(
242 KnownTranslationFactory::enchantment_arrowInfinite(),
243 Rarity::MYTHIC,
244 0,
245 0,
246 1,
247 fn(int $level) : int => 20,
248 30
249 ));
250
251 self::register("MENDING", new Enchantment(
252 KnownTranslationFactory::enchantment_mending(),
253 Rarity::RARE,
254 0,
255 0,
256 1,
257 fn(int $level) : int => 25,
258 50
259 ));
260
261 self::register("VANISHING", new Enchantment(
262 KnownTranslationFactory::enchantment_curse_vanishing(),
263 Rarity::MYTHIC,
264 0,
265 0,
266 1,
267 fn(int $level) : int => 25,
268 25
269 ));
270
271 self::register("SWIFT_SNEAK", new Enchantment(
272 KnownTranslationFactory::enchantment_swift_sneak(),
273 Rarity::MYTHIC,
274 0,
275 0,
276 3,
277 fn(int $level) : int => 10 * $level,
278 5
279 ));
280 }
281
282 protected static function register(string $name, Enchantment $member) : void{
283 self::_registryRegister($name, $member);
284 }
285
290 public static function getAll() : array{
295 $result = self::_registryGetAll();
296 return $result;
297 }
298}