1 /* 2 * Copyright (c) 2017-2019 sel-project 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to deal 6 * in the Software without restriction, including without limitation the rights 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 * copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in all 12 * copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 * SOFTWARE. 21 * 22 */ 23 /** 24 * Copyright: Copyright (c) 2017-2019 sel-project 25 * License: MIT 26 * Authors: Kripth 27 * Source: $(HTTP github.com/sel-project/selery/source/selery/item/items.d, selery/item/items.d) 28 */ 29 module selery.item.items; 30 31 import std..string : replace, toLower; 32 33 import selery.about : item_t; 34 import selery.block.blocks : Blocks; 35 import selery.effect : Effects; 36 import selery.item.consumeable; 37 import selery.item.item : Item, SimpleItem; 38 import selery.item.miscellaneous; 39 import selery.item.placeable; 40 import selery.item.tool; 41 42 import sul.items : _ = Items; 43 44 /** 45 * Storage for a world's items. 46 */ 47 public class ItemStorage { 48 49 private static ItemStorage instance; 50 51 private Item function(ushort damage)[] indexes; 52 private Item function(ushort damage)[ushort][] java, bedrock; 53 private Item function(ushort damage)[string] strings; 54 55 public this() { 56 if(instance is null) { 57 version(NoItems) {} else { 58 foreach_reverse(a ; __traits(allMembers, Items)) { 59 mixin("alias T = Items." ~ a ~ ";"); 60 static if(is(T : Item)) { 61 static if(__traits(compiles, new T(ushort.max))) { 62 this.register((ushort damage){ return cast(Item)new T(damage); }); 63 } else { 64 this.register((ushort damage){ return cast(Item)new T(); }); 65 } 66 } 67 } 68 } 69 instance = this; 70 } else { 71 this.indexes = instance.indexes.dup; 72 this.java = instance.java.dup; 73 this.bedrock = instance.bedrock.dup; 74 this.strings = instance.strings.dup; 75 } 76 } 77 78 private void register(Item function(ushort) f) { 79 auto item = f(0); 80 if(this.indexes.length <= item.data.index) this.indexes.length = item.data.index + 1; 81 this.indexes[item.data.index] = f; 82 if(item.java) { 83 if(this.java.length < item.javaId) this.java.length = item.javaId + 1; 84 this.java[item.javaId][item.javaMeta] = f; 85 } 86 if(item.bedrock) { 87 if(this.bedrock.length < item.bedrockId) this.bedrock.length = item.bedrockId + 1; 88 this.bedrock[item.bedrockId][item.bedrockMeta] = f; 89 } 90 this.strings[item.name] = f; 91 } 92 93 public Item function(ushort) getConstructor(size_t index) { 94 return index < this.indexes.length ? this.indexes[index] : null; 95 } 96 97 public Item get(size_t index, ushort damage=0) { 98 return index < this.indexes.length ? this.indexes[index](damage) : null; 99 } 100 101 public Item fromJava(ushort id, ushort damage=0) { 102 if(this.java.length < id) return null; 103 auto data = this.java[id]; 104 auto dam = damage in data; 105 return dam ? (*dam)(damage) : null; 106 } 107 108 public Item fromBedrock(ushort id, ushort damage=0) { 109 if(this.bedrock.length < id) return null; 110 auto data = this.bedrock[id]; 111 auto dam = damage in data; 112 return dam ? (*dam)(damage) : null; 113 } 114 115 /** 116 * Gets an item using a string. 117 * Returns: an instance of Item or null if there are no items with the given name 118 * Example: 119 * --- 120 * assert(items.fromString("grass") == Items.grass); 121 * assert(items.fromString("polished granite") == Items.polishedGranite); 122 * assert(items.fromString("polished_andesite") == Items.polishedAndesite); 123 * assert(items.fromString("not an item") is null); 124 * --- 125 */ 126 public Item fromString(string name, ushort damage=0) { 127 auto f = name.toLower.replace("_", " ") in this.strings; 128 return f ? (*f)(damage) : null; 129 } 130 131 } 132 133 interface Items { 134 135 mixin((){ 136 string ret; 137 foreach(member ; __traits(allMembers, _)) { 138 ret ~= "enum " ~ member ~ "=_." ~ member ~ ".index;"; 139 } 140 return ret; 141 }()); 142 143 alias Stone = PlaceableItem!(_.stone, Blocks.stone); 144 145 alias Granite = PlaceableItem!(_.granite, Blocks.granite); 146 147 alias PolishedGranite = PlaceableItem!(_.polishedGranite, Blocks.polishedGranite); 148 149 alias Diorite = PlaceableItem!(_.diorite, Blocks.diorite); 150 151 alias PolishedDiorite = PlaceableItem!(_.polishedDiorite, Blocks.polishedDiorite); 152 153 alias Andesite = PlaceableItem!(_.andesite, Blocks.andesite); 154 155 alias PolishedAndesite = PlaceableItem!(_.polishedAndesite, Blocks.polishedAndesite); 156 157 alias Grass = PlaceableItem!(_.grass, Blocks.grass); 158 159 alias Dirt = PlaceableItem!(_.dirt, Blocks.dirt); 160 161 alias CoarseDirt = PlaceableItem!(_.coarseDirt, Blocks.coarseDirt); 162 163 alias Podzol = PlaceableItem!(_.podzol, Blocks.podzol); 164 165 alias Cobblestone = PlaceableItem!(_.cobblestone, Blocks.cobblestone); 166 167 alias OakWoodPlanks = PlaceableItem!(_.oakWoodPlanks, Blocks.oakWoodPlanks); 168 169 alias SpruceWoodPlanks = PlaceableItem!(_.spruceWoodPlanks, Blocks.spruceWoodPlanks); 170 171 alias BirchWoodPlanks = PlaceableItem!(_.birchWoodPlanks, Blocks.birchWoodPlanks); 172 173 alias JungleWoodPlanks = PlaceableItem!(_.jungleWoodPlanks, Blocks.jungleWoodPlanks); 174 175 alias AcaciaWoodPlanks = PlaceableItem!(_.acaciaWoodPlanks, Blocks.acaciaWoodPlanks); 176 177 alias DarkOakWoodPlanks = PlaceableItem!(_.darkOakWoodPlanks, Blocks.darkOakWoodPlanks); 178 179 alias OakSapling = PlaceableItem!(_.oakSapling, Blocks.oakSapling, Blocks.dirts); 180 181 alias SpruceSapling = PlaceableItem!(_.spruceSapling, Blocks.spruceSapling, Blocks.dirts); 182 183 alias BirchSapling = PlaceableItem!(_.birchSapling, Blocks.birchSapling, Blocks.dirts); 184 185 alias JungleSapling = PlaceableItem!(_.jungleSapling, Blocks.jungleSapling, Blocks.dirts); 186 187 alias AcaciaSapling = PlaceableItem!(_.acaciaSapling, Blocks.acaciaSapling, Blocks.dirts); 188 189 alias DarkOakSapling = PlaceableItem!(_.darkOakSapling, Blocks.darkOakSapling, Blocks.dirts); 190 191 alias Bedrock = PlaceableItem!(_.bedrock, Blocks.bedrock); 192 193 alias Sand = PlaceableItem!(_.sand, Blocks.sand); 194 195 alias RedSand = PlaceableItem!(_.redSand, Blocks.redSand); 196 197 alias Gravel = PlaceableItem!(_.gravel, Blocks.gravel); 198 199 alias GoldOre = PlaceableItem!(_.goldOre, Blocks.goldOre); 200 201 alias IronOre = PlaceableItem!(_.ironOre, Blocks.ironOre); 202 203 alias CoalOre = PlaceableItem!(_.coalOre, Blocks.coalOre); 204 205 alias OakWood = WoodItem!(_.oakWood, Blocks.oakWood); 206 207 alias SpruceWood = WoodItem!(_.spruceWood, Blocks.spruceWood); 208 209 alias BirchWood = WoodItem!(_.birchWood, Blocks.birchWood); 210 211 alias JungleWood = WoodItem!(_.jungleWood, Blocks.jungleWood); 212 213 alias AcaciaWood = WoodItem!(_.acaciaWood, Blocks.acaciaWood); 214 215 alias DarkOakWood = WoodItem!(_.darkOakWood, Blocks.darkOakWood); 216 217 alias OakLeaves = PlaceableItem!(_.oakLeaves, Blocks.oakLeavesNoDecay); 218 219 alias SpruceLeaves = PlaceableItem!(_.spruceLeaves, Blocks.spruceLeavesNoDecay); 220 221 alias BirchLeaves = PlaceableItem!(_.birchLeaves, Blocks.birchLeavesNoDecay); 222 223 alias JungleLeaves = PlaceableItem!(_.jungleLeaves, Blocks.jungleLeavesNoDecay); 224 225 alias AcaciaLeaves = PlaceableItem!(_.acaciaLeaves, Blocks.acaciaLeavesNoDecay); 226 227 alias DarkOakLeaves = PlaceableItem!(_.darkOakLeaves, Blocks.darkOakLeavesNoDecay); 228 229 alias Sponge = PlaceableItem!(_.sponge, Blocks.sponge); 230 231 alias WetSponge = PlaceableItem!(_.wetSponge, Blocks.wetSponge); 232 233 alias Glass = PlaceableItem!(_.glass, Blocks.glass); 234 235 alias LapisLazuliOre = PlaceableItem!(_.lapisLazuliOre, Blocks.lapisLazuliOre); 236 237 alias LapisLazuliBlock = PlaceableItem!(_.lapisLazuliBlock, Blocks.lapisLazuliBlock); 238 239 alias Dispenser = SimpleItem!(_.dispenser); 240 241 alias Sandstone = PlaceableItem!(_.sandstone, Blocks.sandstone); 242 243 alias ChiseledSandstone = PlaceableItem!(_.chiseledSandstone, Blocks.chiseledSandstone); 244 245 alias SmoothSandstone = PlaceableItem!(_.smoothSandstone, Blocks.smoothSandstone); 246 247 alias NoteBlock = PlaceableItem!(_.noteBlock, Blocks.noteBlock); 248 249 alias PoweredRail = SimpleItem!(_.poweredRail); 250 251 alias DetectorRail = SimpleItem!(_.detectorRail); 252 253 alias StickyPiston = SimpleItem!(_.stickyPiston); 254 255 alias Cobweb = PlaceableItem!(_.cobweb, Blocks.cobweb); 256 257 alias TallGrass = PlaceableItem!(_.tallGrass, Blocks.tallGrass, Blocks.dirts); 258 259 alias Fern = PlaceableItem!(_.fern, Blocks.fern, Blocks.dirts); 260 261 alias DeadBush = PlaceableItem!(_.deadBush, Blocks.deadBush, [Blocks.sand, Blocks.redSand, Blocks.dirt, Blocks.podzol, Blocks.coarseDirt, Blocks.hardenedClay] ~ Blocks.stainedClay); 262 263 alias Piston = SimpleItem!(_.piston); 264 265 alias WhiteWool = PlaceableItem!(_.whiteWool, Blocks.whiteWool); 266 267 alias OrangeWool = PlaceableItem!(_.orangeWool, Blocks.orangeWool); 268 269 alias MagentaWool = PlaceableItem!(_.magentaWool, Blocks.magentaWool); 270 271 alias LightBlueWool = PlaceableItem!(_.lightBlueWool, Blocks.lightBlueWool); 272 273 alias YellowWool = PlaceableItem!(_.yellowWool, Blocks.yellowWool); 274 275 alias LimeWool = PlaceableItem!(_.limeWool, Blocks.limeWool); 276 277 alias PinkWool = PlaceableItem!(_.pinkWool, Blocks.pinkWool); 278 279 alias GrayWool = PlaceableItem!(_.grayWool, Blocks.grayWool); 280 281 alias LightGrayWool = PlaceableItem!(_.lightGrayWool, Blocks.lightGrayWool); 282 283 alias CyanWool = PlaceableItem!(_.cyanWool, Blocks.cyanWool); 284 285 alias PurpleWool = PlaceableItem!(_.purpleWool, Blocks.purpleWool); 286 287 alias BlueWool = PlaceableItem!(_.blueWool, Blocks.blueWool); 288 289 alias BrownWool = PlaceableItem!(_.brownWool, Blocks.brownWool); 290 291 alias GreenWool = PlaceableItem!(_.greenWool, Blocks.greenWool); 292 293 alias RedWool = PlaceableItem!(_.redWool, Blocks.redWool); 294 295 alias BlackWool = PlaceableItem!(_.blackWool, Blocks.blackWool); 296 297 alias Dandelion = PlaceableItem!(_.dandelion, Blocks.dandelion); 298 299 alias Poppy = PlaceableItem!(_.poppy, Blocks.poppy); 300 301 alias BlueOrchid = PlaceableItem!(_.blueOrchid, Blocks.blueOrchid); 302 303 alias Allium = PlaceableItem!(_.allium, Blocks.allium); 304 305 alias AzureBluet = PlaceableItem!(_.azureBluet, Blocks.azureBluet); 306 307 alias RedTulip = PlaceableItem!(_.redTulip, Blocks.redTulip); 308 309 alias OrangeTulip = PlaceableItem!(_.orangeTulip, Blocks.orangeTulip); 310 311 alias WhiteTulip = PlaceableItem!(_.whiteTulip, Blocks.whiteTulip); 312 313 alias PinkTulip = PlaceableItem!(_.pinkTulip, Blocks.pinkTulip); 314 315 alias OxeyeDaisy = PlaceableItem!(_.oxeyeDaisy, Blocks.oxeyeDaisy); 316 317 alias BrownMushroom = PlaceableItem!(_.brownMushroom, Blocks.brownMushroom, [Blocks.podzol]); 318 319 alias RedMushroom = PlaceableItem!(_.redMushroom, Blocks.redMushroom, [Blocks.podzol]); 320 321 alias GoldBlock = PlaceableItem!(_.goldBlock, Blocks.goldBlock); 322 323 alias IronBlock = PlaceableItem!(_.ironBlock, Blocks.ironBlock); 324 325 alias StoneSlab = SlabItem!(_.stoneSlab, Blocks.stoneSlab, Blocks.upperStoneSlab, Blocks.doubleStoneSlab); 326 327 alias SandstoneSlab = SlabItem!(_.sandstoneSlab, Blocks.sandstoneSlab, Blocks.upperSandstoneSlab, Blocks.doubleSandstoneSlab); 328 329 alias StoneWoodenSlab = SlabItem!(_.stoneWoodenSlab, Blocks.stoneWoodenSlab, Blocks.upperStoneWoodenSlab, Blocks.doubleStoneWoodenSlab); 330 331 alias CobblestoneSlab = SlabItem!(_.cobblestoneSlab, Blocks.cobblestoneSlab, Blocks.upperCobblestoneSlab, Blocks.doubleCobblestoneSlab); 332 333 alias BricksSlab = SlabItem!(_.bricksSlab, Blocks.bricksSlab, Blocks.upperBricksSlab, Blocks.doubleBricksSlab); 334 335 alias StoneBrickSlab = SlabItem!(_.stoneBrickSlab, Blocks.stoneBrickSlab, Blocks.upperStoneBrickSlab, Blocks.doubleStoneBrickSlab); 336 337 alias NetherBrickSlab = SlabItem!(_.netherBrickSlab, Blocks.netherBrickSlab, Blocks.upperNetherBrickSlab, Blocks.doubleNetherBrickSlab); 338 339 alias QuartzSlab = SlabItem!(_.quartzSlab, Blocks.quartzSlab, Blocks.upperQuartzSlab, Blocks.doubleQuartzSlab); 340 341 alias Bricks = PlaceableItem!(_.bricks, Blocks.bricks); 342 343 alias Tnt = PlaceableItem!(_.tnt, Blocks.tnt); 344 345 alias Bookshelf = PlaceableItem!(_.bookshelf, Blocks.bookshelf); 346 347 alias MossStone = PlaceableItem!(_.mossStone, Blocks.mossStone); 348 349 alias Obsidian = PlaceableItem!(_.obsidian, Blocks.obsidian); 350 351 alias Torch = TorchItem!(_.torch, Blocks.torch); 352 353 alias MonsterSpawner = PlaceableItem!(_.monsterSpawner, Blocks.monsterSpawner); 354 355 alias OakWoodStairs = StairsItem!(_.oakWoodStairs, Blocks.oakWoodStairs); 356 357 //TODO place tile in right direction 358 359 alias DiamondOre = PlaceableItem!(_.diamondOre, Blocks.diamondOre); 360 361 alias DiamondBlock = PlaceableItem!(_.diamondBlock, Blocks.diamondBlock); 362 363 alias CraftingTable = PlaceableItem!(_.craftingTable, Blocks.craftingTable); 364 365 //TODO place tile in the right direction 366 367 //TODO place in the right direction 368 369 alias CobblestoneStairs = StairsItem!(_.cobblestoneStairs, Blocks.cobblestoneStairs); 370 371 alias RedstoneOre = PlaceableItem!(_.redstoneOre, Blocks.redstoneOre); 372 373 alias Ice = PlaceableItem!(_.ice, Blocks.ice); 374 375 alias SnowBlock = PlaceableItem!(_.snowBlock, Blocks.snow); 376 377 alias Cactus = PlaceableItem!(_.cactus, Blocks.cactus0, [Blocks.sand, Blocks.redSand] ~ Blocks.cactus); //TODO do not place near other blocks 378 379 alias ClayBlock = PlaceableItem!(_.clayBlock, Blocks.clay); 380 381 alias Jukebox = PlaceableItem!(_.jukebox, Blocks.jukebox); 382 383 alias Netherrack = PlaceableItem!(_.netherrack, Blocks.netherrack); 384 385 alias SoulSand = PlaceableItem!(_.soulSand, Blocks.soulSand); 386 387 alias Glowstone = PlaceableItem!(_.glowstone, Blocks.glowstone); 388 389 alias WhiteStainedGlass = PlaceableItem!(_.whiteStainedGlass, Blocks.whiteStainedGlass); 390 391 alias OrangeStainedGlass = PlaceableItem!(_.orangeStainedGlass, Blocks.orangeStainedGlass); 392 393 alias MagentaStainedGlass = PlaceableItem!(_.magentaStainedGlass, Blocks.magentaStainedGlass); 394 395 alias LightBlueStainedGlass = PlaceableItem!(_.lightBlueStainedGlass, Blocks.lightBlueStainedGlass); 396 397 alias YellowStainedGlass = PlaceableItem!(_.yellowStainedGlass, Blocks.yellowStainedGlass); 398 399 alias LimeStainedGlass = PlaceableItem!(_.limeStainedGlass, Blocks.limeStainedGlass); 400 401 alias PinkStainedGlass = PlaceableItem!(_.pinkStainedGlass, Blocks.pinkStainedGlass); 402 403 alias GrayStainedGlass = PlaceableItem!(_.grayStainedGlass, Blocks.grayStainedGlass); 404 405 alias LightGrayStainedGlass = PlaceableItem!(_.lightGrayStainedGlass, Blocks.lightGrayStainedGlass); 406 407 alias CyanStainedGlass = PlaceableItem!(_.cyanStainedGlass, Blocks.cyanStainedGlass); 408 409 alias PurpleStainedGlass = PlaceableItem!(_.purpleStainedGlass, Blocks.purpleStainedGlass); 410 411 alias BlueStainedGlass = PlaceableItem!(_.blueStainedGlass, Blocks.blueStainedGlass); 412 413 alias BrownStainedGlass = PlaceableItem!(_.brownStainedGlass, Blocks.brownStainedGlass); 414 415 alias GreenStainedGlass = PlaceableItem!(_.greenStainedGlass, Blocks.greenStainedGlass); 416 417 alias RedStainedGlass = PlaceableItem!(_.redStainedGlass, Blocks.redStainedGlass); 418 419 alias BlackStainedGlass = PlaceableItem!(_.blackStainedGlass, Blocks.blackStainedGlass); 420 421 alias StoneMonsterEgg = PlaceableItem!(_.stoneMonsterEgg, Blocks.stoneMonsterEgg); 422 423 alias CobblestoneMonsterEgg = PlaceableItem!(_.cobblestoneMonsterEgg, Blocks.cobblestoneMonsterEgg); 424 425 alias StoneBrickMonsterEgg = PlaceableItem!(_.stoneBrickMonsterEgg, Blocks.stoneBrickMonsterEgg); 426 427 alias MossyStoneBrickMonsterEgg = PlaceableItem!(_.mossyStoneBrickMonsterEgg, Blocks.mossyStoneBrickMonsterEgg); 428 429 alias CrackedStoneBrickMonsterEgg = PlaceableItem!(_.crackedStoneBrickMonsterEgg, Blocks.crackedStoneBrickMonsterEgg); 430 431 alias ChiseledStoneBrickMonsterEgg = PlaceableItem!(_.chiseledStoneBrickMonsterEgg, Blocks.chiseledStoneBrickMonsterEgg); 432 433 alias StoneBricks = PlaceableItem!(_.stoneBricks, Blocks.stoneBricks); 434 435 alias MossyStoneBricks = PlaceableItem!(_.mossyStoneBricks, Blocks.mossyStoneBricks); 436 437 alias CrackedStoneBricks = PlaceableItem!(_.crackedStoneBricks, Blocks.crackedStoneBricks); 438 439 alias ChiseledStoneBricks = PlaceableItem!(_.chiseledStoneBricks, Blocks.chiseledStoneBricks); 440 441 alias BrownMushroomBlock = PlaceableItem!(_.brownMushroomBlock, Blocks.brownMushroomCapsEverywhere); 442 443 alias RedMushroomBlock = PlaceableItem!(_.redMushroomBlock, Blocks.redMushroomCapsEverywhere); 444 445 alias IronBars = PlaceableItem!(_.ironBars, Blocks.ironBars); 446 447 alias GlassPane = PlaceableItem!(_.glassPane, Blocks.glassPane); 448 449 alias MelonBlock = PlaceableItem!(_.melonBlock, Blocks.melon); 450 451 alias Mycelium = PlaceableItem!(_.mycelium, Blocks.mycelium); 452 453 alias LilyPad = PlaceableItem!(_.lilyPad, Blocks.lilyPad, [Blocks.flowingWater0, Blocks.stillWater0, Blocks.ice] ~ Blocks.frostedIce); 454 455 alias NetherBrickBlock = PlaceableItem!(_.netherBrickBlock, Blocks.netherBrick); 456 457 alias NetherBrickFence = PlaceableItem!(_.netherBrickFence, Blocks.netherBrickFence); 458 459 alias EnchantmentTable = PlaceableItem!(_.enchantmentTable, Blocks.enchantmentTable); 460 461 alias EndStone = PlaceableItem!(_.endStone, Blocks.endStone); 462 463 alias DragonEgg = PlaceableItem!(_.dragonEgg, Blocks.dragonEgg); 464 465 alias RedstoneLamp = PlaceableItem!(_.redstoneLamp, Blocks.redstoneLamp); 466 467 alias EmeraldOre = PlaceableItem!(_.emeraldOre, Blocks.emeraldOre); 468 469 alias EmeraldBlock = PlaceableItem!(_.emeraldBlock, Blocks.emeraldBlock); 470 471 alias Beacon = PlaceableItem!(_.beacon, Blocks.beacon); 472 473 alias CobblestoneWall = PlaceableItem!(_.cobblestoneWall, Blocks.cobblestoneWall); 474 475 alias MossyCobblestoneWall = PlaceableItem!(_.mossyCobblestoneWall, Blocks.mossyCobblestoneWall); 476 477 alias RedstoneBlock = PlaceableItem!(_.redstoneBlock, Blocks.redstoneBlock); 478 479 alias NetherQuartzOre = PlaceableItem!(_.netherQuartzOre, Blocks.netherQuartzOre); 480 481 alias QuartzBlock = PlaceableItem!(_.quartzBlock, Blocks.quartzBlock); 482 483 alias ChiseledQuartzBlock = PlaceableItem!(_.chiseledQuartzBlock, Blocks.chiseledQuartzBlock); 484 485 alias WhiteStainedClay = PlaceableItem!(_.whiteStainedClay, Blocks.whiteStainedClay); 486 487 alias OrangeStainedClay = PlaceableItem!(_.orangeStainedClay, Blocks.orangeStainedClay); 488 489 alias MagentaStainedClay = PlaceableItem!(_.magentaStainedClay, Blocks.magentaStainedClay); 490 491 alias LightBlueStainedClay = PlaceableItem!(_.lightBlueStainedClay, Blocks.lightBlueStainedClay); 492 493 alias YellowStainedClay = PlaceableItem!(_.yellowStainedClay, Blocks.yellowStainedClay); 494 495 alias LimeStainedClay = PlaceableItem!(_.limeStainedClay, Blocks.limeStainedClay); 496 497 alias PinkStainedClay = PlaceableItem!(_.pinkStainedClay, Blocks.pinkStainedClay); 498 499 alias GrayStainedClay = PlaceableItem!(_.grayStainedClay, Blocks.grayStainedClay); 500 501 alias LightGrayStainedClay = PlaceableItem!(_.lightGrayStainedClay, Blocks.lightGrayStainedClay); 502 503 alias CyanStainedClay = PlaceableItem!(_.cyanStainedClay, Blocks.cyanStainedClay); 504 505 alias PurpleStainedClay = PlaceableItem!(_.purpleStainedClay, Blocks.purpleStainedClay); 506 507 alias BlueStainedClay = PlaceableItem!(_.blueStainedClay, Blocks.blueStainedClay); 508 509 alias BrownStainedClay = PlaceableItem!(_.brownStainedClay, Blocks.brownStainedClay); 510 511 alias GreenStainedClay = PlaceableItem!(_.greenStainedClay, Blocks.greenStainedClay); 512 513 alias RedStainedClay = PlaceableItem!(_.redStainedClay, Blocks.redStainedClay); 514 515 alias BlackStainedClay = PlaceableItem!(_.blackStainedClay, Blocks.blackStainedClay); 516 517 alias WhiteStainedGlassPane = PlaceableItem!(_.whiteStainedGlassPane, Blocks.whiteStainedGlassPane); 518 519 alias OrangeStainedGlassPane = PlaceableItem!(_.orangeStainedGlassPane, Blocks.orangeStainedGlassPane); 520 521 alias MagentaStainedGlassPane = PlaceableItem!(_.magentaStainedGlassPane, Blocks.magentaStainedGlassPane); 522 523 alias LightBlueStainedGlassPane = PlaceableItem!(_.lightBlueStainedGlassPane, Blocks.lightBlueStainedGlassPane); 524 525 alias YellowStainedGlassPane = PlaceableItem!(_.yellowStainedGlassPane, Blocks.yellowStainedGlassPane); 526 527 alias LimeStainedGlassPane = PlaceableItem!(_.limeStainedGlassPane, Blocks.limeStainedGlassPane); 528 529 alias PinkStainedGlassPane = PlaceableItem!(_.pinkStainedGlassPane, Blocks.pinkStainedGlassPane); 530 531 alias GrayStainedGlassPane = PlaceableItem!(_.grayStainedGlassPane, Blocks.grayStainedGlassPane); 532 533 alias LightGrayStainedGlassPane = PlaceableItem!(_.lightGrayStainedGlassPane, Blocks.lightGrayStainedGlassPane); 534 535 alias CyanStainedGlassPane = PlaceableItem!(_.cyanStainedGlassPane, Blocks.cyanStainedGlassPane); 536 537 alias PurpleStainedGlassPane = PlaceableItem!(_.purpleStainedGlassPane, Blocks.purpleStainedGlassPane); 538 539 alias BlueStainedGlassPane = PlaceableItem!(_.blueStainedGlassPane, Blocks.blueStainedGlassPane); 540 541 alias BrownStainedGlassPane = PlaceableItem!(_.brownStainedGlassPane, Blocks.brownStainedGlassPane); 542 543 alias GreenStainedGlassPane = PlaceableItem!(_.greenStainedGlassPane, Blocks.greenStainedGlassPane); 544 545 alias RedStainedGlassPane = PlaceableItem!(_.redStainedGlassPane, Blocks.redStainedGlassPane); 546 547 alias BlackStainedGlassPane = PlaceableItem!(_.blackStainedGlassPane, Blocks.blackStainedGlassPane); 548 549 alias SlimeBlock = PlaceableItem!(_.slimeBlock, Blocks.slimeBlock); 550 551 alias Barrier = PlaceableItem!(_.barrier, Blocks.barrier); 552 alias InvisibleBedrock = Barrier; 553 554 alias Prismarine = PlaceableItem!(_.prismarine, Blocks.prismarine); 555 556 alias PrismarineBricks = PlaceableItem!(_.prismarineBricks, Blocks.prismarineBricks); 557 558 alias DarkPrismarine = PlaceableItem!(_.darkPrismarine, Blocks.darkPrismarine); 559 560 alias SeaLantern = PlaceableItem!(_.seaLantern, Blocks.seaLantern); 561 562 alias WhiteCarpet = PlaceableItem!(_.whiteCarpet, Blocks.whiteCarpet); 563 564 alias OrangeCarpet = PlaceableItem!(_.orangeCarpet, Blocks.orangeCarpet); 565 566 alias MagentaCarpet = PlaceableItem!(_.magentaCarpet, Blocks.magentaCarpet); 567 568 alias LightBlueCarpet = PlaceableItem!(_.lightBlueCarpet, Blocks.lightBlueCarpet); 569 570 alias YellowCarpet = PlaceableItem!(_.yellowCarpet, Blocks.yellowCarpet); 571 572 alias LimeCarpet = PlaceableItem!(_.limeCarpet, Blocks.limeCarpet); 573 574 alias PinkCarpet = PlaceableItem!(_.pinkCarpet, Blocks.pinkCarpet); 575 576 alias GrayCarpet = PlaceableItem!(_.grayCarpet, Blocks.grayCarpet); 577 578 alias LightGrayCarpet = PlaceableItem!(_.lightGrayCarpet, Blocks.lightGrayCarpet); 579 580 alias CyanCarpet = PlaceableItem!(_.cyanCarpet, Blocks.cyanCarpet); 581 582 alias PurpleCarpet = PlaceableItem!(_.purpleCarpet, Blocks.purpleCarpet); 583 584 alias BlueCarpet = PlaceableItem!(_.blueCarpet, Blocks.blueCarpet); 585 586 alias BrownCarpet = PlaceableItem!(_.brownCarpet, Blocks.brownCarpet); 587 588 alias GreenCarpet = PlaceableItem!(_.greenCarpet, Blocks.greenCarpet); 589 590 alias RedCarpet = PlaceableItem!(_.redCarpet, Blocks.redCarpet); 591 592 alias BlackCarpet = PlaceableItem!(_.blackCarpet, Blocks.blackCarpet); 593 594 alias HardenedClay = PlaceableItem!(_.hardenedClay, Blocks.hardenedClay); 595 596 alias CoalBlock = PlaceableItem!(_.coalBlock, Blocks.coalBlock); 597 598 alias PackedIce = PlaceableItem!(_.packedIce, Blocks.packedIce); 599 600 alias RedSandstone = PlaceableItem!(_.redSandstone, Blocks.redSandstone); 601 602 alias ChiseledRedSandstone = PlaceableItem!(_.chiseledRedSandstone, Blocks.chiseledRedSandstone); 603 604 alias SmoothRedSandstone = PlaceableItem!(_.smoothRedSandstone, Blocks.smoothRedSandstone); 605 606 alias PurpurBlock = PlaceableItem!(_.purpurBlock, Blocks.purpurBlock); 607 608 alias EndStoneBricks = PlaceableItem!(_.endStoneBricks, Blocks.endStoneBricks); 609 610 alias GrassPath = PlaceableItem!(_.grassPath, Blocks.grassPath); 611 612 alias FrostedIce = PlaceableItem!(_.frostedIce, Blocks.frostedIce0); 613 614 alias MagmaBlock = PlaceableItem!(_.magmaBlock, Blocks.magmaBlock); 615 616 alias NetherWartBlock = PlaceableItem!(_.netherWartBlock, Blocks.netherWartBlock); 617 618 alias RedNetherBrick = PlaceableItem!(_.redNetherBrick, Blocks.redNetherBrick); 619 620 alias StructureVoid = PlaceableItem!(_.structureVoid, Blocks.structureVoid); 621 622 alias WhiteShulkerBox = PlaceableItem!(_.whiteShulkerBox, Blocks.whiteShulkerBox); 623 624 alias OrangeShulkerBox = PlaceableItem!(_.orangeShulkerBox, Blocks.orangeShulkerBox); 625 626 alias MagentaShulkerBox = PlaceableItem!(_.magentaShulkerBox, Blocks.magentaShulkerBox); 627 628 alias LightBlueShulkerBox = PlaceableItem!(_.lightBlueShulkerBox, Blocks.lightBlueShulkerBox); 629 630 alias YellowShulkerBox = PlaceableItem!(_.yellowShulkerBox, Blocks.yellowShulkerBox); 631 632 alias LimeShulkerBox = PlaceableItem!(_.limeShulkerBox, Blocks.limeShulkerBox); 633 634 alias PinkShulkerBox = PlaceableItem!(_.pinkShulkerBox, Blocks.pinkShulkerBox); 635 636 alias GrayShulkerBox = PlaceableItem!(_.grayShulkerBox, Blocks.grayShulkerBox); 637 638 alias LightGrayShulkerBox = PlaceableItem!(_.lightGrayShulkerBox, Blocks.lightGrayShulkerBox); 639 640 alias CyanShulkerBox = PlaceableItem!(_.cyanShulkerBox, Blocks.cyanShulkerBox); 641 642 alias PurpleShulkerBox = PlaceableItem!(_.purpleShulkerBox, Blocks.purpleShulkerBox); 643 644 alias BlueShulkerBox = PlaceableItem!(_.blueShulkerBox, Blocks.blueShulkerBox); 645 646 alias BrownShulkerBox = PlaceableItem!(_.brownShulkerBox, Blocks.brownShulkerBox); 647 648 alias GreenShulkerBox = PlaceableItem!(_.greenShulkerBox, Blocks.greenShulkerBox); 649 650 alias RedShulkerBox = PlaceableItem!(_.redShulkerBox, Blocks.redShulkerBox); 651 652 alias BlackShulkerBox = PlaceableItem!(_.blackShulkerBox, Blocks.blackShulkerBox); 653 654 alias Stonecutter = PlaceableItem!(_.stonecutter, Blocks.stonecutter); 655 656 alias GlowingObsidian = PlaceableItem!(_.glowingObsidian, Blocks.glowingObsidian); 657 658 alias NetherReactorCore = PlaceableItem!(_.netherReactorCore, Blocks.netherReactorCore); 659 660 alias UpdateBlock = PlaceableItem!(_.updateBlock, Blocks.updateBlock); 661 662 alias AteupdBlock = PlaceableItem!(_.ateupdBlock, Blocks.ateupdBlock); 663 664 alias StructureSave = PlaceableItem!(_.structureSave, Blocks.structureBlockSave); 665 666 alias StructureLoad = PlaceableItem!(_.structureLoad, Blocks.structureBlockLoad); 667 668 alias StructureCorner = PlaceableItem!(_.structureCorner, Blocks.structureBlockCorner); 669 670 alias StructureData = PlaceableItem!(_.structureData, Blocks.structureBlockData); 671 672 673 alias IronShovel = ShovelItem!(_.ironShovel, Tools.iron, Durability.iron, 4); 674 675 alias IronPickaxe = PickaxeItem!(_.ironPickaxe, Tools.iron, Durability.iron, 5); 676 677 alias IronAxe = AxeItem!(_.ironAxe, Tools.iron, Durability.iron, 6); 678 679 alias Apple = FoodItem!(_.apple, 4, 2.4); 680 681 alias Arrow = SimpleItem!(_.arrow); 682 683 alias Coal = SimpleItem!(_.coal); 684 685 alias Charcoal = SimpleItem!(_.charcoal); 686 687 alias Diamond = SimpleItem!(_.diamond); 688 689 alias IronIngot = SimpleItem!(_.ironIngot); 690 691 alias GoldIngot = SimpleItem!(_.goldIngot); 692 693 alias IronSword = SwordItem!(_.ironSword, Tools.iron, Durability.iron, 7); 694 695 alias WoodenSword = SwordItem!(_.woodenSword, Tools.wood, Durability.wood, 5); 696 697 alias WoodenShovel = ShovelItem!(_.woodenShovel, Tools.wood, Durability.wood, 2); 698 699 alias WoodenPickaxe = PickaxeItem!(_.woodenPickaxe, Tools.wood, Durability.wood, 3); 700 701 alias WoodenAxe = AxeItem!(_.woodenAxe, Tools.wood, Durability.wood, 4); 702 703 alias StoneSword = SwordItem!(_.stoneSword, Tools.stone, Durability.stone, 6); 704 705 alias StoneShovel = ShovelItem!(_.stoneShovel, Tools.stone, Durability.stone, 3); 706 707 alias StonePickaxe = PickaxeItem!(_.stonePickaxe, Tools.stone, Durability.stone, 4); 708 709 alias StoneAxe = AxeItem!(_.stoneAxe, Tools.stone, Durability.stone, 5); 710 711 alias DiamondSword = SwordItem!(_.diamondSword, Tools.diamond, Durability.diamond, 8); 712 713 alias DiamondShovel = ShovelItem!(_.diamondShovel, Tools.diamond, Durability.diamond, 5); 714 715 alias DiamondPickaxe = PickaxeItem!(_.diamondPickaxe, Tools.diamond, Durability.diamond, 6); 716 717 alias DiamondAxe = AxeItem!(_.diamondAxe, Tools.diamond, Durability.diamond, 7); 718 719 alias Stick = SimpleItem!(_.stick); 720 721 alias Bowl = SimpleItem!(_.bowl); 722 723 alias MushroomStew = SoupItem!(_.mushroomStew, 6, 7.2); 724 725 alias GoldenSword = SwordItem!(_.goldenSword, Tools.gold, Durability.gold, 5); 726 727 alias GoldenShovel = ShovelItem!(_.goldenShovel, Tools.gold, Durability.gold, 2); 728 729 alias GoldenPickaxe = PickaxeItem!(_.goldenPickaxe, Tools.gold, Durability.gold, 3); 730 731 alias GoldenAxe = AxeItem!(_.goldenAxe, Tools.gold, Durability.gold, 4); 732 733 alias Feather = SimpleItem!(_.feather); 734 735 alias Gunpowder = SimpleItem!(_.gunpowder); 736 737 alias WoodenHoe = HoeItem!(_.woodenHoe, Tools.wood, Durability.wood); 738 739 alias StoneHoe = HoeItem!(_.stoneHoe, Tools.stone, Durability.stone); 740 741 alias IronHoe = HoeItem!(_.ironHoe, Tools.iron, Durability.iron); 742 743 alias DiamondHoe = HoeItem!(_.diamondHoe, Tools.diamond, Durability.diamond); 744 745 alias GoldenHoe = HoeItem!(_.goldenHoe, Tools.gold, Durability.gold); 746 747 alias Seeds = PlaceableItem!(_.seeds, Blocks.seeds0, Blocks.farmland); 748 749 alias Wheat = SimpleItem!(_.wheat); 750 751 alias Bread = FoodItem!(_.bread, 5, 6); 752 753 alias LeatherCap = ColorableArmorItem!(_.leatherCap, 56, Armor.cap, 1); 754 755 alias LeatherTunic = ColorableArmorItem!(_.leatherTunic, 81, Armor.tunic, 3); 756 757 alias LeatherPants = ColorableArmorItem!(_.leatherPants, 76, Armor.pants, 2); 758 759 alias LeatherBoots = ColorableArmorItem!(_.leatherBoots, 66, Armor.boots, 1); 760 761 alias ChainHelmet = ArmorItem!(_.chainHelmet, 166, Armor.helmet, 2); 762 763 alias ChainChestplate = ArmorItem!(_.chainChestplate, 241, Armor.chestplate, 5); 764 765 alias ChainLeggings = ArmorItem!(_.chainLeggings, 226, Armor.leggings, 4); 766 767 alias ChainBoots = ArmorItem!(_.chainBoots, 196, Armor.boots, 1); 768 769 alias IronHelmet = ArmorItem!(_.ironHelmet, 166, Armor.helmet, 2); 770 771 alias IronChestplate = ArmorItem!(_.ironChestplate, 241, Armor.chestplate, 6); 772 773 alias IronLeggings = ArmorItem!(_.ironLeggings, 226, Armor.leggings, 5); 774 775 alias IronBoots = ArmorItem!(_.ironBoots, 196, Armor.boots, 2); 776 777 alias DiamondHelmet = ArmorItem!(_.diamondHelmet, 364, Armor.helmet, 3); 778 779 alias DiamondChestplate = ArmorItem!(_.diamondChestplate, 529, Armor.chestplate, 8); 780 781 alias DiamondLeggings = ArmorItem!(_.diamondLeggings, 496, Armor.leggings, 6); 782 783 alias DiamondBoots = ArmorItem!(_.diamondBoots, 430, Armor.boots, 3); 784 785 alias GoldenHelmet = ArmorItem!(_.goldenHelmet, 78, Armor.helmet, 2); 786 787 alias GoldenChestplate = ArmorItem!(_.goldenChestplate, 113, Armor.chestplate, 5); 788 789 alias GoldenLeggings = ArmorItem!(_.goldenLeggings, 106, Armor.leggings, 3); 790 791 alias GoldenBoots = ArmorItem!(_.goldenBoots, 92, Armor.boots, 1); 792 793 alias Flint = SimpleItem!(_.flint); 794 795 alias RawPorkchop = FoodItem!(_.rawPorkchop, 3, 1.8); 796 797 alias CookedPorkchop = FoodItem!(_.cookedPorkchop, 8, 12.8); 798 799 alias GoldenApple = FoodItem!(_.goldenApple, 4, 9.6, [effectInfo(Effects.regeneration, 5, "II"), effectInfo(Effects.absorption, 120, "I")]); 800 801 alias EnchantedGoldenApple = FoodItem!(_.enchantedGoldenApple, 4, 9.6, [effectInfo(Effects.regeneration, 20, "II"), effectInfo(Effects.absorption, 120, "IV"), effectInfo(Effects.resistance, 300, "I"), effectInfo(Effects.fireResistance, 300, "I")]); 802 803 alias Leather = SimpleItem!(_.leather); 804 805 alias MilkBucket = ClearEffectsItem!(_.milkBucket, bucket); 806 807 alias Brick = SimpleItem!(_.brick); 808 809 alias Clay = SimpleItem!(_.clay); 810 811 alias Paper = SimpleItem!(_.paper); 812 813 alias Book = SimpleItem!(_.book); 814 815 alias Slimeball = SimpleItem!(_.slimeball); 816 817 alias Compass = SimpleItem!(_.compass); 818 819 alias Clock = SimpleItem!(_.clock); 820 821 alias GlowstoneDust = SimpleItem!(_.glowstoneDust); 822 823 alias RawFish = FoodItem!(_.rawFish, 2, .4); 824 825 alias RawSalmon = FoodItem!(_.rawSalmon, 2, .4); 826 827 alias Clowfish = FoodItem!(_.clownfish, 1, .2); 828 829 alias Pufferfish = FoodItem!(_.pufferfish, 1, .2, [effectInfo(Effects.hunger, 15, "III"), effectInfo(Effects.poison, 60, "IV"), effectInfo(Effects.nausea, 15, "II")]); 830 831 alias CookedFish = FoodItem!(_.cookedFish, 5, 6); 832 833 alias CookedSalmon = FoodItem!(_.cookedSalmon, 6, 9.6); 834 835 alias InkSac = SimpleItem!(_.inkSac); 836 837 alias RoseRed = SimpleItem!(_.roseRed); 838 839 alias CactusGreen = SimpleItem!(_.cactusGreen); 840 841 alias CocoaBeans = BeansItem!(_.cocoaBeans, [Blocks.cocoaNorth0, Blocks.cocoaEast0, Blocks.cocoaSouth0, Blocks.cocoaWest0]); 842 843 alias LapisLazuli = SimpleItem!(_.lapisLazuli); 844 845 alias PurpleDye = SimpleItem!(_.purpleDye); 846 847 alias CyanDye = SimpleItem!(_.cyanDye); 848 849 alias LightGrayDye = SimpleItem!(_.lightGrayDye); 850 851 alias GrayDye = SimpleItem!(_.grayDye); 852 853 alias PinkDye = SimpleItem!(_.pinkDye); 854 855 alias LimeDye = SimpleItem!(_.limeDye); 856 857 alias DandelionYellow = SimpleItem!(_.dandelionYellow); 858 859 alias LightBlueDye = SimpleItem!(_.lightBlueDye); 860 861 alias MagentaDye = SimpleItem!(_.magentaDye); 862 863 alias OrangeDye = SimpleItem!(_.orangeDye); 864 865 alias Bone = SimpleItem!(_.bone); 866 867 alias Sugar = SimpleItem!(_.sugar); 868 869 alias Cake = PlaceableItem!(_.cake, Blocks.cake0); 870 871 //TODO beds 872 873 alias Cookie = FoodItem!(_.cookie, 2, .4); 874 875 alias Map = MapItem!(_.map); 876 877 alias Melon = FoodItem!(_.melon, 2, 1.2); 878 879 alias PumpkinSeeds = PlaceableItem!(_.pumpkinSeeds, Blocks.pumpkinStem0, Blocks.farmland); 880 881 alias MelonSeeds = PlaceableItem!(_.melonSeeds, Blocks.melonStem0, Blocks.farmland); 882 883 alias RawBeef = FoodItem!(_.rawBeef, 3, 1.8); 884 885 alias Steak = FoodItem!(_.steak, 8, 12.8); 886 887 alias RawChicken = FoodItem!(_.rawChicken, 2, 1.2); 888 889 alias CookedChicked = FoodItem!(_.cookedChicken, 6, 7.2); 890 891 alias RottenFlesh = FoodItem!(_.rottenFlesh, 4, .8, [effectInfo(Effects.hunger, 30, "I", .8)]); 892 893 alias BlazeRod = SimpleItem!(_.blazeRod); 894 895 alias GhastTear = SimpleItem!(_.ghastTear); 896 897 alias GoldNugget = SimpleItem!(_.goldNugget); 898 899 alias NetherWart = PlaceableItem!(_.netherWart, Blocks.netherWart0, [Blocks.soulSand]); 900 901 alias SpiderEye = SimpleItem!(_.spiderEye); 902 903 alias FermentedSpiderEye = SimpleItem!(_.fermentedSpiderEye); 904 905 alias BlazePowder = SimpleItem!(_.blazePowder); 906 907 alias MagmaCream = SimpleItem!(_.magmaCream); 908 909 alias BrewingStand = PlaceableItem!(_.brewingStand, Blocks.brewingStandEmpty); 910 911 alias Cauldron = PlaceableItem!(_.cauldron, Blocks.cauldronEmpty); 912 913 914 alias GlisteringMelon = SimpleItem!(_.glisteringMelon); 915 916 //TODO spawn eggs 917 918 alias Emerald = SimpleItem!(_.emerald); 919 920 alias FlowerPot = PlaceableOnSolidItem!(_.flowerPot, Blocks.flowerPot); 921 922 alias Carrot = CropFoodItem!(_.carrot, 3, 4.8, Blocks.carrot0); 923 924 alias Potato = CropFoodItem!(_.potato, 1, .6, Blocks.potato0); 925 926 alias BakedPotato = FoodItem!(_.bakedPotato, 5, 7.2); 927 928 alias PoisonousPotato = FoodItem!(_.poisonousPotato, 2, 1.2, [effectInfo(Effects.poison, 4, "I", .6)]); 929 930 alias GoldenCarrot = FoodItem!(_.goldenCarrot, 6, 14.4); 931 932 alias NetherStar = SimpleItem!(_.netherStar); 933 934 alias PumpkinPie = FoodItem!(_.pumpkinPie, 8, 4.8); 935 936 alias NetherBrick = SimpleItem!(_.netherBrick); 937 938 alias NetherQuartz = SimpleItem!(_.netherQuartz); 939 940 alias PrismarineShard = SimpleItem!(_.prismarineShard); 941 942 alias PrismarineCrystals = SimpleItem!(_.prismarineCrystals); 943 944 alias RawRabbit = FoodItem!(_.rawRabbit, 3, 1.8); 945 946 alias CookedRabbit = FoodItem!(_.cookedRabbit, 5, 6); 947 948 alias RabbitStew = SoupItem!(_.rabbitStew, 10, 12); 949 950 alias RabbitFoot = SimpleItem!(_.rabbitFoot); 951 952 alias RabbitHide = SimpleItem!(_.rabbitHide); 953 954 alias RawMutton = FoodItem!(_.rawMutton, 2, 1.2); 955 956 alias CookedMutton = FoodItem!(_.cookedMutton, 6, 9.6); 957 958 alias ChorusFruit = TeleportationItem!(_.chorusFruit, 4, 2.4); 959 960 alias PoppedChorusFruit = SimpleItem!(_.poppedChorusFruit); 961 962 alias Beetroot = FoodItem!(_.beetroot, 1, 1.2); 963 964 alias BeetrootSeeds = PlaceableItem!(_.beetrootSeeds, Blocks.beetroot0, Blocks.farmland); 965 966 alias BeetrootSoup = SoupItem!(_.beetrootSoup, 6, 7.2); 967 968 alias ShulkerShell = SimpleItem!(_.shulkerShell); 969 970 alias IronNugget = SimpleItem!(_.ironNugget); 971 972 //TODO discs 973 974 975 enum item_t invisibleBedrock = barrier; 976 977 978 enum item_t[] woodPlanks = [oakWoodPlanks, spruceWoodPlanks, birchWoodPlanks, jungleWoodPlanks, acaciaWoodPlanks, darkOakWoodPlanks]; 979 980 enum item_t[] sapling = [oakSapling, spruceSapling, birchSapling, acaciaSapling, darkOakSapling]; 981 982 enum item_t[] wool = [whiteWool, orangeWool, magentaWool, lightBlueWool, yellowWool, limeWool, pinkWool, grayWool, lightGrayWool, cyanWool, purpleWool, blueWool, brownWool, greenWool, redWool, blackWool]; 983 984 enum item_t[] stainedGlass = [whiteStainedGlass, orangeStainedGlass, magentaStainedGlass, lightBlueStainedGlass, yellowStainedGlass, limeStainedGlass, pinkStainedGlass, grayStainedGlass, lightGrayStainedGlass, cyanStainedGlass, purpleStainedGlass, blueStainedGlass, brownStainedGlass, greenStainedGlass, redStainedGlass, blackStainedGlass]; 985 986 enum item_t[] stainedClay = [whiteStainedClay, orangeStainedClay, magentaStainedClay, lightBlueStainedClay, yellowStainedClay, limeStainedClay, pinkStainedClay, grayStainedClay, lightGrayStainedClay, cyanStainedClay, purpleStainedClay, blueStainedClay, brownStainedClay, greenStainedClay, redStainedClay, blackStainedClay]; 987 988 enum item_t[] stainedGlassPane = [whiteStainedGlassPane, orangeStainedGlassPane, magentaStainedGlassPane, lightBlueStainedGlassPane, yellowStainedGlassPane, limeStainedGlassPane, pinkStainedGlassPane, grayStainedGlassPane, lightGrayStainedGlassPane, cyanStainedGlassPane, purpleStainedGlassPane, blueStainedGlassPane, brownStainedGlassPane, greenStainedGlassPane, redStainedGlassPane, blackStainedGlassPane]; 989 990 enum item_t[] carpet = [whiteCarpet, orangeCarpet, magentaCarpet, lightBlueCarpet, yellowCarpet, limeCarpet, pinkCarpet, grayCarpet, lightGrayCarpet, cyanCarpet, purpleCarpet, blueCarpet, brownCarpet, greenCarpet, redCarpet, blackCarpet]; 991 992 enum item_t[] shulkerBox = [whiteShulkerBox, orangeShulkerBox, magentaShulkerBox, lightBlueShulkerBox, yellowShulkerBox, limeShulkerBox, pinkShulkerBox, grayShulkerBox, lightGrayShulkerBox, cyanShulkerBox, purpleShulkerBox, blueShulkerBox, brownShulkerBox, greenShulkerBox, redShulkerBox, blackShulkerBox]; 993 994 }