50 return
"VanillaItems";
55 "Allows getting a new instance of any item implemented by PocketMine-MP",
56 "Every item here also has a constant of the same name in {@link ItemTypeIds} to enable items to be identified"
60 private static function makeIID(
string $name) : IID{
64 $reflect = new \ReflectionClass(
ItemTypeIds::class);
65 $typeId = $reflect->getConstant(mb_strtoupper($name));
69 \GlobalLogger::get()->error(self::class .
": No constant type ID found for $name, generating a new one");
70 $typeId = ItemTypeIds::newId();
73 return new IID($typeId);
81 protected function register(
string $name, \Closure $createItem) :
Item{
82 $item = $createItem(self::makeIID($name));
83 self::registerValue($name, $item);
87 protected function setup() : void{
88 self::registerArmorItems();
89 self::registerSpawnEggs();
90 self::registerTierToolItems();
91 self::registerSmithingTemplates();
95 self::registerDelayed(
"air", fn() :
Item => Blocks::AIR()->asItem()->setCount(0));
98 self::registerDelayed(
"acacia_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Acacia Hanging Sign", Blocks::ACACIA_CEILING_CENTER_HANGING_SIGN(), Blocks::ACACIA_CEILING_EDGES_HANGING_SIGN(), Blocks::ACACIA_WALL_HANGING_SIGN()));
99 self::register(
"amethyst_shard", fn(IID $id) =>
new Item($id,
"Amethyst Shard"));
100 self::register(
"apple", fn(IID $id) =>
new Apple($id,
"Apple"));
101 self::register(
"arrow", fn(IID $id) =>
new Arrow($id,
"Arrow"));
102 self::register(
"baked_potato", fn(IID $id) =>
new BakedPotato($id,
"Baked Potato"));
103 self::register(
"bamboo", fn(IID $id) =>
new Bamboo($id,
"Bamboo"));
104 self::registerDelayed(
"banner", fn(
string $name) :
Banner =>
new Banner(self::makeIID($name), Blocks::BANNER(), Blocks::WALL_BANNER()));
105 self::register(
"beetroot", fn(IID $id) =>
new Beetroot($id,
"Beetroot"));
106 self::register(
"beetroot_seeds", fn(IID $id) =>
new BeetrootSeeds($id,
"Beetroot Seeds"));
107 self::register(
"beetroot_soup", fn(IID $id) =>
new BeetrootSoup($id,
"Beetroot Soup"));
109 self::registerDelayed(
"birch_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Birch Hanging Sign", Blocks::BIRCH_CEILING_CENTER_HANGING_SIGN(), Blocks::BIRCH_CEILING_EDGES_HANGING_SIGN(), Blocks::BIRCH_WALL_HANGING_SIGN()));
110 self::register(
"blaze_powder", fn(IID $id) =>
new Item($id,
"Blaze Powder"));
111 self::register(
"blaze_rod", fn(IID $id) =>
new BlazeRod($id,
"Blaze Rod"));
112 self::register(
"bleach", fn(IID $id) =>
new Item($id,
"Bleach"));
113 self::register(
"bone", fn(IID $id) =>
new Item($id,
"Bone"));
114 self::register(
"bone_meal", fn(IID $id) =>
new Fertilizer($id,
"Bone Meal"));
115 self::register(
"book", fn(IID $id) =>
new Book($id,
"Book", [EnchantmentTags::ALL]));
116 self::register(
"bow", fn(IID $id) =>
new Bow($id,
"Bow", [EnchantmentTags::BOW]));
117 self::register(
"bowl", fn(IID $id) =>
new Bowl($id,
"Bowl"));
118 self::register(
"bread", fn(IID $id) =>
new Bread($id,
"Bread"));
119 self::register(
"brick", fn(IID $id) =>
new Item($id,
"Brick"));
120 self::register(
"bucket", fn(IID $id) =>
new Bucket($id,
"Bucket"));
121 self::register(
"carrot", fn(IID $id) =>
new Carrot($id,
"Carrot"));
122 self::register(
"charcoal", fn(IID $id) =>
new Coal($id,
"Charcoal"));
124 self::registerDelayed(
"cherry_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Cherry Hanging Sign", Blocks::CHERRY_CEILING_CENTER_HANGING_SIGN(), Blocks::CHERRY_CEILING_EDGES_HANGING_SIGN(), Blocks::CHERRY_WALL_HANGING_SIGN()));
125 self::register(
"chemical_aluminium_oxide", fn(IID $id) =>
new Item($id,
"Aluminium Oxide"));
126 self::register(
"chemical_ammonia", fn(IID $id) =>
new Item($id,
"Ammonia"));
127 self::register(
"chemical_barium_sulphate", fn(IID $id) =>
new Item($id,
"Barium Sulphate"));
128 self::register(
"chemical_benzene", fn(IID $id) =>
new Item($id,
"Benzene"));
129 self::register(
"chemical_boron_trioxide", fn(IID $id) =>
new Item($id,
"Boron Trioxide"));
130 self::register(
"chemical_calcium_bromide", fn(IID $id) =>
new Item($id,
"Calcium Bromide"));
131 self::register(
"chemical_calcium_chloride", fn(IID $id) =>
new Item($id,
"Calcium Chloride"));
132 self::register(
"chemical_cerium_chloride", fn(IID $id) =>
new Item($id,
"Cerium Chloride"));
133 self::register(
"chemical_charcoal", fn(IID $id) =>
new Item($id,
"Charcoal"));
134 self::register(
"chemical_crude_oil", fn(IID $id) =>
new Item($id,
"Crude Oil"));
135 self::register(
"chemical_glue", fn(IID $id) =>
new Item($id,
"Glue"));
136 self::register(
"chemical_hydrogen_peroxide", fn(IID $id) =>
new Item($id,
"Hydrogen Peroxide"));
137 self::register(
"chemical_hypochlorite", fn(IID $id) =>
new Item($id,
"Hypochlorite"));
138 self::register(
"chemical_ink", fn(IID $id) =>
new Item($id,
"Ink"));
139 self::register(
"chemical_iron_sulphide", fn(IID $id) =>
new Item($id,
"Iron Sulphide"));
140 self::register(
"chemical_latex", fn(IID $id) =>
new Item($id,
"Latex"));
141 self::register(
"chemical_lithium_hydride", fn(IID $id) =>
new Item($id,
"Lithium Hydride"));
142 self::register(
"chemical_luminol", fn(IID $id) =>
new Item($id,
"Luminol"));
143 self::register(
"chemical_magnesium_nitrate", fn(IID $id) =>
new Item($id,
"Magnesium Nitrate"));
144 self::register(
"chemical_magnesium_oxide", fn(IID $id) =>
new Item($id,
"Magnesium Oxide"));
145 self::register(
"chemical_magnesium_salts", fn(IID $id) =>
new Item($id,
"Magnesium Salts"));
146 self::register(
"chemical_mercuric_chloride", fn(IID $id) =>
new Item($id,
"Mercuric Chloride"));
147 self::register(
"chemical_polyethylene", fn(IID $id) =>
new Item($id,
"Polyethylene"));
148 self::register(
"chemical_potassium_chloride", fn(IID $id) =>
new Item($id,
"Potassium Chloride"));
149 self::register(
"chemical_potassium_iodide", fn(IID $id) =>
new Item($id,
"Potassium Iodide"));
150 self::register(
"chemical_rubbish", fn(IID $id) =>
new Item($id,
"Rubbish"));
151 self::register(
"chemical_salt", fn(IID $id) =>
new Item($id,
"Salt"));
152 self::register(
"chemical_soap", fn(IID $id) =>
new Item($id,
"Soap"));
153 self::register(
"chemical_sodium_acetate", fn(IID $id) =>
new Item($id,
"Sodium Acetate"));
154 self::register(
"chemical_sodium_fluoride", fn(IID $id) =>
new Item($id,
"Sodium Fluoride"));
155 self::register(
"chemical_sodium_hydride", fn(IID $id) =>
new Item($id,
"Sodium Hydride"));
156 self::register(
"chemical_sodium_hydroxide", fn(IID $id) =>
new Item($id,
"Sodium Hydroxide"));
157 self::register(
"chemical_sodium_hypochlorite", fn(IID $id) =>
new Item($id,
"Sodium Hypochlorite"));
158 self::register(
"chemical_sodium_oxide", fn(IID $id) =>
new Item($id,
"Sodium Oxide"));
159 self::register(
"chemical_sugar", fn(IID $id) =>
new Item($id,
"Sugar"));
160 self::register(
"chemical_sulphate", fn(IID $id) =>
new Item($id,
"Sulphate"));
161 self::register(
"chemical_tungsten_chloride", fn(IID $id) =>
new Item($id,
"Tungsten Chloride"));
162 self::register(
"chemical_water", fn(IID $id) =>
new Item($id,
"Water"));
163 self::register(
"chorus_fruit", fn(IID $id) =>
new ChorusFruit($id,
"Chorus Fruit"));
164 self::register(
"clay", fn(IID $id) =>
new Item($id,
"Clay"));
165 self::register(
"clock", fn(IID $id) =>
new Clock($id,
"Clock"));
166 self::register(
"clownfish", fn(IID $id) =>
new Clownfish($id,
"Clownfish"));
167 self::register(
"coal", fn(IID $id) =>
new Coal($id,
"Coal"));
168 self::register(
"cocoa_beans", fn(IID $id) =>
new CocoaBeans($id,
"Cocoa Beans"));
169 self::register(
"compass", fn(IID $id) =>
new Compass($id,
"Compass", [EnchantmentTags::COMPASS]));
170 self::register(
"cooked_chicken", fn(IID $id) =>
new CookedChicken($id,
"Cooked Chicken"));
171 self::register(
"cooked_fish", fn(IID $id) =>
new CookedFish($id,
"Cooked Fish"));
172 self::register(
"cooked_mutton", fn(IID $id) =>
new CookedMutton($id,
"Cooked Mutton"));
173 self::register(
"cooked_porkchop", fn(IID $id) =>
new CookedPorkchop($id,
"Cooked Porkchop"));
174 self::register(
"cooked_rabbit", fn(IID $id) =>
new CookedRabbit($id,
"Cooked Rabbit"));
175 self::register(
"cooked_salmon", fn(IID $id) =>
new CookedSalmon($id,
"Cooked Salmon"));
176 self::register(
"cookie", fn(IID $id) =>
new Cookie($id,
"Cookie"));
177 self::register(
"copper_ingot", fn(IID $id) =>
new Item($id,
"Copper Ingot"));
178 self::register(
"copper_nugget", fn(IID $id) =>
new Item($id,
"Copper Nugget"));
179 self::registerDelayed(
"coral_fan", fn(
string $name) :
CoralFan =>
new CoralFan(self::makeIID($name)));
181 self::registerDelayed(
"crimson_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Crimson Hanging Sign", Blocks::CRIMSON_CEILING_CENTER_HANGING_SIGN(), Blocks::CRIMSON_CEILING_EDGES_HANGING_SIGN(), Blocks::CRIMSON_WALL_HANGING_SIGN()));
183 self::registerDelayed(
"dark_oak_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Dark Oak Hanging Sign", Blocks::DARK_OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::DARK_OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::DARK_OAK_WALL_HANGING_SIGN()));
184 self::register(
"diamond", fn(IID $id) =>
new Item($id,
"Diamond"));
185 self::register(
"disc_fragment_5", fn(IID $id) =>
new Item($id,
"Disc Fragment (5)"));
186 self::register(
"dragon_breath", fn(IID $id) =>
new Item($id,
"Dragon's Breath"));
187 self::register(
"dried_kelp", fn(IID $id) =>
new DriedKelp($id,
"Dried Kelp"));
189 self::register(
"dye", fn(IID $id) =>
new Dye($id,
"Dye"));
190 self::register(
"echo_shard", fn(IID $id) =>
new Item($id,
"Echo Shard"));
191 self::register(
"egg", fn(IID $id) =>
new Egg($id,
"Egg"));
192 self::register(
"emerald", fn(IID $id) =>
new Item($id,
"Emerald"));
193 self::register(
"enchanted_book", fn(IID $id) =>
new EnchantedBook($id,
"Enchanted Book", [EnchantmentTags::ALL]));
194 self::register(
"enchanted_golden_apple", fn(IID $id) =>
new GoldenAppleEnchanted($id,
"Enchanted Golden Apple"));
195 self::register(
"end_crystal", fn(IID $id) =>
new EndCrystal($id,
"End Crystal"));
196 self::register(
"ender_pearl", fn(IID $id) =>
new EnderPearl($id,
"Ender Pearl"));
197 self::register(
"experience_bottle", fn(IID $id) =>
new ExperienceBottle($id,
"Bottle o' Enchanting"));
198 self::register(
"feather", fn(IID $id) =>
new Item($id,
"Feather"));
199 self::register(
"fermented_spider_eye", fn(IID $id) =>
new Item($id,
"Fermented Spider Eye"));
200 self::register(
"firework_rocket", fn(IID $id) =>
new FireworkRocket($id,
"Firework Rocket"));
201 self::register(
"firework_star", fn(IID $id) =>
new FireworkStar($id,
"Firework Star"));
202 self::register(
"fire_charge", fn(IID $id) =>
new FireCharge($id,
"Fire Charge"));
203 self::register(
"fishing_rod", fn(IID $id) =>
new FishingRod($id,
"Fishing Rod", [EnchantmentTags::FISHING_ROD]));
204 self::register(
"flint", fn(IID $id) =>
new Item($id,
"Flint"));
205 self::register(
"flint_and_steel", fn(IID $id) =>
new FlintSteel($id,
"Flint and Steel", [EnchantmentTags::FLINT_AND_STEEL]));
206 self::register(
"ghast_tear", fn(IID $id) =>
new Item($id,
"Ghast Tear"));
207 self::register(
"glass_bottle", fn(IID $id) =>
new GlassBottle($id,
"Glass Bottle"));
208 self::register(
"glistering_melon", fn(IID $id) =>
new Item($id,
"Glistering Melon"));
209 self::register(
"glow_berries", fn(IID $id) =>
new GlowBerries($id,
"Glow Berries"));
210 self::register(
"glow_ink_sac", fn(IID $id) =>
new Item($id,
"Glow Ink Sac"));
211 self::register(
"glowstone_dust", fn(IID $id) =>
new Item($id,
"Glowstone Dust"));
212 self::register(
"goat_horn", fn(IID $id) =>
new GoatHorn($id,
"Goat Horn"));
213 self::register(
"gold_ingot", fn(IID $id) =>
new Item($id,
"Gold Ingot"));
214 self::register(
"gold_nugget", fn(IID $id) =>
new Item($id,
"Gold Nugget"));
215 self::register(
"golden_apple", fn(IID $id) =>
new GoldenApple($id,
"Golden Apple"));
216 self::register(
"golden_carrot", fn(IID $id) =>
new GoldenCarrot($id,
"Golden Carrot"));
217 self::register(
"gunpowder", fn(IID $id) =>
new Item($id,
"Gunpowder"));
218 self::register(
"heart_of_the_sea", fn(IID $id) =>
new Item($id,
"Heart of the Sea"));
219 self::register(
"honey_bottle", fn(IID $id) =>
new HoneyBottle($id,
"Honey Bottle"));
220 self::register(
"honeycomb", fn(IID $id) =>
new Item($id,
"Honeycomb"));
221 self::register(
"ice_bomb", fn(IID $id) =>
new IceBomb($id,
"Ice Bomb"));
222 self::register(
"ink_sac", fn(IID $id) =>
new Item($id,
"Ink Sac"));
223 self::register(
"iron_ingot", fn(IID $id) =>
new Item($id,
"Iron Ingot"));
224 self::register(
"iron_nugget", fn(IID $id) =>
new Item($id,
"Iron Nugget"));
226 self::registerDelayed(
"jungle_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Jungle Hanging Sign", Blocks::JUNGLE_CEILING_CENTER_HANGING_SIGN(), Blocks::JUNGLE_CEILING_EDGES_HANGING_SIGN(), Blocks::JUNGLE_WALL_HANGING_SIGN()));
227 self::register(
"lapis_lazuli", fn(IID $id) =>
new Item($id,
"Lapis Lazuli"));
228 self::registerDelayed(
"lava_bucket", fn(
string $name) :
LiquidBucket =>
new LiquidBucket(self::makeIID($name),
"Lava Bucket", Blocks::LAVA()));
229 self::register(
"leather", fn(IID $id) =>
new Item($id,
"Leather"));
230 self::register(
"lingering_potion", fn(IID $id) =>
new SplashPotion($id,
"Lingering Potion", linger:
true));
231 self::register(
"magma_cream", fn(IID $id) =>
new Item($id,
"Magma Cream"));
233 self::registerDelayed(
"mangrove_hanging_sign", fn(
string $name) :
HangingSign =>
new HangingSign(self::makeIID($name),
"Mangrove Hanging Sign", Blocks::MANGROVE_CEILING_CENTER_HANGING_SIGN(), Blocks::MANGROVE_CEILING_EDGES_HANGING_SIGN(), Blocks::MANGROVE_WALL_HANGING_SIGN()));
234 self::register(
"medicine", fn(IID $id) =>
new Medicine($id,
"Medicine"));
235 self::register(
"melon", fn(IID $id) =>
new Melon($id,
"Melon"));
236 self::register(
"melon_seeds", fn(IID $id) =>
new MelonSeeds($id,
"Melon Seeds"));
237 self::register(
"milk_bucket", fn(IID $id) =>
new MilkBucket($id,
"Milk Bucket"));
238 self::register(
"minecart", fn(IID $id) =>
new Minecart($id,
"Minecart"));
239 self::register(
"mushroom_stew", fn(IID $id) =>
new MushroomStew($id,
"Mushroom Stew"));
240 self::register(
"name_tag", fn(IID $id) =>
new NameTag($id,
"Name Tag"));
241 self::register(
"nautilus_shell", fn(IID $id) =>
new Item($id,
"Nautilus Shell"));
242 self::register(
"nether_brick", fn(IID $id) =>
new Item($id,
"Nether Brick"));
243 self::register(
"nether_quartz", fn(IID $id) =>
new Item($id,
"Nether Quartz"));
244 self::register(
"nether_star", fn(IID $id) =>
new Item($id,
"Nether Star"));
245 self::register(
"netherite_ingot", fn(IID $id) =>
new class($id,
"Netherite Ingot") extends
Item{
246 public function isFireProof() : bool{ return true; }
248 self::register(
"netherite_scrap", fn(IID $id) =>
new class($id,
"Netherite Scrap") extends Item{
249 public function isFireProof() : bool{ return true; }
251 self::registerDelayed(
"oak_sign", fn(
string $name) : ItemBlockWallOrFloor =>
new ItemBlockWallOrFloor(self::makeIID($name), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN()));
252 self::registerDelayed(
"oak_hanging_sign", fn(
string $name) : HangingSign =>
new HangingSign(self::makeIID($name),
"Oak Hanging Sign", Blocks::OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::OAK_WALL_HANGING_SIGN()));
253 self::registerDelayed(
"ominous_banner", fn(
string $name) : ItemBlockWallOrFloor =>
new ItemBlockWallOrFloor(self::makeIID($name), Blocks::OMINOUS_BANNER(), Blocks::OMINOUS_WALL_BANNER()));
254 self::register(
"painting", fn(IID $id) =>
new PaintingItem($id,
"Painting"));
255 self::registerDelayed(
"pale_oak_sign", fn(
string $name) : ItemBlockWallOrFloor =>
new ItemBlockWallOrFloor(self::makeIID($name), Blocks::PALE_OAK_SIGN(), Blocks::PALE_OAK_WALL_SIGN()));
256 self::registerDelayed(
"pale_oak_hanging_sign", fn(
string $name) : HangingSign =>
new HangingSign(self::makeIID($name),
"Pale Oak Hanging Sign", Blocks::PALE_OAK_CEILING_CENTER_HANGING_SIGN(), Blocks::PALE_OAK_CEILING_EDGES_HANGING_SIGN(), Blocks::PALE_OAK_WALL_HANGING_SIGN()));
257 self::register(
"paper", fn(IID $id) =>
new Item($id,
"Paper"));
258 self::register(
"phantom_membrane", fn(IID $id) =>
new Item($id,
"Phantom Membrane"));
259 self::register(
"pitcher_pod", fn(IID $id) =>
new PitcherPod($id,
"Pitcher Pod"));
260 self::register(
"poisonous_potato", fn(IID $id) =>
new PoisonousPotato($id,
"Poisonous Potato"));
261 self::register(
"popped_chorus_fruit", fn(IID $id) =>
new Item($id,
"Popped Chorus Fruit"));
262 self::register(
"potato", fn(IID $id) =>
new Potato($id,
"Potato"));
263 self::register(
"potion", fn(IID $id) =>
new Potion($id,
"Potion"));
264 self::register(
"prismarine_crystals", fn(IID $id) =>
new Item($id,
"Prismarine Crystals"));
265 self::register(
"prismarine_shard", fn(IID $id) =>
new Item($id,
"Prismarine Shard"));
266 self::register(
"pufferfish", fn(IID $id) =>
new Pufferfish($id,
"Pufferfish"));
267 self::register(
"pumpkin_pie", fn(IID $id) =>
new PumpkinPie($id,
"Pumpkin Pie"));
268 self::register(
"pumpkin_seeds", fn(IID $id) =>
new PumpkinSeeds($id,
"Pumpkin Seeds"));
269 self::register(
"rabbit_foot", fn(IID $id) =>
new Item($id,
"Rabbit's Foot"));
270 self::register(
"rabbit_hide", fn(IID $id) =>
new Item($id,
"Rabbit Hide"));
271 self::register(
"rabbit_stew", fn(IID $id) =>
new RabbitStew($id,
"Rabbit Stew"));
272 self::register(
"raw_beef", fn(IID $id) =>
new RawBeef($id,
"Raw Beef"));
273 self::register(
"raw_chicken", fn(IID $id) =>
new RawChicken($id,
"Raw Chicken"));
274 self::register(
"raw_copper", fn(IID $id) =>
new Item($id,
"Raw Copper"));
275 self::register(
"raw_fish", fn(IID $id) =>
new RawFish($id,
"Raw Fish"));
276 self::register(
"raw_gold", fn(IID $id) =>
new Item($id,
"Raw Gold"));
277 self::register(
"raw_iron", fn(IID $id) =>
new Item($id,
"Raw Iron"));
278 self::register(
"raw_mutton", fn(IID $id) =>
new RawMutton($id,
"Raw Mutton"));
279 self::register(
"raw_porkchop", fn(IID $id) =>
new RawPorkchop($id,
"Raw Porkchop"));
280 self::register(
"raw_rabbit", fn(IID $id) =>
new RawRabbit($id,
"Raw Rabbit"));
281 self::register(
"raw_salmon", fn(IID $id) =>
new RawSalmon($id,
"Raw Salmon"));
282 self::register(
"record_11", fn(IID $id) =>
new Record($id, RecordType::DISK_11,
"Record 11"));
283 self::register(
"record_13", fn(IID $id) =>
new Record($id, RecordType::DISK_13,
"Record 13"));
284 self::register(
"record_5", fn(IID $id) =>
new Record($id, RecordType::DISK_5,
"Record 5"));
285 self::register(
"record_blocks", fn(IID $id) =>
new Record($id, RecordType::DISK_BLOCKS,
"Record Blocks"));
286 self::register(
"record_cat", fn(IID $id) =>
new Record($id, RecordType::DISK_CAT,
"Record Cat"));
287 self::register(
"record_chirp", fn(IID $id) =>
new Record($id, RecordType::DISK_CHIRP,
"Record Chirp"));
288 self::register(
"record_creator", fn(IID $id) =>
new Record($id, RecordType::DISK_CREATOR,
"Record Creator"));
289 self::register(
"record_creator_music_box", fn(IID $id) =>
new Record($id, RecordType::DISK_CREATOR_MUSIC_BOX,
"Record Creator (Music Box)"));
290 self::register(
"record_far", fn(IID $id) =>
new Record($id, RecordType::DISK_FAR,
"Record Far"));
291 self::register(
"record_lava_chicken", fn(IID $id) =>
new Record($id, RecordType::DISK_LAVA_CHICKEN,
"Record Lava Chicken"));
292 self::register(
"record_mall", fn(IID $id) =>
new Record($id, RecordType::DISK_MALL,
"Record Mall"));
293 self::register(
"record_mellohi", fn(IID $id) =>
new Record($id, RecordType::DISK_MELLOHI,
"Record Mellohi"));
294 self::register(
"record_otherside", fn(IID $id) =>
new Record($id, RecordType::DISK_OTHERSIDE,
"Record Otherside"));
295 self::register(
"record_pigstep", fn(IID $id) =>
new Record($id, RecordType::DISK_PIGSTEP,
"Record Pigstep"));
296 self::register(
"record_precipice", fn(IID $id) =>
new Record($id, RecordType::DISK_PRECIPICE,
"Record Precipice"));
297 self::register(
"record_relic", fn(IID $id) =>
new Record($id, RecordType::DISK_RELIC,
"Record Relic"));
298 self::register(
"record_stal", fn(IID $id) =>
new Record($id, RecordType::DISK_STAL,
"Record Stal"));
299 self::register(
"record_strad", fn(IID $id) =>
new Record($id, RecordType::DISK_STRAD,
"Record Strad"));
300 self::register(
"record_wait", fn(IID $id) =>
new Record($id, RecordType::DISK_WAIT,
"Record Wait"));
301 self::register(
"record_ward", fn(IID $id) =>
new Record($id, RecordType::DISK_WARD,
"Record Ward"));
302 self::register(
"recovery_compass", fn(IID $id) =>
new Item($id,
"Recovery Compass"));
303 self::register(
"redstone_dust", fn(IID $id) =>
new Redstone($id,
"Redstone"));
304 self::register(
"resin_brick", fn(IID $id) =>
new Item($id,
"Resin Brick"));
305 self::register(
"rotten_flesh", fn(IID $id) =>
new RottenFlesh($id,
"Rotten Flesh"));
306 self::register(
"scute", fn(IID $id) =>
new Item($id,
"Scute"));
307 self::register(
"shears", fn(IID $id) =>
new Shears($id,
"Shears", [EnchantmentTags::SHEARS]));
308 self::register(
"shulker_shell", fn(IID $id) =>
new Item($id,
"Shulker Shell"));
309 self::register(
"slimeball", fn(IID $id) =>
new Item($id,
"Slimeball"));
310 self::register(
"snowball", fn(IID $id) =>
new Snowball($id,
"Snowball"));
311 self::register(
"spider_eye", fn(IID $id) =>
new SpiderEye($id,
"Spider Eye"));
312 self::register(
"splash_potion", fn(IID $id) =>
new SplashPotion($id,
"Splash Potion"));
313 self::registerDelayed(
"spruce_sign", fn(
string $name) : ItemBlockWallOrFloor =>
new ItemBlockWallOrFloor(self::makeIID($name), Blocks::SPRUCE_SIGN(), Blocks::SPRUCE_WALL_SIGN()));
314 self::registerDelayed(
"spruce_hanging_sign", fn(
string $name) : HangingSign =>
new HangingSign(self::makeIID($name),
"Spruce Hanging Sign", Blocks::SPRUCE_CEILING_CENTER_HANGING_SIGN(), Blocks::SPRUCE_CEILING_EDGES_HANGING_SIGN(), Blocks::SPRUCE_WALL_HANGING_SIGN()));
315 self::register(
"spyglass", fn(IID $id) =>
new Spyglass($id,
"Spyglass"));
316 self::register(
"steak", fn(IID $id) =>
new Steak($id,
"Steak"));
317 self::register(
"stick", fn(IID $id) =>
new Stick($id,
"Stick"));
318 self::register(
"string", fn(IID $id) =>
new StringItem($id,
"String"));
319 self::register(
"sugar", fn(IID $id) =>
new Item($id,
"Sugar"));
320 self::register(
"suspicious_stew", fn(IID $id) =>
new SuspiciousStew($id,
"Suspicious Stew"));
321 self::register(
"sweet_berries", fn(IID $id) =>
new SweetBerries($id,
"Sweet Berries"));
322 self::register(
"torchflower_seeds", fn(IID $id) =>
new TorchflowerSeeds($id,
"Torchflower Seeds"));
323 self::register(
"totem", fn(IID $id) =>
new Totem($id,
"Totem of Undying"));
324 self::register(
"trident", fn(IID $id) =>
new Trident($id,
"Trident"));
325 self::registerDelayed(
"warped_sign", fn(
string $name) : ItemBlockWallOrFloor =>
new ItemBlockWallOrFloor(self::makeIID($name), Blocks::WARPED_SIGN(), Blocks::WARPED_WALL_SIGN()));
326 self::registerDelayed(
"warped_hanging_sign", fn(
string $name) : HangingSign =>
new HangingSign(self::makeIID($name),
"Warped Hanging Sign", Blocks::WARPED_CEILING_CENTER_HANGING_SIGN(), Blocks::WARPED_CEILING_EDGES_HANGING_SIGN(), Blocks::WARPED_WALL_HANGING_SIGN()));
327 self::registerDelayed(
"water_bucket", fn(
string $name) : LiquidBucket =>
new LiquidBucket(self::makeIID($name),
"Water Bucket", Blocks::WATER()));
328 self::register(
"wheat", fn(IID $id) =>
new Item($id,
"Wheat"));
329 self::register(
"wheat_seeds", fn(IID $id) =>
new WheatSeeds($id,
"Wheat Seeds"));
330 self::register(
"writable_book", fn(IID $id) =>
new WritableBook($id,
"Book & Quill"));
331 self::register(
"written_book", fn(IID $id) =>
new WrittenBook($id,
"Written Book"));
333 foreach(BoatType::cases() as $type){
335 self::register(strtolower($type->name) .
"_boat", fn(IID $id) =>
new Boat($id, $type->getDisplayName() .
" Boat", $type));
339 private function registerSpawnEggs() : void{
340 self::register(
"zombie_spawn_egg", fn(IID $id) => new class($id,
"Zombie Spawn Egg") extends SpawnEgg{
341 protected function createEntity(World $world, Vector3 $pos, float $yaw, float $pitch) : Entity{
342 return new Zombie(Location::fromObject($pos, $world, $yaw, $pitch));
345 self::register(
"squid_spawn_egg", fn(IID $id) =>
new class($id,
"Squid Spawn Egg") extends SpawnEgg{
346 protected function createEntity(World $world, Vector3 $pos,
float $yaw,
float $pitch) : Entity{
347 return new Squid(Location::fromObject($pos, $world, $yaw, $pitch));
350 self::register(
"villager_spawn_egg", fn(IID $id) =>
new class($id,
"Villager Spawn Egg") extends SpawnEgg{
351 protected function createEntity(World $world, Vector3 $pos,
float $yaw,
float $pitch) : Entity{
352 return new Villager(Location::fromObject($pos, $world, $yaw, $pitch));
357 private function registerTierToolItems() : void{
359 [
ToolTier::COPPER,
"copper",
"Copper"],
360 [
ToolTier::DIAMOND,
"diamond",
"Diamond"],
361 [
ToolTier::GOLD,
"golden",
"Golden"],
363 [
ToolTier::NETHERITE,
"netherite",
"Netherite"],
364 [
ToolTier::STONE,
"stone",
"Stone"],
365 [
ToolTier::WOOD,
"wooden",
"Wooden"]
366 ] as [$tier, $idPrefix, $namePrefix]){
367 self::register($idPrefix .
"_axe", fn(IID $id) =>
new Axe($id, $namePrefix .
" Axe", $tier, [EnchantmentTags::AXE]));
368 self::register($idPrefix .
"_hoe", fn(IID $id) =>
new Hoe($id, $namePrefix .
" Hoe", $tier, [EnchantmentTags::HOE]));
369 self::register($idPrefix .
"_pickaxe", fn(IID $id) =>
new Pickaxe($id, $namePrefix .
" Pickaxe", $tier, [EnchantmentTags::PICKAXE]));
370 self::register($idPrefix .
"_shovel", fn(IID $id) =>
new Shovel($id, $namePrefix .
" Shovel", $tier, [EnchantmentTags::SHOVEL]));
371 self::register($idPrefix .
"_sword", fn(IID $id) =>
new Sword($id, $namePrefix .
" Sword", $tier, [EnchantmentTags::SWORD]));
375 private function registerArmorItems() : void{
376 self::registerDelayed(
"chainmail_boots", fn($name) : Armor => new Armor(self::makeIID($name),
"Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET, material: ArmorMaterials::CHAINMAIL()), [EnchantmentTags::BOOTS]));
377 self::registerDelayed(
"copper_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Copper Boots",
new ArmorTypeInfo(1, 144, ArmorInventory::SLOT_FEET, material: ArmorMaterials::COPPER()), [EnchantmentTags::BOOTS]));
378 self::registerDelayed(
"diamond_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Diamond Boots",
new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET, 2, material: ArmorMaterials::DIAMOND()), [EnchantmentTags::BOOTS]));
379 self::registerDelayed(
"golden_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Golden Boots",
new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET, material: ArmorMaterials::GOLD()), [EnchantmentTags::BOOTS]));
380 self::registerDelayed(
"iron_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Iron Boots",
new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET, material: ArmorMaterials::IRON()), [EnchantmentTags::BOOTS]));
381 self::registerDelayed(
"leather_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Leather Boots",
new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET, material: ArmorMaterials::LEATHER()), [EnchantmentTags::BOOTS]));
382 self::registerDelayed(
"netherite_boots", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Netherite Boots",
new ArmorTypeInfo(3, 482, ArmorInventory::SLOT_FEET, 3,
true, material: ArmorMaterials::NETHERITE()), [EnchantmentTags::BOOTS]));
384 self::registerDelayed(
"chainmail_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Chainmail Chestplate",
new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST, material: ArmorMaterials::CHAINMAIL()), [EnchantmentTags::CHESTPLATE]));
385 self::registerDelayed(
"copper_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Copper Chestplate",
new ArmorTypeInfo(4, 177, ArmorInventory::SLOT_CHEST, material: ArmorMaterials::COPPER()), [EnchantmentTags::CHESTPLATE]));
386 self::registerDelayed(
"diamond_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Diamond Chestplate",
new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST, 2, material: ArmorMaterials::DIAMOND()), [EnchantmentTags::CHESTPLATE]));
387 self::registerDelayed(
"golden_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Golden Chestplate",
new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST, material: ArmorMaterials::GOLD()), [EnchantmentTags::CHESTPLATE]));
388 self::registerDelayed(
"iron_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Iron Chestplate",
new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST, material: ArmorMaterials::IRON()), [EnchantmentTags::CHESTPLATE]));
389 self::registerDelayed(
"leather_tunic", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Leather Tunic",
new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST, material: ArmorMaterials::LEATHER()), [EnchantmentTags::CHESTPLATE]));
390 self::registerDelayed(
"netherite_chestplate", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Netherite Chestplate",
new ArmorTypeInfo(8, 593, ArmorInventory::SLOT_CHEST, 3,
true, material: ArmorMaterials::NETHERITE()), [EnchantmentTags::CHESTPLATE]));
392 self::registerDelayed(
"chainmail_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Chainmail Helmet",
new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::CHAINMAIL()), [EnchantmentTags::HELMET]));
393 self::registerDelayed(
"copper_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Copper Helmet",
new ArmorTypeInfo(2, 122, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::COPPER()), [EnchantmentTags::HELMET]));
394 self::registerDelayed(
"diamond_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Diamond Helmet",
new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD, 2, material: ArmorMaterials::DIAMOND()), [EnchantmentTags::HELMET]));
395 self::registerDelayed(
"golden_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Golden Helmet",
new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::GOLD()), [EnchantmentTags::HELMET]));
396 self::registerDelayed(
"iron_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Iron Helmet",
new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::IRON()), [EnchantmentTags::HELMET]));
397 self::registerDelayed(
"leather_cap", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Leather Cap",
new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::LEATHER()), [EnchantmentTags::HELMET]));
398 self::registerDelayed(
"netherite_helmet", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Netherite Helmet",
new ArmorTypeInfo(3, 408, ArmorInventory::SLOT_HEAD, 3,
true, material: ArmorMaterials::NETHERITE()), [EnchantmentTags::HELMET]));
399 self::registerDelayed(
"turtle_helmet", fn($name) : TurtleHelmet =>
new TurtleHelmet(self::makeIID($name),
"Turtle Shell",
new ArmorTypeInfo(2, 276, ArmorInventory::SLOT_HEAD, material: ArmorMaterials::TURTLE()), [EnchantmentTags::HELMET]));
401 self::registerDelayed(
"chainmail_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Chainmail Leggings",
new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS, material: ArmorMaterials::CHAINMAIL()), [EnchantmentTags::LEGGINGS]));
402 self::registerDelayed(
"copper_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Copper Leggings",
new ArmorTypeInfo(3, 166, ArmorInventory::SLOT_LEGS, material: ArmorMaterials::COPPER()), [EnchantmentTags::LEGGINGS]));
403 self::registerDelayed(
"diamond_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Diamond Leggings",
new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS, 2, material: ArmorMaterials::DIAMOND()), [EnchantmentTags::LEGGINGS]));
404 self::registerDelayed(
"golden_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Golden Leggings",
new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS, material: ArmorMaterials::GOLD()), [EnchantmentTags::LEGGINGS]));
405 self::registerDelayed(
"iron_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Iron Leggings",
new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS, material: ArmorMaterials::IRON()), [EnchantmentTags::LEGGINGS]));
406 self::registerDelayed(
"leather_pants", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Leather Pants",
new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS, material: ArmorMaterials::LEATHER()), [EnchantmentTags::LEGGINGS]));
407 self::registerDelayed(
"netherite_leggings", fn($name) : Armor =>
new Armor(self::makeIID($name),
"Netherite Leggings",
new ArmorTypeInfo(6, 556, ArmorInventory::SLOT_LEGS, 3,
true, material: ArmorMaterials::NETHERITE()), [EnchantmentTags::LEGGINGS]));
410 private function registerSmithingTemplates() : void{
411 self::register(
"netherite_upgrade_smithing_template", fn(IID $id) => new Item($id,
"Netherite Upgrade Smithing Template"));
412 self::register(
"coast_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Coast Armor Trim Smithing Template"));
413 self::register(
"dune_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Dune Armor Trim Smithing Template"));
414 self::register(
"eye_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Eye Armor Trim Smithing Template"));
415 self::register(
"host_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Host Armor Trim Smithing Template"));
416 self::register(
"raiser_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Raiser Armor Trim Smithing Template"));
417 self::register(
"rib_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Rib Armor Trim Smithing Template"));
418 self::register(
"sentry_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Sentry Armor Trim Smithing Template"));
419 self::register(
"shaper_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Shaper Armor Trim Smithing Template"));
420 self::register(
"silence_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Silence Armor Trim Smithing Template"));
421 self::register(
"snout_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Snout Armor Trim Smithing Template"));
422 self::register(
"spire_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Spire Armor Trim Smithing Template"));
423 self::register(
"tide_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Tide Armor Trim Smithing Template"));
424 self::register(
"vex_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Vex Armor Trim Smithing Template"));
425 self::register(
"ward_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Ward Armor Trim Smithing Template"));
426 self::register(
"wayfinder_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Wayfinder Armor Trim Smithing Template"));
427 self::register(
"wild_armor_trim_smithing_template", fn(IID $id) =>
new Item($id,
"Wild Armor Trim Smithing Template"));