<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.horizonsend.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gutin</id>
	<title>Horizon&#039;s End Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.horizonsend.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gutin"/>
	<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php/Special:Contributions/Gutin"/>
	<updated>2026-10-29T11:36:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13227</id>
		<title>Module:Inventory slot/Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13227"/>
		<updated>2026-09-27T15:54:06Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local aliases = {&lt;br /&gt;
	-- Common fuel types for furnace --&lt;br /&gt;
	[&#039;Any fuel&#039;] = { &#039;Coal&#039;, &#039;Charcoal&#039;, { title = &#039;Log&#039;, name = &#039;Oak Log&#039; }, { title = &#039;Overworld Planks&#039;, name = &#039;Oak Planks&#039; }, &#039;Lava Bucket&#039;, &#039;Block of Coal&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- All armor --&lt;br /&gt;
	[&#039;Any leather armor&#039;] = { &#039;Leather Cap&#039;, &#039;Leather Tunic&#039;, &#039;Leather Pants&#039;, &#039;Leather Boots&#039; },&lt;br /&gt;
	[&#039;Any golden armor&#039;] = { &#039;Golden Helmet&#039;, &#039;Golden Chestplate&#039;, &#039;Golden Leggings&#039;, &#039;Golden Boots&#039; },&lt;br /&gt;
	[&#039;Any chainmail armor&#039;] = { &#039;Chainmail Helmet&#039;, &#039;Chainmail Chestplate&#039;, &#039;Chainmail Leggings&#039;, &#039;Chainmail Boots&#039; },&lt;br /&gt;
	[&#039;Any iron armor&#039;] = { &#039;Iron Helmet&#039;, &#039;Iron Chestplate&#039;, &#039;Iron Leggings&#039;, &#039;Iron Boots&#039; },&lt;br /&gt;
	[&#039;Any diamond armor&#039;] = { &#039;Diamond Helmet&#039;, &#039;Diamond Chestplate&#039;, &#039;Diamond Leggings&#039;, &#039;Diamond Boots&#039; },&lt;br /&gt;
	[&#039;Any netherite armor&#039;] = { &#039;Netherite Helmet&#039;, &#039;Netherite Chestplate&#039;, &#039;Netherite Leggings&#039;, &#039;Netherite Boots&#039; },&lt;br /&gt;
&lt;br /&gt;
    -- Stones --&lt;br /&gt;
	[&#039;Any Cobblestone or Blackstone&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039; },&lt;br /&gt;
	[&#039;Any stone-tier block&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039;, &#039;Cobbled Deepslate&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Miscellaeous collections --&lt;br /&gt;
	[&#039;Any leaves&#039;] = { &#039;Oak Leaves&#039;, &#039;Spruce Leaves&#039;, &#039;Birch Leaves&#039;, &#039;Acacia Leaves&#039;, &#039;Jungle Leaves&#039;, &#039;Dark Oak Leaves&#039;, &#039;Mangrove Leaves&#039;, &#039;Cherry Leaves&#039;, &#039;Pale Oak Leaves&#039;, &#039;Azalea Leaves&#039;, &#039;Flowering Azalea Leaves&#039; };&lt;br /&gt;
	[&#039;Any egg&#039;] = { &#039;Egg&#039;, &#039;Blue Egg&#039;, &#039;Brown Egg&#039;};&lt;br /&gt;
	[&#039;Any stairs&#039;] = { &#039;Tuff Stairs&#039;, &#039;Polished Tuff Stairs&#039;, &#039;Tuff Brick Stairs&#039;, &#039;Cut Copper Stairs&#039;, &#039;Exposed Cut Copper Stairs&#039;, &#039;Weathered Cut Copper Stairs&#039;, &#039;Oxidized Cut Copper Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Resin Brick Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Nether Brick Stairs&#039;, &#039;Sandstone Stairs&#039;, &#039;Oak Stairs&#039;, &#039;Spruce Stairs&#039;, &#039;Birch Stairs&#039;, &#039;Jungle Stairs&#039;, &#039;Acacia Stairs&#039;, &#039;Cherry Stairs&#039;, &#039;Dark Oak Stairs&#039;, &#039;Pale Oak Stairs&#039;, &#039;Mangrove Stairs&#039;, &#039;Bamboo Stairs&#039;, &#039;Bamboo Mosaic Stairs&#039;, &#039;Crimson Stairs&#039;, &#039;Warped Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Stone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Smooth Quartz Stairs&#039;, &#039;Granite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039; },&lt;br /&gt;
	[&#039;Any Door&#039;] = {&#039;Oak Door&#039;, &#039;Spruce Door&#039;, &#039;Birch Door&#039;, &#039;Jungle Door&#039;, &#039;Acacia Door&#039;, &#039;Dark Oak Door&#039;, &#039;Mangrove Door&#039;, &#039;Cherry Door&#039;, &#039;Bamboo Door&#039;, &#039;Crimson Door&#039;, &#039;Warped Door&#039;, &#039;Pale Oak Door&#039;, &#039;Iron Door&#039;, &#039;Copper Door&#039;, &#039;Exposed Copper Door&#039;, &#039;Weathered Copper Door&#039;,&#039;Oxidized Copper Door&#039; },&lt;br /&gt;
    [&#039;Any inventory&#039;] = { &#039;Chest&#039;, &#039;Trapped Chest&#039;, &#039;Barrel&#039;, &#039;Furnace&#039;, &#039;Smoker&#039;, &#039;Dispenser&#039;, &#039;Dropper&#039;, &#039;Decorated Pot&#039; },&lt;br /&gt;
  &lt;br /&gt;
    [&#039;Any Chiseled Block&#039;] = {&#039;Chiseled Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Chiseled Deepslate&#039;, &#039;Chiseled Tuff&#039;, &#039;Chiseled Tuff Bricks&#039;, &#039;Chiseled Stone Bricks&#039;, &#039;Chiseled Nether Bricks&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Chiseled Copper&#039;, &#039;Exposed Chiseled Copper&#039;, &#039;Weathered Chiseled Copper&#039;, &#039;Oxidized Chiseled Copper&#039; },&lt;br /&gt;
    [&#039;Any Button&#039;]= {&#039;Oak Button&#039;, &#039;Spruce Button&#039;, &#039;Birch Button&#039;, &#039;Jungle Button&#039;, &#039;Acacia Button&#039;, &#039;Dark Oak Button&#039;, &#039;Mangrove Button&#039;, &#039;Cherry Button&#039;, &#039;Pale Oak Button&#039;, &#039;Bamboo Button&#039;, &#039;Crimson Button&#039;, &#039;Warped Button&#039;},&lt;br /&gt;
--Glass--&lt;br /&gt;
[&#039;Any Glass Pane&#039;] = {&lt;br /&gt;
	&#039;Glass Pane&#039;,&lt;br /&gt;
	&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
},&lt;br /&gt;
[&#039;Any Glass&#039;] = {&lt;br /&gt;
	&#039;Glass&#039;,&lt;br /&gt;
	&#039;White Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Black Stained Glass&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass&#039;,&lt;br /&gt;
	&#039;Red Stained Glass&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass&#039;,&lt;br /&gt;
	&#039;Green Stained Glass&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass&#039;,&lt;br /&gt;
},&lt;br /&gt;
    --Gif fixes, Minecraft.wiki does this with a database but I&#039;m not setting that up--&lt;br /&gt;
    [&#039;Prismarine Wall&#039;]={&#039;Prismarine Wall.gif&#039;},&lt;br /&gt;
    [&#039;Prismarine Stairs&#039;]={&#039;Prismarine Stairs.gif&#039;},&lt;br /&gt;
    [&#039;Sea Lantern&#039;]={ &#039;Sea Lantern.gif&#039; },&lt;br /&gt;
    [&#039;Stonecutter&#039;]={ &#039;Stonecutter.gif&#039; },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    --USE THIS FOR HE RELATED BLOCK TYPES--&lt;br /&gt;
    -- Misc HE--&lt;br /&gt;
    [&#039;Any Thruster Block&#039;]={&#039;Sea Lantern.gif&#039;, &#039;Glowstone&#039;, &#039;Shroomlight&#039;, &#039;Ochre Froglight&#039;, &#039;Verdant Froglight&#039;, &#039;Pearlescent Froglight&#039;, &#039;Redstone Lamp&#039;},&lt;br /&gt;
    [&#039;Any Normal Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Diamond Block&#039;},&lt;br /&gt;
    [&#039;Any Special Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Diamond Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
    [&#039;Any Secondary Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- Display names --&lt;br /&gt;
	[&#039;Broken Elytra&#039;] = { title = &#039;&amp;amp;dElytra&#039;, name = &#039;Broken Elytra&#039; },&lt;br /&gt;
	[&#039;Button&#039;] = { title = &#039;Button&#039;, name = &#039;Stone Button&#039;},&lt;br /&gt;
	[&#039;Wooden Button&#039;] = { title = &#039;Button&#039;, name = &#039;Oak Button&#039;},&lt;br /&gt;
	[&#039;Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Ominous Banner&#039;] = { title = &#039;&amp;amp;6&amp;amp;oOminous Banner&#039;, name = &#039;Ominous Banner&#039;, text = &lt;br /&gt;
		&#039;&amp;amp;7Cyan Lozenge/&amp;amp;7Light Gray Base/&amp;amp;7Gray Pale/&amp;amp;7Light Gray Bordure/&amp;amp;7Black Fess/&amp;amp;7Light Gray Per Fess&#039;},&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Basic&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Basic&#039; },&lt;br /&gt;
    [&#039;Power Hoe Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Basic&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Enhanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Advanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Advanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Advanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Battery A&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;cA &amp;amp;9Battery&#039;, name = &#039;Battery A&#039; },&lt;br /&gt;
    [&#039;Battery M&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;aM &amp;amp;9Battery&#039;, name = &#039;Battery M&#039; },&lt;br /&gt;
    [&#039;Battery G&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;6G &amp;amp;9Battery&#039;, name = &#039;Battery G&#039; },&lt;br /&gt;
&lt;br /&gt;
	[&#039;Half Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Half Filled Bundle&#039; },&lt;br /&gt;
	[&#039;Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Filled Bundle&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Empty display name --&lt;br /&gt;
	[&#039;debug_fourj_item&#039;] = { title = &#039;\226\128\140&#039;, name = &#039;debug_fourj_item&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Equipment with custom rarity --&lt;br /&gt;
	[&#039;Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Damaged Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Trident BE&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;9 +8 Attack Damage&#039;},&lt;br /&gt;
	[&#039;Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Damaged Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Mace BE&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;9 +5 Attack Damage&#039;},&lt;br /&gt;
	[&amp;quot;Damaged Elytra&amp;quot;] = { title = &amp;quot;&amp;amp;dElytra&amp;quot;, name = &amp;quot;Damaged Elytra&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Boots&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Boots&amp;quot;, name = &amp;quot;Damaged Chainmail Boots&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Chestplate&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Chestplate&amp;quot;, name = &amp;quot;Damaged Chainmail Chestplate&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Helmet&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Helmet&amp;quot;, name = &amp;quot;Damaged Chainmail Helmet&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Leggings&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Leggings&amp;quot;, name = &amp;quot;Damaged Chainmail Leggings&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
	-- Ominous Bottles --&lt;br /&gt;
    [&#039;Ominous Bottle&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle II&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen II (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle III&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen III (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle IV&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen IV (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle V&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen V (01:40:00)&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Bedrock and Education Edition display names --&lt;br /&gt;
	[&#039;Buried Treasure Map BE&#039;] = { title = &#039;Treasure Map&#039;, name = &#039;Buried Treasure Map BE&#039; },&lt;br /&gt;
	[&#039;Elytra Wings&#039;] = { title = &#039;Elytra Wings&#039;, name = &#039;Elytra&#039; },&lt;br /&gt;
	[&#039;Glowing Obsidian&#039;] = { title = &#039;tile.glowingobsidian.name&#039;, name = &#039;Glowing Obsidian&#039; },&lt;br /&gt;
	[&#039;Map (no markers)&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;cNo&#039; },&lt;br /&gt;
	[&#039;Locator Map&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;aYes&#039; },&lt;br /&gt;
	[&#039;Shrub BE&#039;] = { title = &#039;Fern&#039;, name = &#039;Short Grass&#039; },&lt;br /&gt;
	[&#039;Unknown&#039;] = { title = &#039;Unknown&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update&#039;] = { title = &#039;tile.info_update.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update2&#039;] = { title = &#039;tile.info_update2.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;reserved6&#039;] = { title = &#039;tile.reserved6.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;Smooth Purpur&#039;] = { title = &#039;tile.deprecated_purpur_block_2.name&#039;, name = &#039;Smooth Purpur&#039; },&lt;br /&gt;
	[&#039;Beacon BE&#039;] = { title = &#039;&amp;amp;bBeacon&#039;, name = &#039;Beacon BE&#039; },&lt;br /&gt;
	[&#039;Conduit BE&#039;] = { title = &#039;&amp;amp;eConduit&#039;, name = &#039;Conduit BE&#039; },&lt;br /&gt;
	[&#039;Dragon Egg BE&#039;] = { title = &#039;&amp;amp;dDragon Egg&#039;, name = &#039;Dragon Egg BE&#039; },&lt;br /&gt;
	[&#039;Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;eSkeleton Skull&#039;, name = &#039;Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Wither Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;bWither Skeleton Skull&#039;, name = &#039;Wither Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Zombie Head BE&#039;] = { title = &#039;&amp;amp;eZombie Head&#039;, name = &#039;Zombie Head BE&#039; },&lt;br /&gt;
	[&#039;Player Head BE&#039;] = { title = &#039;&amp;amp;ePlayer Head&#039;, name = &#039;Player Head BE&#039; },&lt;br /&gt;
	[&#039;Creeper Head BE&#039;] = { title = &#039;&amp;amp;eCreeper Head&#039;, name = &#039;Creeper Head BE&#039; },&lt;br /&gt;
	[&#039;Dragon Head BE&#039;] = { title = &#039;&amp;amp;dDragon Head&#039;, name = &#039;Dragon Head BE&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Chemistry --&lt;br /&gt;
	[&#039;Lead (element)&#039;] = { title = &#039;Lead&#039;, name = &#039;Lead (element)&#039; },&lt;br /&gt;
	[&#039;Water (compound)&#039;] = { title = &#039;Water&#039;, name = &#039;Water (compound)&#039; },&lt;br /&gt;
	[&#039;Chloride&#039;] = { &#039;Calcium Chloride&#039;, &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Sparkler&#039;] = { &#039;Orange Sparkler&#039;, &#039;Blue Sparkler&#039;, &#039;Red Sparkler&#039;, &#039;Purple Sparkler&#039;, &#039;Green Sparkler&#039; },&lt;br /&gt;
	[&#039;Matching Chloride&#039;] = { &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Matching Colored Torch&#039;] = { &#039;Blue Torch&#039;, &#039;Red Torch&#039;, &#039;Purple Torch&#039;, &#039;Green Torch&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- April Fools&#039; Day jokes --&lt;br /&gt;
	[&#039;New Thing Banner Pattern&#039;] = { title = &#039;&amp;amp;dBanner Pattern&#039;, name = &#039;New Thing Banner Pattern&#039;, text = &#039;&amp;amp;7New Thing&#039;},&lt;br /&gt;
	-- Note: These can&#039;t use this module&#039;s default color handling because potato peels have no white variant but do include the uncolored variant in recipes&lt;br /&gt;
	[&#039;Any Potato Peels&#039;] = { &#039;Potato Peels&#039;, &#039;Light Gray Potato Peels&#039;, &#039;Gray Potato Peels&#039;, &#039;Black Potato Peels&#039;, &#039;Brown Potato Peels&#039;, &#039;Red Potato Peels&#039;, &#039;Orange Potato Peels&#039;, &#039;Yellow Potato Peels&#039;, &#039;Lime Potato Peels&#039;, &#039;Green Potato Peels&#039;, &#039;Cyan Potato Peels&#039;, &#039;Light Blue Potato Peels&#039;, &#039;Blue Potato Peels&#039;, &#039;Purple Potato Peels&#039;, &#039;Magenta Potato Peels&#039;, &#039;Pink Potato Peels&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- Old textures --&lt;br /&gt;
	[&#039;Apple Revision 1&#039;] = { title = &#039;Apple&#039;, name = &#039;Apple Revision 1&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Stairs&#039;] = aliases[&#039;Any stairs&#039;]&lt;br /&gt;
aliases[&#039;Any Inventory&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Container&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Tier Block&#039;] = aliases[&#039;Any Normal Tier Block&#039;]&lt;br /&gt;
aliases[&#039;Any Harvester Tier Block&#039;] = aliases[&#039;Any Secondary Tier Block&#039;]&lt;br /&gt;
&lt;br /&gt;
-- Tooltip colors --&lt;br /&gt;
local yellowTooltips = {&lt;br /&gt;
    &#039;Bottle o\&#039; Enchanting&#039;,&lt;br /&gt;
    &#039;Chainmail Boots&#039;,&lt;br /&gt;
    &#039;Chainmail Chestplate&#039;,&lt;br /&gt;
    &#039;Chainmail Helmet&#039;,&lt;br /&gt;
    &#039;Chainmail Leggings&#039;,&lt;br /&gt;
    &#039;Conduit&#039;,&lt;br /&gt;
    &#039;Creeper Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Creeper Head&#039;,&lt;br /&gt;
    &#039;Disc Fragment 5&#039;,&lt;br /&gt;
    &#039;Dragon\&#039;s Breath&#039;,&lt;br /&gt;
    &#039;Echo Shard&#039;,&lt;br /&gt;
    &#039;Enchanted Book&#039;,&lt;br /&gt;
    &#039;Goat Horn&#039;,&lt;br /&gt;
    &#039;Heart of the Sea&#039;,&lt;br /&gt;
    &#039;Nautilus Shell&#039;,&lt;br /&gt;
    &#039;Ominous Banner&#039;,&lt;br /&gt;
    &#039;Piglin Head&#039;,&lt;br /&gt;
    &#039;Player Head&#039;,&lt;br /&gt;
    &#039;Recovery Compass&#039;,&lt;br /&gt;
    &#039;Skeleton Skull&#039;,&lt;br /&gt;
    &#039;Sniffer Egg&#039;,&lt;br /&gt;
    &#039;Snout Banner Pattern&#039;,&lt;br /&gt;
    &#039;Totem of Undying&#039;,&lt;br /&gt;
    &#039;Zombie Head&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( yellowTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local aquaTooltips = {&lt;br /&gt;
	&#039;Beacon&#039;,&lt;br /&gt;
	&#039;Enchanted Golden Apple&#039;,&lt;br /&gt;
    &#039;Flow Banner Pattern&#039;,&lt;br /&gt;
	&#039;Guster Banner Pattern&#039;,&lt;br /&gt;
	&#039;Nether Star&#039;,&lt;br /&gt;
    &#039;Skull Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Thing Banner Pattern&#039;,&lt;br /&gt;
    &#039;Wither Skeleton Skull&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( aquaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;b&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local magentaTooltips = {&lt;br /&gt;
	&#039;Barrier&#039;,&lt;br /&gt;
	&#039;Command Block&#039;,&lt;br /&gt;
	&#039;Chain Command Block&#039;,&lt;br /&gt;
	&#039;Debug Stick&#039;,&lt;br /&gt;
	&#039;Dragon Egg&#039;,&lt;br /&gt;
	&#039;Dragon Head&#039;,&lt;br /&gt;
	&#039;Elytra&#039;,&lt;br /&gt;
	&#039;Heavy Core&#039;,&lt;br /&gt;
	&#039;Jigsaw Block&#039;,&lt;br /&gt;
	&#039;Knowledge Book&#039;,&lt;br /&gt;
	&#039;Light&#039;,&lt;br /&gt;
	&#039;Repeating Command Block&#039;,&lt;br /&gt;
	&#039;Structure Block&#039;,&lt;br /&gt;
	&#039;Structure Void&#039;,&lt;br /&gt;
	&#039;Test Block&#039;,&lt;br /&gt;
	&#039;Test Instance Block&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( magentaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;d&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons --&lt;br /&gt;
local tools = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5, 1.6 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6, 1.6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7, 1.6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8, 1.6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3, 1.2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4, 1.2 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5, 1.2 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6, 1.2 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 7, 0.8 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 9, 0.8 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 9, 0.9 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 7, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 9, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 10, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 3.5, 1 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 4.5, 1 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 5.5, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 6.5, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 1, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 1, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 1, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 1, 4 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local materialGroups = {}&lt;br /&gt;
local toolGroups = {}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( tools ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	local damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
	local text = &#039;/&amp;amp;7When in Main Hand:/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[3] .. &#039; Attack Damage/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[4] .. &#039; Attack Speed&#039;&lt;br /&gt;
	aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
	aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
	&lt;br /&gt;
	local materialGroup = toolProps[1]:lower()&lt;br /&gt;
	local toolGroup = toolProps[2]:lower()&lt;br /&gt;
	&lt;br /&gt;
	if toolProps[2] ~= &#039;Sword&#039; then&lt;br /&gt;
		if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end&lt;br /&gt;
		table.insert( materialGroups[materialGroup], aliases[aliasName] )&lt;br /&gt;
	end&lt;br /&gt;
	if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end&lt;br /&gt;
	table.insert( toolGroups[toolGroup], aliases[aliasName] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for materialGroup, items in pairs( materialGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. materialGroup .. &#039; tools&#039;] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for toolGroup, items in pairs( toolGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. toolGroup] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons in Bedrock Edition --&lt;br /&gt;
local toolsBE = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 4 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 5 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 7 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 5 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 6 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( toolsBE ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	aliases[aliasName .. &#039; BE&#039;] = { title = aliasName, name = aliasName, text = &#039;/&amp;amp;9+&#039; .. toolProps[3] .. &#039; Attack Damage&#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Armor tooltips --&lt;br /&gt;
local head = {&lt;br /&gt;
	{&#039;Leather Cap&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Iron Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond Helmet&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Helmet&#039;, 3, 3, 1 },&lt;br /&gt;
	{&#039;Turtle Shell&#039;, 2 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local body = {&lt;br /&gt;
	{&#039;Leather Tunic&#039;, 3 },&lt;br /&gt;
	{&#039;Chainmail Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Iron Chestplate&#039;, 6 },&lt;br /&gt;
	{&#039;Golden Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Diamond Chestplate&#039;, 8, 2 },&lt;br /&gt;
	{&#039;Netherite Chestplate&#039;, 8, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legs = {&lt;br /&gt;
	{&#039;Leather Pants&#039;, 2 },&lt;br /&gt;
	{&#039;Chainmail Leggings&#039;, 4 },&lt;br /&gt;
	{&#039;Iron Leggings&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Leggings&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond Leggings&#039;, 6, 2 },&lt;br /&gt;
	{&#039;Netherite Leggings&#039;, 6, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local feet = {&lt;br /&gt;
	{&#039;Leather Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Iron Boots&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond Boots&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Boots&#039;, 3, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local equipped = {&lt;br /&gt;
	{&#039;Leather Horse Armor&#039;, 3 },&lt;br /&gt;
	{&#039;Iron Horse Armor&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Horse Armor&#039;, 7 },&lt;br /&gt;
	{&#039;Diamond Horse Armor&#039;, 11, 2 },&lt;br /&gt;
	{&#039;Wolf Armor&#039;, 11 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local bodyParts = {&lt;br /&gt;
    {head, &amp;quot;on Head&amp;quot;},&lt;br /&gt;
    {body, &amp;quot;on Body&amp;quot;},&lt;br /&gt;
    {legs, &amp;quot;on Legs&amp;quot;},&lt;br /&gt;
    {feet, &amp;quot;on Feet&amp;quot;},&lt;br /&gt;
    {equipped, &amp;quot;equipped&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local trimMaterial = {&lt;br /&gt;
	{&#039;Quartz&#039;, &#039;&amp;amp;h&#039;},&lt;br /&gt;
	{&#039;Iron&#039;, &#039;&amp;amp;i&#039;},&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;&amp;amp;j&#039;},&lt;br /&gt;
	{&#039;Redstone&#039;, &#039;&amp;amp;y&#039;},&lt;br /&gt;
	{&#039;Copper&#039;, &#039;&amp;amp;z&#039;},&lt;br /&gt;
	{&#039;Gold&#039;, &#039;&amp;amp;p&#039;},&lt;br /&gt;
	{&#039;Emerald&#039;, &#039;&amp;amp;q&#039;},&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;&amp;amp;s&#039;},&lt;br /&gt;
	{&#039;Lapis&#039;, &#039;&amp;amp;t&#039;},&lt;br /&gt;
	{&#039;Amethyst&#039;, &#039;&amp;amp;u&#039;},&lt;br /&gt;
	{&#039;Resin&#039;, &#039;&amp;amp;v&#039;},&lt;br /&gt;
	{&#039;Amber&#039;, &#039;&amp;amp;6&#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, bodyPart in ipairs(bodyParts) do&lt;br /&gt;
    local items = bodyPart[1]&lt;br /&gt;
    local bodyPartName = bodyPart[2]&lt;br /&gt;
    &lt;br /&gt;
    for _, toolProps in ipairs(items) do&lt;br /&gt;
        local aliasName = toolProps[1]&lt;br /&gt;
        local damagedName&lt;br /&gt;
        if string.find(aliasName, &amp;quot;Horse Armor&amp;quot;) then&lt;br /&gt;
            damagedName = aliasName &lt;br /&gt;
        else&lt;br /&gt;
            damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
        end     &lt;br /&gt;
        local text = &#039;/&amp;amp;7When &#039; .. bodyPartName .. &#039;:/&amp;amp;9+&#039; .. toolProps[2] .. &#039; Armor/&#039;&lt;br /&gt;
        if toolProps[3] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[3] .. &#039; Armor Toughness/&#039;&lt;br /&gt;
        end&lt;br /&gt;
        if toolProps[4] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[4] .. &#039; Knockback Resistance&#039;&lt;br /&gt;
        end&lt;br /&gt;
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
        aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
        if bodyPartName ~= &amp;quot;equipped&amp;quot; then&lt;br /&gt;
			for _, materialType in ipairs( trimMaterial ) do&lt;br /&gt;
	        	local trimName = materialType[1] .. &#039; Trim &#039; .. aliasName&lt;br /&gt;
				local trimText = &#039;&amp;amp;7Upgrade:/&amp;amp;#160;&#039; .. materialType[2] .. &#039;Armor Trim/&amp;amp;#160;&#039; .. materialType[1] .. &#039; Material/&#039;&lt;br /&gt;
				aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Lists of item variants --&lt;br /&gt;
local itemVariants = {&lt;br /&gt;
	[&#039;Small Flower&#039;] = { &#039;Oxeye Daisy&#039;, &#039;Cornflower&#039;, &#039;Lily of the Valley&#039;, &#039;Wither Rose&#039;, &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039;, &#039;Azure Bluet&#039;, &#039;Allium&#039;, &#039;Blue Orchid&#039;, &#039;Poppy&#039;, &#039;Dandelion&#039;, &#039;Torchflower&#039;, &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Eyeblossom&#039;] = { &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Mushroom&#039;] = { &#039;Red Mushroom&#039;, &#039;Brown Mushroom&#039; },&lt;br /&gt;
	[&#039;Quartz Block&#039;] = { &#039;Block of Quartz&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Quartz Pillar&#039; },&lt;br /&gt;
	[&#039;Red Sandstone&#039;] = { &#039;Red Sandstone&#039;, &#039;Cut Red Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Smooth Red Sandstone&#039; },&lt;br /&gt;
	[&#039;Sandstone&#039;] = { &#039;Sandstone&#039;, &#039;Cut Sandstone&#039;, &#039;Chiseled Sandstone&#039;, &#039;Smooth Sandstone&#039; },&lt;br /&gt;
	[&#039;Stone Bricks&#039;] = { &#039;Stone Bricks&#039;, &#039;Mossy Stone Bricks&#039;, &#039;Cracked Stone Bricks&#039;, &#039;Chiseled Stone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Slab&#039;] = { &#039;Stone Slab&#039;, &#039;Cobblestone Slab&#039;, &#039;Mossy Cobblestone Slab&#039;, &#039;Smooth Stone Slab&#039;, &#039;Stone Brick Slab&#039;, &#039;Mossy Stone Brick Slab&#039;, &lt;br /&gt;
		&#039;Granite Slab&#039;, &#039;Polished Granite Slab&#039;, &#039;Diorite Slab&#039;, &#039;Polished Diorite Slab&#039;, &#039;Andesite Slab&#039;, &#039;Polished Andesite Slab&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Slab&#039;, &#039;Polished Deepslate Slab&#039;, &#039;Deepslate Brick Slab&#039;, &#039;Deepslate Tile Slab&#039;, &#039;Brick Slab&#039;, &#039;Mud Brick Slab&#039;, &#039;Resin Brick Slab&#039;,&lt;br /&gt;
		&#039;Sandstone Slab&#039;, &#039;Smooth Sandstone Slab&#039;, &#039;Cut Sandstone Slab&#039;, &#039;Red Sandstone Slab&#039;, &#039;Smooth Red Sandstone Slab&#039;, &#039;Cut Red Sandstone Slab&#039;, &#039;Prismarine Slab&#039;, &#039;Prismarine Brick Slab&#039;, &#039;Dark Prismarine Slab&#039;, &lt;br /&gt;
		&#039;Nether Brick Slab&#039;, &#039;Red Nether Brick Slab&#039;, &#039;Blackstone Slab&#039;, &#039;Polished Blackstone Slab&#039;, &#039;Polished Blackstone Brick Slab&#039;, &#039;End Stone Brick Slab&#039;, &#039;Purpur Slab&#039;, &#039;Quartz Slab&#039;, &#039;Smooth Quartz Slab&#039;, &#039;Petrified Oak Slab&#039; },&lt;br /&gt;
	[&#039;Stone Stairs&#039;] = { &#039;Stone Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &lt;br /&gt;
		&#039;Granite Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Resin Brick Stairs&#039;, &lt;br /&gt;
		&#039;Sandstone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &lt;br /&gt;
		&#039;Nether Brick Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Smooth Quartz Stairs&#039; },&lt;br /&gt;
	[&#039;Wall&#039;] = { &#039;Cobblestone Wall&#039;, &#039;Mossy Cobblestone Wall&#039;, &#039;Stone Brick Wall&#039;, &#039;Mossy Stone Brick Wall&#039;, &#039;Granite Wall&#039;, &#039;Diorite Wall&#039;, &#039;Andesite Wall&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;, &#039;Polished Deepslate Wall&#039;, &#039;Deepslate Brick Wall&#039;, &#039;Deepslate Tile Wall&#039;, &#039;Brick Wall&#039;, &#039;Mud Brick Wall&#039;, &#039;Resin Brick Wall&#039;, &#039;Sandstone Wall&#039;, &#039;Red Sandstone Wall&#039;, &#039;Prismarine Wall&#039;, &lt;br /&gt;
		&#039;Nether Brick Wall&#039;, &#039;Red Nether Brick Wall&#039;, &#039;Blackstone Wall&#039;, &#039;Polished Blackstone Wall&#039;, &#039;Polished Blackstone Brick Wall&#039;, &#039;End Stone Brick Wall&#039; },&lt;br /&gt;
	[&#039;Purpur Block&#039;] = { &#039;Purpur Block&#039;, &#039;Purpur Pillar&#039; },&lt;br /&gt;
	[&#039;Stone&#039;] = { &#039;Stone&#039;, &#039;Andesite&#039;, &#039;Granite&#039;, &#039;Diorite&#039;, &#039;Polished Andesite&#039;, &#039;Polished Granite&#039;, &#039;Polished Diorite&#039; },&lt;br /&gt;
	[&#039;Resin Block&#039;] = { &#039;Block of Resin&#039;, &#039;Resin Bricks&#039;, &#039;Chiseled Resin Bricks&#039; },&lt;br /&gt;
	[&#039;Tulip&#039;] = { &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039; },&lt;br /&gt;
	[&#039;Prismarine&#039;] = { &#039;Prismarine&#039;, &#039;Prismarine Bricks&#039;, &#039;Dark Prismarine&#039; },&lt;br /&gt;
	[&#039;Ore&#039;] = { &#039;Coal Ore&#039;, &#039;Iron Ore&#039;, &#039;Gold Ore&#039;, &#039;Lapis Lazuli Ore&#039;, &#039;Redstone Ore&#039;, &#039;Emerald Ore&#039;, &#039;Diamond Ore&#039;, &#039;Nether Quartz Ore&#039;, &#039;Nether Gold Ore&#039;, &#039;Deepslate Coal Ore&#039;, &lt;br /&gt;
		&#039;Deepslate Copper Ore&#039;, &#039;Deepslate Emerald Ore&#039;, &#039;Deepslate Iron Ore&#039;, &#039;Deepslate Gold Ore&#039;, &#039;Deepslate Lapis Lazuli Ore&#039;, &#039;Deepslate Redstone Ore&#039;, &#039;Deepslate Diamond Ore&#039;},&lt;br /&gt;
	[&#039;Dead Coral Block&#039;] = { &#039;Dead Tube Coral Block&#039;, &#039;Dead Brain Coral Block&#039;, &#039;Dead Bubble Coral Block&#039;, &#039;Dead Fire Coral Block&#039;, &#039;Dead Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Coral Block&#039;] = { &#039;Tube Coral Block&#039;, &#039;Brain Coral Block&#039;, &#039;Bubble Coral Block&#039;, &#039;Fire Coral Block&#039;, &#039;Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Dead Coral&#039;] = { &#039;Dead Tube Coral&#039;, &#039;Dead Brain Coral&#039;, &#039;Dead Bubble Coral&#039;, &#039;Dead Fire Coral&#039;, &#039;Dead Horn Coral&#039; },&lt;br /&gt;
	[&#039;Dead Coral Fan&#039;] = { &#039;Dead Tube Coral Fan&#039;, &#039;Dead Brain Coral Fan&#039;, &#039;Dead Bubble Coral Fan&#039;, &#039;Dead Fire Coral Fan&#039;, &#039;Dead Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Coral&#039;] = { &#039;Tube Coral&#039;, &#039;Brain Coral&#039;, &#039;Bubble Coral&#039;, &#039;Fire Coral&#039;, &#039;Horn Coral&#039; },&lt;br /&gt;
	[&#039;Coral Fan&#039;] = { &#039;Tube Coral Fan&#039;, &#039;Brain Coral Fan&#039;, &#039;Bubble Coral Fan&#039;, &#039;Fire Coral Fan&#039;, &#039;Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Torch&#039;] = { &#039;Torch&#039;, &#039;Soul Torch&#039; },&lt;br /&gt;
	[&#039;Lantern&#039;] = { &#039;Lantern&#039;, &#039;Soul Lantern&#039; },&lt;br /&gt;
	[&#039;Fungus&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Fungi&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Roots&#039;] = { &#039;Crimson Roots&#039;, &#039;Warped Roots&#039; },&lt;br /&gt;
	[&#039;Nylium&#039;] = { &#039;Crimson Nylium&#039;, &#039;Warped Nylium&#039; },&lt;br /&gt;
	[&#039;Soul Sand&#039;] = { &#039;Soul Sand&#039;, &#039;Soul Soil&#039; },&lt;br /&gt;
	[&#039;Campfire&#039;] = { &#039;Campfire&#039;, &#039;Soul Campfire&#039; },&lt;br /&gt;
	[&#039;Blackstone&#039;] = { &#039;Blackstone&#039;, &#039;Polished Blackstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Polished Blackstone Bricks&#039;, &#039;Cracked Polished Blackstone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Button&#039;] = { &#039;Stone Button&#039;, &#039;Polished Blackstone Button&#039; },&lt;br /&gt;
	[&#039;Stone Pressure Plate&#039;] = { &#039;Stone Pressure Plate&#039;, &#039;Polished Blackstone Pressure Plate&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Copper --&lt;br /&gt;
local copperstuff = {&lt;br /&gt;
	&#039;Block of Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper Stairs&#039;,&lt;br /&gt;
	&#039;Cut Copper Slab&#039;,&lt;br /&gt;
	&#039;Chiseled Copper&#039;,&lt;br /&gt;
	&#039;Copper Grate&#039;,&lt;br /&gt;
	&#039;Copper Bulb&#039;,&lt;br /&gt;
	&#039;Copper Door&#039;,&lt;br /&gt;
	&#039;Copper Trapdoor&#039;,&lt;br /&gt;
}&lt;br /&gt;
local coppervariants = { &#039;&#039;, &#039;Exposed &#039;, &#039;Weathered &#039;, &#039;Oxidized &#039; }&lt;br /&gt;
for _, copper in ipairs( copperstuff ) do&lt;br /&gt;
	itemVariants[&#039;Unwaxed &#039; .. copper] = {}&lt;br /&gt;
	itemVariants[&#039;Waxed &#039; .. copper] = {}&lt;br /&gt;
	for _, coppervariant in ipairs( coppervariants ) do&lt;br /&gt;
		local name = coppervariant .. copper&lt;br /&gt;
		if copper == &#039;Block of Copper&#039; and coppervariant ~= &#039;&#039; then&lt;br /&gt;
			name = coppervariant .. &#039;Copper&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( itemVariants[&#039;Unwaxed &#039; .. copper], name )&lt;br /&gt;
		table.insert( itemVariants[&#039;Waxed &#039; .. copper], name )&lt;br /&gt;
	end&lt;br /&gt;
	itemVariants[copper] = {}&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Unwaxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Waxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for aliasName, aliasItems in pairs( itemVariants ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. aliasName] = aliasItems&lt;br /&gt;
	aliases[&#039;Matching &#039; .. aliasName] = aliasItems&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Discs --&lt;br /&gt;
local discs = { &lt;br /&gt;
	{ &#039;13&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Cat&#039;,                 &#039;C418&#039;,         &#039;cat&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Blocks&#039;,              &#039;C418&#039;,         &#039;blocks&#039;,    &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Chirp&#039;,               &#039;C418&#039;,         &#039;chirp&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Far&#039;,                 &#039;C418&#039;,         &#039;far&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mall&#039;,                &#039;C418&#039;,         &#039;mall&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mellohi&#039;,             &#039;C418&#039;,         &#039;mellohi&#039;,   &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Stal&#039;,                &#039;C418&#039;,         &#039;stal&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Strad&#039;,               &#039;C418&#039;,         &#039;strad&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Ward&#039;,                &#039;C418&#039;,         &#039;ward&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;11&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wait&#039;,                &#039;C418&#039;,         &#039;wait&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Otherside&#039;,           &#039;Lena Raine&#039;,   &#039;otherside&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Pigstep&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;5&#039;,                   &#039;Samuel Åberg&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Relic&#039;,               &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Precipice&#039;,           &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Creator&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Creator (Music Box)&#039;, &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
}&lt;br /&gt;
for _, disc in ipairs( discs ) do&lt;br /&gt;
    local rarityColor = disc[4]&lt;br /&gt;
	local name = &#039;Music Disc &#039; .. disc[1]&lt;br /&gt;
	local artist = disc[2]&lt;br /&gt;
	local trackname = disc[1]&lt;br /&gt;
	if disc[3] ~= &#039;&#039; then&lt;br /&gt;
		trackname = disc[3]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = rarityColor .. &#039;Music Disc&#039;, name = name, text = &#039;&amp;amp;7&#039; .. artist .. &#039; - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Disc Fragments --&lt;br /&gt;
local disc_fragments = { &lt;br /&gt;
	{ &#039;5&#039;,    },&lt;br /&gt;
}&lt;br /&gt;
for _, disc_fragment in ipairs( disc_fragments ) do&lt;br /&gt;
	local name = &#039;Disc Fragment &#039; .. disc_fragment[1]&lt;br /&gt;
	local trackname = disc_fragment[1]&lt;br /&gt;
	if disc_fragment[2] ~= nil then&lt;br /&gt;
		trackname = disc_fragment[2]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;eDisc Fragment&#039;, name = name, text = &#039;&amp;amp;7Music Disc - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Paintings --&lt;br /&gt;
local paintings = { &lt;br /&gt;
	{ &#039;Kebab med tre pepperoni&#039;,    &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;de_aztec&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Albanian&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Target Successfully Bombed&#039;, &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Paradisträd&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wasteland&#039;,                  &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Meditative&#039;,                 &#039;Sarah Boeving&#039;,           &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wanderer&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Graham&#039;,                     &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Prairie Ride&#039;,               &#039;Sarah Boeving&#039;,           &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;The Pool&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Bonjour Monsieur Courbet&#039;,   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;sunset_dense&#039;,               &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Seaside&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Creebet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Match&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bust&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The Stage Is Set&#039;,           &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The void&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Skull and Roses&#039;,            &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wither&#039;,                     &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Baroque&#039;,                    &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Humble&#039;,                     &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bouquet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cavebird&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cotán&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Endboss&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Fern&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Owlemons&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Sunflowers&#039;,                 &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Tides&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Backyard&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Pond&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Fighters&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Changing&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Finding&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Lowmist&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Passage&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Mortal Coil&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Kong&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Pointer&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Pigscene&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Skull On Fire&#039;,              &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Unpacked&#039;,                   &#039;Sarah Boeving&#039;,           &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Orb&#039;,                        &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Earth&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wind&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Fire&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Water&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; }&lt;br /&gt;
}&lt;br /&gt;
for _, painting in ipairs( paintings ) do&lt;br /&gt;
	local name = &#039;Painting &#039; .. painting[1]&lt;br /&gt;
	local artist = painting[2]&lt;br /&gt;
	local artwork = painting[1]&lt;br /&gt;
	local size = painting[3]&lt;br /&gt;
	aliases[name] = { title = &#039;Painting&#039;, name = &#039;Painting&#039;, text = &#039;&amp;amp;e&#039; .. artwork .. &#039;/&amp;amp;7&#039; .. artist .. &#039;/&#039; .. &#039;&amp;amp;f&#039; .. size }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Damaged items, note it skips tools, weapons, and armor as they are handled above to add the damage tooltip. --&lt;br /&gt;
-- Items with rarity (such as Mace and Elytra) are hard-coded in the module&#039;s beginning.&lt;br /&gt;
local damagedItems = {&lt;br /&gt;
	&#039;Bow&#039;,&lt;br /&gt;
	&#039;Brush&#039;,&lt;br /&gt;
	&#039;Carrot on a Stick&#039;,&lt;br /&gt;
	&#039;Crossbow&#039;,&lt;br /&gt;
	&#039;Fishing Rod&#039;,&lt;br /&gt;
	&#039;Flint and Steel&#039;,&lt;br /&gt;
	&#039;Shears&#039;,&lt;br /&gt;
	&#039;Shield&#039;&lt;br /&gt;
}&lt;br /&gt;
for _, item in ipairs( damagedItems ) do&lt;br /&gt;
	local name = &#039;Damaged &#039; .. item&lt;br /&gt;
	aliases[name] = { title = item, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Banners and colored items --&lt;br /&gt;
local patterns = {&lt;br /&gt;
	&#039;Base Dexter Canton&#039;,&lt;br /&gt;
	&#039;Base&#039;,&lt;br /&gt;
	&#039;Base Gradient&#039;,&lt;br /&gt;
	&#039;Base Indented&#039;,&lt;br /&gt;
	&#039;Base Sinister Canton&#039;,&lt;br /&gt;
	&#039;Bend&#039;,&lt;br /&gt;
	&#039;Bend Sinister&#039;,&lt;br /&gt;
	&#039;Bordure&#039;,&lt;br /&gt;
	&#039;Bordure Indented&#039;,&lt;br /&gt;
	&#039;Chevron&#039;,&lt;br /&gt;
	&#039;Chief Dexter Canton&#039;,&lt;br /&gt;
	&#039;Chief&#039;,&lt;br /&gt;
	&#039;Chief Indented&#039;,&lt;br /&gt;
	&#039;Chief Sinister Canton&#039;,&lt;br /&gt;
	&#039;Creeper Charge&#039;,&lt;br /&gt;
	&#039;Cross&#039;,&lt;br /&gt;
	&#039;Fess&#039;,&lt;br /&gt;
	&#039;Field Masoned&#039;,&lt;br /&gt;
	&#039;Flow&#039;,&lt;br /&gt;
	&#039;Flower Charge&#039;,&lt;br /&gt;
	&#039;Globe&#039;,&lt;br /&gt;
	&#039;Gradient&#039;,&lt;br /&gt;
	&#039;Guster&#039;,&lt;br /&gt;
	&#039;Inverted Chevron&#039;,&lt;br /&gt;
	&#039;Lozenge&#039;,&lt;br /&gt;
	&#039;Thing&#039;,&lt;br /&gt;
	&#039;Pale&#039;,&lt;br /&gt;
	&#039;Pale Dexter&#039;,&lt;br /&gt;
	&#039;Pale Sinister&#039;,&lt;br /&gt;
	&#039;Paly&#039;,&lt;br /&gt;
	&#039;Per Bend&#039;,&lt;br /&gt;
	&#039;Per Bend Inverted&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister Inverted&#039;,&lt;br /&gt;
	&#039;Per Fess&#039;,&lt;br /&gt;
	&#039;Per Fess Inverted&#039;,&lt;br /&gt;
	&#039;Per Pale&#039;,&lt;br /&gt;
	&#039;Per Pale Inverted&#039;,&lt;br /&gt;
	&#039;Piglin&#039;,&lt;br /&gt;
	&#039;Snout&#039;,&lt;br /&gt;
	&#039;Roundel&#039;,&lt;br /&gt;
	&#039;Saltire&#039;,&lt;br /&gt;
	&#039;Skull Charge&#039;&lt;br /&gt;
}&lt;br /&gt;
local colors = {&lt;br /&gt;
	&#039;White&#039;,&lt;br /&gt;
	&#039;Light Gray&#039;,&lt;br /&gt;
	&#039;Gray&#039;,&lt;br /&gt;
	&#039;Black&#039;,&lt;br /&gt;
	&#039;Brown&#039;,&lt;br /&gt;
	&#039;Red&#039;,&lt;br /&gt;
	&#039;Orange&#039;,&lt;br /&gt;
	&#039;Yellow&#039;,&lt;br /&gt;
	&#039;Lime&#039;,&lt;br /&gt;
	&#039;Green&#039;,&lt;br /&gt;
	&#039;Cyan&#039;,&lt;br /&gt;
	&#039;Light Blue&#039;,&lt;br /&gt;
	&#039;Blue&#039;,&lt;br /&gt;
	&#039;Purple&#039;,&lt;br /&gt;
	&#039;Magenta&#039;,&lt;br /&gt;
	&#039;Pink&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Firework Stars --&lt;br /&gt;
local fireworkStar = {}&lt;br /&gt;
for _, color in ipairs( colors ) do&lt;br /&gt;
	local name = color .. &#039; Firework Star&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;Firework Star&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color }&lt;br /&gt;
	table.insert( fireworkStar, aliases[name] )&lt;br /&gt;
	for _, pattern in ipairs( patterns ) do&lt;br /&gt;
		name = color .. &#039; &#039; .. pattern .. &#039; Banner&#039;&lt;br /&gt;
		aliases[name] = { title = &#039;Banner&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color .. &#039; &#039; .. pattern }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Firework Star&#039;] = fireworkStar&lt;br /&gt;
aliases[&#039;Matching Firework Star&#039;] = fireworkStar&lt;br /&gt;
&lt;br /&gt;
-- Items that use the sixteen colors --&lt;br /&gt;
local coloredItems = {&lt;br /&gt;
	withWhite = {&lt;br /&gt;
		&#039;Balloon&#039;,&lt;br /&gt;
		&#039;Banner&#039;,&lt;br /&gt;
		&#039;Bed&#039;,&lt;br /&gt;
		&#039;Carpet&#039;,&lt;br /&gt;
		&#039;Concrete&#039;,&lt;br /&gt;
		&#039;Concrete Powder&#039;,&lt;br /&gt;
		&#039;Glazed Terracotta&#039;,&lt;br /&gt;
		&#039;Glow Stick&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Shield&#039;,&lt;br /&gt;
		&#039;Shulker Box&#039;,&lt;br /&gt;
		&#039;Stained Glass&#039;,&lt;br /&gt;
		&#039;Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Wool&#039;,&lt;br /&gt;
&lt;br /&gt;
		&#039;$Dyed Bundle&#039;,&lt;br /&gt;
		&#039;$Dyed Candle&#039;,&lt;br /&gt;
		&#039;$Dyed Terracotta&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	noWhite = {&lt;br /&gt;
		&#039;$Dyed Wool&#039;,&lt;br /&gt;
		&#039;$Dyed Bed&#039;,&lt;br /&gt;
		&#039;$Dyed Carpet&#039;,&lt;br /&gt;
		&#039;$Colored Dye&#039;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local coloredBadItems = {&lt;br /&gt;
	[&#039;Light Gray Glow Stick&#039;] = 1,&lt;br /&gt;
	[&#039;Black Glow Stick&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for type, items in pairs( coloredItems ) do&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local coloredItemAliases = {}&lt;br /&gt;
		local defaultItemAliases&lt;br /&gt;
&lt;br /&gt;
		if item:find( &#039;%$[^1]&#039; ) then&lt;br /&gt;
			defaultItemAliases = {}&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type == &#039;noWhite&#039; then&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+&#039;, &#039;White&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( defaultItemAliases, itemName )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, color in ipairs( colors ) do&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type ~= &#039;noWhite&#039; or color ~= &#039;White&#039; then&lt;br /&gt;
				if item:find( &#039;%$1&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$1&#039;, color )&lt;br /&gt;
				elseif item:find( &#039;%$&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$%w+&#039;, color )&lt;br /&gt;
				else&lt;br /&gt;
					itemName = color .. &#039; &#039; .. item&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not coloredBadItems[itemName] then&lt;br /&gt;
				if defaultItemAliases then&lt;br /&gt;
					table.insert( defaultItemAliases, itemName )&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table.insert( coloredItemAliases, itemName )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if defaultItemAliases then&lt;br /&gt;
			local defaultItem = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			aliases[&#039;Any &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
			aliases[&#039;Matching &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
		end&lt;br /&gt;
		item = item:gsub( &#039;%$1 &#039;, &#039;&#039; )&lt;br /&gt;
		item = item:gsub( &#039;%$&#039;, &#039;&#039; )&lt;br /&gt;
		aliases[&#039;Any &#039; .. item] = coloredItemAliases&lt;br /&gt;
		aliases[&#039;Matching &#039; .. item] = coloredItemAliases&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- list of all potions with no effects&lt;br /&gt;
local noEffects = {&lt;br /&gt;
	&#039;Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Potion&#039;,&lt;br /&gt;
	&#039;Thick Potion&#039;,&lt;br /&gt;
	&#039;Mundane Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Potion&#039;,&lt;br /&gt;
	&#039;Splash Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Splash Potion&#039;,&lt;br /&gt;
	&#039;Thick Splash Potion&#039;,&lt;br /&gt;
	&#039;Mundane Splash Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Splash Potion&#039;,&lt;br /&gt;
	&#039;Lingering Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Lingering Potion&#039;,&lt;br /&gt;
	&#039;Thick Lingering Potion&#039;,&lt;br /&gt;
	&#039;Mundane Lingering Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Lingering Potion&#039;,&lt;br /&gt;
	&#039;Tipped Arrow&#039;,&lt;br /&gt;
	&#039;Arrow of Splashing&#039;,&lt;br /&gt;
	&#039;Uncraftable Tipped Arrow&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs(noEffects) do&lt;br /&gt;
	aliases[name] = { name = name, text = &#039;&amp;amp;7No Effects&#039; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start these lists with the no effect items as names are not normal&lt;br /&gt;
local potionItems = {&lt;br /&gt;
	[&#039;Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Splash Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Splash Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Splash Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Lingering Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Lingering Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Lingering Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Tipped Arrow&#039;] = {&lt;br /&gt;
		aliases[&#039;Arrow of Splashing&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Potions --&lt;br /&gt;
local effects = {&lt;br /&gt;
	-- durations are in the order normal, extended, enhanced&lt;br /&gt;
	{name = &#039;Regeneration&#039;, effect = &#039;&amp;amp;9Regeneration&#039;, enhanced = &#039;II&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:22&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Swiftness&#039;, effect = &#039;&amp;amp;9Speed&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Fire Resistance&#039;, effect = &#039;&amp;amp;9Fire Resistance&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Poison&#039;, effect = &#039;&amp;amp;cPoison&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:21&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Healing&#039;, effect = &#039;&amp;amp;9Instant Health&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Night Vision&#039;,    effect = &#039;&amp;amp;9Night Vision&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Weakness&#039;,        effect = &#039;&amp;amp;cWeakness&#039;,        durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Strength&#039;, effect = &#039;&amp;amp;9Strength&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039;}, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Slowness&#039;, effect = &#039;&amp;amp;cSlowness&#039;, enhanced = &#039;IV&#039;, &lt;br /&gt;
		durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039;, &#039;0:20&#039;}, lingering = {&#039;0:22&#039;, &#039;1:00&#039;, &#039;0:05&#039;}, arrow = { &#039;0:11&#039;, &#039;0:30&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Leaping&#039;, effect = &#039;&amp;amp;9Jump Boost&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Harming&#039;, effect = &#039;&amp;amp;cInstant Damage&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Water Breathing&#039;, effect = &#039;&amp;amp;9Water Breathing&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Invisibility&#039;,    effect = &#039;&amp;amp;9Invisibility&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Slow Falling&#039;,    effect = &#039;&amp;amp;9Slow Falling&#039;,    durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Luck&#039;,  effect = &#039;&amp;amp;9Luck&#039;,   durations = { normal = { &#039;5:00&#039; }, lingering = { &#039;1:15&#039; }, arrow = { &#039;0:37&#039; }}},&lt;br /&gt;
	{ name = &#039;Decay&#039;, effect = &#039;&amp;amp;cWither II&#039;, durations = { normal = { &#039;0:40&#039; }, lingering = { &#039;0:10&#039; }, arrow = { &#039;0:05&#039; }}},&lt;br /&gt;
	{ name = &#039;the Turtle Master&#039;, text = &#039;&amp;amp;cSlowness IV ($1)/&amp;amp;9Resistance III ($1)&#039;, enhanced = &#039;&amp;amp;cSlowness VI ($1)/&amp;amp;9Resistance IV ($1)&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:20&#039;, &#039;0:40&#039;, &#039;0:20&#039; }, lingering = { &#039;0:15&#039;, &#039;0:45&#039;, &#039;0:15&#039; }, arrow = {  &#039;0:07&#039;, &#039;0:22&#039;, &#039;0:07&#039; }}},&lt;br /&gt;
	{ name = &#039;Oozing&#039;,  effect = &#039;&amp;amp;cOozing&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Infestation&#039;,  effect = &#039;&amp;amp;cInfested&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Weaving&#039;,  effect = &#039;&amp;amp;cWeaving&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Wind Charging&#039;,  effect = &#039;&amp;amp;cWind Charged&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}}&lt;br /&gt;
}&lt;br /&gt;
local types = {&lt;br /&gt;
	{name = &#039;Potion&#039;,           durations = &#039;normal&#039;,    text = &#039;Potion of &#039;},&lt;br /&gt;
	{name = &#039;Splash Potion&#039;,    durations = &#039;normal&#039;,    text = &#039;Splash Potion of &#039;},&lt;br /&gt;
	{name = &#039;Lingering Potion&#039;, durations = &#039;lingering&#039;, text = &#039;Lingering Potion of &#039;},&lt;br /&gt;
	{name = &#039;Tipped Arrow&#039;,     durations = &#039;arrow&#039;,     text = &#039;Arrow of &#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, effect in ipairs(effects) do&lt;br /&gt;
	for _, type in ipairs(types) do&lt;br /&gt;
		-- form name, it will be reused&lt;br /&gt;
		local name =  type.text .. effect.name&lt;br /&gt;
		local potionName = {}&lt;br /&gt;
		if type.name == &#039;Tipped Arrow&#039; then&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		else&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if we have durations, add times&lt;br /&gt;
		if effect.durations then&lt;br /&gt;
			local durations = effect.durations[type.durations]&lt;br /&gt;
			&lt;br /&gt;
			-- turtle master is weird, so just do a fancy string replacement&lt;br /&gt;
			if effect.text then&lt;br /&gt;
				aliases[name] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[1] ) }&lt;br /&gt;
				aliases[name .. &#039; Extended&#039;] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
				aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.enhanced:gsub( &#039;%$1&#039;, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
			else&lt;br /&gt;
				-- we always have normal&lt;br /&gt;
				aliases[name] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[1] ) }&lt;br /&gt;
			&lt;br /&gt;
				-- ensure we have extended&lt;br /&gt;
				if durations[2] then&lt;br /&gt;
					aliases[name .. &#039; Extended&#039;] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
					&lt;br /&gt;
					-- and enhanced&lt;br /&gt;
					if effect.enhanced then&lt;br /&gt;
						aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = string.format( &#039;%s %s (%s)&#039;, effect.effect, effect.enhanced, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- otherwise its just effect, currently every potion with no duration can be enhanced&lt;br /&gt;
			aliases[name] = { name = potionName, text = effect.effect}&lt;br /&gt;
			aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.effect .. &#039; &#039; .. effect.enhanced .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- add the base potion to the any list&lt;br /&gt;
		table.insert(potionItems[type.name], aliases[name])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- build the any lists&lt;br /&gt;
for item, potionAliases in pairs( potionItems ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. item] = potionAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = potionAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wood --&lt;br /&gt;
local woodTypes = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Oak&#039;,&lt;br /&gt;
	    &#039;Spruce&#039;,&lt;br /&gt;
	    &#039;Birch&#039;,&lt;br /&gt;
	    &#039;Jungle&#039;,&lt;br /&gt;
	    &#039;Acacia&#039;,&lt;br /&gt;
        &#039;Dark Oak&#039;,&lt;br /&gt;
        &#039;Mangrove&#039;,&lt;br /&gt;
        &#039;Cherry&#039;,&lt;br /&gt;
        &#039;Pale Oak&#039;,&lt;br /&gt;
        &#039;Bamboo&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Crimson&#039;,&lt;br /&gt;
        &#039;Warped&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {},&lt;br /&gt;
}&lt;br /&gt;
local woodTypeWorld = {}&lt;br /&gt;
for _, world in ipairs({&#039;overworld&#039;, &#039;nether&#039;}) do&lt;br /&gt;
	local woods = woodTypes[world]&lt;br /&gt;
	for _, type in ipairs(woods) do&lt;br /&gt;
		woodTypeWorld[type] = world&lt;br /&gt;
        table.insert(woodTypes.both, type)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
local woodItems = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Log&#039;,&lt;br /&gt;
        &#039;Wood&#039;,&lt;br /&gt;
        &#039;Stripped $1 Log&#039;,&lt;br /&gt;
        &#039;Stripped $1 Wood&#039;,&lt;br /&gt;
        &#039;Boat&#039;,&lt;br /&gt;
        &#039;Boat with Chest&#039;,&lt;br /&gt;
        &#039;Sapling&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Stem&#039;,&lt;br /&gt;
        &#039;Hyphae&#039;,&lt;br /&gt;
        &#039;Stripped $1 Stem&#039;,&lt;br /&gt;
        &#039;Stripped $1 Hyphae&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {&lt;br /&gt;
		-- Any/Matching X or Y&lt;br /&gt;
        &#039;${Log,Stem}&#039;,&lt;br /&gt;
        &#039;${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Log,Stem}&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Dimensional prefixes&lt;br /&gt;
        &#039;$world Planks&#039;,&lt;br /&gt;
        &#039;$world $wood Stairs&#039;,&lt;br /&gt;
        &#039;$world $wood Slab&#039;,&lt;br /&gt;
        &#039;$world $wood Fence&#039;,&lt;br /&gt;
        &#039;$world $wood Fence Gate&#039;,&lt;br /&gt;
        &#039;$world $wood Door&#039;,&lt;br /&gt;
        &#039;$world $wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$world $wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$world $wood Button&#039;,&lt;br /&gt;
        &#039;$world $wood Sign&#039;,&lt;br /&gt;
        &#039;$world $wood Hanging Sign&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Both dimensions&lt;br /&gt;
		-- Items with non-wood variants include $wood&lt;br /&gt;
        &#039;Planks&#039;,&lt;br /&gt;
        &#039;$wood Stairs&#039;,&lt;br /&gt;
        &#039;$wood Slab&#039;,&lt;br /&gt;
        &#039;$wood Fence&#039;,&lt;br /&gt;
        &#039;Fence Gate&#039;,&lt;br /&gt;
        &#039;$wood Door&#039;,&lt;br /&gt;
        &#039;$wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$wood Button&#039;,&lt;br /&gt;
        &#039;Sign&#039;,&lt;br /&gt;
        &#039;Hanging Sign&#039;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
local woodItemWorld = {}&lt;br /&gt;
for world, items in pairs(woodItems) do&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
		-- expand $world (should only happen in &amp;quot;both&amp;quot;)&lt;br /&gt;
        if (item:find(&#039;%$world&#039;)) and world == &#039;both&#039; then&lt;br /&gt;
            item = item:gsub(&#039;%$world &#039;, &#039;&#039;)&lt;br /&gt;
            woodItemWorld[&#039;Overworld &#039; .. item] = &#039;overworld&#039;&lt;br /&gt;
			woodItemWorld[&#039;Nether &#039; .. item] = &#039;nether&#039;&lt;br /&gt;
		else&lt;br /&gt;
			woodItemWorld[item] = world&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local woodBadItems = {&lt;br /&gt;
	[&#039;Bamboo Sapling&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Log&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Log&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local woodNameMapping = {&lt;br /&gt;
	[&#039;Mangrove Sapling&#039;] = &#039;Mangrove Propagule&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat&#039;] = &#039;Bamboo Raft&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat with Chest&#039;] = &#039;Bamboo Raft with Chest&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for item, world in pairs(woodItemWorld) do&lt;br /&gt;
	local itemName = &#039;&#039;&lt;br /&gt;
	local woodAliases = {}&lt;br /&gt;
&lt;br /&gt;
	-- real &amp;quot;linkable&amp;quot; name&lt;br /&gt;
    local realItem = item:gsub(&#039;^Overworld &#039;, &#039;&#039;)&lt;br /&gt;
    realItem = realItem:gsub(&#039;^Nether &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, wood in ipairs(woodTypes[world]) do&lt;br /&gt;
		-- Parse ${,} (world-select) syntax&lt;br /&gt;
		local selector = (woodTypeWorld[wood] == &#039;overworld&#039;) and &amp;quot;%1&amp;quot; or &amp;quot;%2&amp;quot;&lt;br /&gt;
		itemName = realItem:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, selector)&lt;br /&gt;
&lt;br /&gt;
		if itemName:find(&#039;%$wood&#039;) then&lt;br /&gt;
			itemName = itemName:gsub(&#039;%$wood&#039;, wood)&lt;br /&gt;
		elseif itemName:find(&#039;%$1&#039;) then&lt;br /&gt;
			itemName = itemName:gsub( &#039;%$1&#039;, wood)&lt;br /&gt;
		else&lt;br /&gt;
			itemName = wood .. &#039; &#039; .. itemName&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- special handling&lt;br /&gt;
		if woodNameMapping[itemName] then&lt;br /&gt;
			itemName = woodNameMapping[itemName]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not woodBadItems[itemName] then&lt;br /&gt;
			table.insert(woodAliases, itemName)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Parse ${,} (world-select) syntax&lt;br /&gt;
	item = item:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, &amp;quot;%1 or %2&amp;quot;)&lt;br /&gt;
    item = item:gsub(&#039;%$wood&#039;, &#039;Wooden&#039;)&lt;br /&gt;
    item = item:gsub(&#039;%$1 &#039;, &#039;&#039;)&lt;br /&gt;
    aliases[&#039;Any &#039; .. item] = woodAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = woodAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Bedrock Edition Items --&lt;br /&gt;
local editionItems = {&lt;br /&gt;
	BE = {&lt;br /&gt;
		&#039;Acacia Fence Gate&#039;,&lt;br /&gt;
		&#039;Andesite Wall&#039;,&lt;br /&gt;
		&#039;Birch Fence Gate&#039;,&lt;br /&gt;
		&#039;Black Bed&#039;,&lt;br /&gt;
		&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Blue Bed&#039;,&lt;br /&gt;
		&#039;Blue Ice&#039;,&lt;br /&gt;
		&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bow&#039;,&lt;br /&gt;
		&#039;Brick Wall&#039;,&lt;br /&gt;
		&#039;Brown Bed&#039;,&lt;br /&gt;
		&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bucket of Pufferfish&#039;,&lt;br /&gt;
		&#039;Bucket of Tropical Fish&#039;,&lt;br /&gt;
		&#039;Cat Spawn Egg&#039;,&lt;br /&gt;
		&#039;Chest&#039;,&lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Crimson Fence Gate&#039;,&lt;br /&gt;
		&#039;Crying Obsidian&#039;,&lt;br /&gt;
		&#039;Cyan Bed&#039;,&lt;br /&gt;
		&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Dark Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Deepslate Brick Wall&#039;,&lt;br /&gt;
		&#039;Deepslate Tile Wall&#039;,&lt;br /&gt;
		&#039;Desert Village Map&#039;,&lt;br /&gt;
		&#039;Diorite Wall&#039;,&lt;br /&gt;
		&#039;Enchanting Table&#039;,&lt;br /&gt;
		&#039;End Gateway&#039;,&lt;br /&gt;
		&#039;End Portal Frame&#039;,&lt;br /&gt;
		&#039;End Portal&#039;,&lt;br /&gt;
		&#039;End Rod&#039;,&lt;br /&gt;
		&#039;End Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Ender Chest&#039;,&lt;br /&gt;
		&#039;Glass Pane&#039;,&lt;br /&gt;
		&#039;Glowstone&#039;,&lt;br /&gt;
		&#039;Granite Wall&#039;,&lt;br /&gt;
		&#039;Gray Bed&#039;,&lt;br /&gt;
		&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Green Bed&#039;,&lt;br /&gt;
		&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Honey Block&#039;,&lt;br /&gt;
		&#039;Horn Coral Block&#039;,&lt;br /&gt;
		&#039;Iron Bars&#039;,&lt;br /&gt;
		&#039;Jack o\&#039;Lantern&#039;,&lt;br /&gt;
		&#039;Jungle Explorer Map&#039;,&lt;br /&gt;
		&#039;Jungle Fence Gate&#039;,&lt;br /&gt;
		&#039;Jungle Leaves&#039;,&lt;br /&gt;
		&#039;Lava&#039;,&lt;br /&gt;
		&#039;Leather Horse Armor&#039;,&lt;br /&gt;
		&#039;Light&#039;,&lt;br /&gt;
		&#039;Light Blue Bed&#039;,&lt;br /&gt;
		&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Light Gray Bed&#039;,&lt;br /&gt;
		&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Lime Bed&#039;,&lt;br /&gt;
		&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
        &#039;Lodestone Compass&#039;,&lt;br /&gt;
        &#039;Magenta Bed&#039;,&lt;br /&gt;
		&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Magma Block&#039;,&lt;br /&gt;
		&#039;Map&#039;,&lt;br /&gt;
		&#039;Minecart with Command Block&#039;,&lt;br /&gt;
		&#039;Monster Spawner&#039;,&lt;br /&gt;
		&#039;Mossy Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Mossy Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Mud Brick Wall&#039;,&lt;br /&gt;
		&#039;Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Observer&#039;,&lt;br /&gt;
		&#039;Ocean Explorer Map&#039;,&lt;br /&gt;
		&#039;Ochre Froglight&#039;,&lt;br /&gt;
		&#039;Orange Bed&#039;,&lt;br /&gt;
		&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Panda Spawn Egg&#039;,&lt;br /&gt;
		&#039;Pearlescent Froglight&#039;,&lt;br /&gt;
		&#039;Pink Bed&#039;,&lt;br /&gt;
		&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Plains Village Map&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Brick Wall&#039;,&lt;br /&gt;
		&#039;Polished Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Polished Tuff Wall&#039;,&lt;br /&gt;
		&#039;Prismarine Wall&#039;,&lt;br /&gt;
		&#039;Purple Bed&#039;,&lt;br /&gt;
		&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Red Bed&#039;,&lt;br /&gt;
		&#039;Red Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Red Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Resin Brick Wall&#039;,&lt;br /&gt;
		&#039;Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Savanna Village Map&#039;,&lt;br /&gt;
		&#039;Scaffolding&#039;,&lt;br /&gt;
		&#039;Sea Lantern&#039;,&lt;br /&gt;
		&#039;Shroomlight&#039;,&lt;br /&gt;
		&#039;Snowy Village Map&#039;,&lt;br /&gt;
		&#039;Spruce Fence Gate&#039;,&lt;br /&gt;
		&#039;Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Stonecutter&#039;,&lt;br /&gt;
		&#039;Structure Void&#039;,&lt;br /&gt;
		&#039;Swamp Explorer Map&#039;,&lt;br /&gt;
		&#039;Taiga Village Map&#039;,&lt;br /&gt;
		&#039;Trapped Chest&#039;,&lt;br /&gt;
		&#039;Trial Explorer Map&#039;,&lt;br /&gt;
		&#039;Tuff Wall&#039;,&lt;br /&gt;
		&#039;Tuff Brick Wall&#039;,&lt;br /&gt;
		&#039;Verdant Froglight&#039;,&lt;br /&gt;
		&#039;Wandering Trader Spawn Egg&#039;,&lt;br /&gt;
		&#039;Warped Fence Gate&#039;,&lt;br /&gt;
		&#039;White Bed&#039;,&lt;br /&gt;
		&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Woodland Explorer Map&#039;,&lt;br /&gt;
		&#039;Yellow Bed&#039;,&lt;br /&gt;
		&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	LCE = {&lt;br /&gt;
		&#039;Shrub&#039;&lt;br /&gt;
	},&lt;br /&gt;
	    SM = {&lt;br /&gt;
    	&#039;Compass&#039;,&lt;br /&gt;
    	&#039;Diamond Axe&#039;,&lt;br /&gt;
    	&#039;Diamond Hoe&#039;,&lt;br /&gt;
    	&#039;Diamond Pickaxe&#039;,&lt;br /&gt;
    	&#039;Diamond Shovel&#039;,&lt;br /&gt;
    	&#039;Diamond Sword&#039;,&lt;br /&gt;
    	&#039;Flint and Steel&#039;,&lt;br /&gt;
    	&#039;Potion of Invisibility&#039;,&lt;br /&gt;
    	&#039;Potion of Leaping&#039;,&lt;br /&gt;
    	&#039;Potion of Swiftness&#039;,&lt;br /&gt;
    	&#039;TNT&#039;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
for edition, items in pairs(editionItems) do&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local name = item .. &#039; &#039; .. edition&lt;br /&gt;
		aliases[name] = { title = item, name = name }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Light blocks --&lt;br /&gt;
for level = 0, 15 do&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level] = { title = &amp;quot;&amp;amp;dLight&amp;quot;, name = &amp;quot;Light &amp;quot; .. level }&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot;] = { title = &amp;quot;Light&amp;quot;, name = &amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Pottery Sherds --&lt;br /&gt;
local pottery_sherds = { &lt;br /&gt;
	{ &#039;Angler&#039; },&lt;br /&gt;
	{ &#039;Arms Up&#039; },&lt;br /&gt;
	{ &#039;Archer&#039; },&lt;br /&gt;
	{ &#039;Blade&#039; },&lt;br /&gt;
	{ &#039;Brewer&#039; },&lt;br /&gt;
	{ &#039;Burn&#039; },&lt;br /&gt;
	{ &#039;Danger&#039; },&lt;br /&gt;
	{ &#039;Explorer&#039; },&lt;br /&gt;
	{ &#039;Flow&#039; },&lt;br /&gt;
	{ &#039;Friend&#039; },&lt;br /&gt;
	{ &#039;Guster&#039; },&lt;br /&gt;
	{ &#039;Heart&#039; },&lt;br /&gt;
	{ &#039;Heartbreak&#039; },&lt;br /&gt;
	{ &#039;Howl&#039; },&lt;br /&gt;
	{ &#039;Miner&#039; },&lt;br /&gt;
	{ &#039;Mourner&#039; },&lt;br /&gt;
	{ &#039;Plenty&#039; },&lt;br /&gt;
	{ &#039;Prize&#039; },&lt;br /&gt;
	{ &#039;Scrape&#039; },&lt;br /&gt;
	{ &#039;Sheaf&#039; },&lt;br /&gt;
	{ &#039;Shelter&#039; },&lt;br /&gt;
	{ &#039;Skull&#039; },&lt;br /&gt;
	{ &#039;Snort&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local potterySherdAliases = {}&lt;br /&gt;
for _, pottery_sherd in ipairs(pottery_sherds) do&lt;br /&gt;
	local name = pottery_sherd[1] .. &#039; Pottery Sherd&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039; .. name , name = name }&lt;br /&gt;
	table.insert(potterySherdAliases, aliases[name])&lt;br /&gt;
end&lt;br /&gt;
table.insert(potterySherdAliases, &#039;Brick&#039;)&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Pottery Sherd&#039;] = potterySherdAliases&lt;br /&gt;
&lt;br /&gt;
-- Smithing Templates --&lt;br /&gt;
local smithing_templates = {&lt;br /&gt;
	{ &#039;Netherite Upgrade&#039;,    &#039;Diamond Equipment&#039;, &#039;Netherite Ingot&#039;,  &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Bolt Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Coast Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Dune Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Eye Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Flow Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Host Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Raiser Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Rib Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Sentry Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Shaper Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Silence Armor Trim&#039;,   &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;d&#039; },&lt;br /&gt;
	{ &#039;Snout Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Spire Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Tide Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Vex Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Ward Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Wayfinder Armor Trim&#039;, &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wild Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
local smithing_template_array = {}&lt;br /&gt;
local armor_trims_array = {}&lt;br /&gt;
for _,smithing_template in pairs(smithing_templates) do&lt;br /&gt;
    local rarityColor = smithing_template[4]&lt;br /&gt;
	local current_alias = {&lt;br /&gt;
		title = rarityColor .. smithing_template[1],&lt;br /&gt;
		name = smithing_template[1] .. &#039; Smithing Template&#039;,&lt;br /&gt;
		text = &#039;&amp;amp;7&#039; .. &#039;Smithing Template&#039; .. &#039;//Applies to:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[2] .. &#039;/&amp;amp;7Ingredients:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[3],&lt;br /&gt;
	}&lt;br /&gt;
	aliases[smithing_template[1]] = current_alias&lt;br /&gt;
	aliases[smithing_template[1] .. &#039; Smithing Template&#039;] = current_alias&lt;br /&gt;
	table.insert(smithing_template_array,current_alias)&lt;br /&gt;
	if string.find(smithing_template[1],&#039; Armor Trim$&#039;) then&lt;br /&gt;
		table.insert(armor_trims_array,current_alias)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Matching Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Any Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
&lt;br /&gt;
--- Merge all separate slab collections into one &amp;quot;Any Slab&amp;quot; group&lt;br /&gt;
local slabs = {}&lt;br /&gt;
local trapdoors = {}&lt;br /&gt;
for groupName, entries in pairs(aliases) do&lt;br /&gt;
    if groupName:find(&#039;^Any&#039;) then&lt;br /&gt;
         if groupName:find(&#039;%Slab$&#039;) then&lt;br /&gt;
            for _, v in ipairs(entries) do&lt;br /&gt;
                table.insert(slabs, v)&lt;br /&gt;
            end&lt;br /&gt;
        else end&lt;br /&gt;
        if groupName:find(&#039;%Trapdoor$&#039;) then&lt;br /&gt;
           for _, v in ipairs(entries) do&lt;br /&gt;
               table.insert(trapdoors, v)&lt;br /&gt;
           end&lt;br /&gt;
       else end&lt;br /&gt;
    else end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Slab&#039;] = slabs&lt;br /&gt;
aliases[&#039;Any Trapdoor&#039;] = trapdoors&lt;br /&gt;
&lt;br /&gt;
return aliases&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Decomposer&amp;diff=13226</id>
		<title>Decomposer</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Decomposer&amp;diff=13226"/>
		<updated>2026-09-27T15:53:12Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; {{Infobox multiblock v2&lt;br /&gt;
| name = Decomposer&lt;br /&gt;
| image = Decomposer.png&lt;br /&gt;
| caption = A decomposer covering a 5x5x5 area&lt;br /&gt;
| powerstorage = 75000&lt;br /&gt;
| custom_property_title1 = Destruction range&lt;br /&gt;
| custom_property_value1 = Up to 100x100x100&lt;br /&gt;
| custom_property_title2 = Power consumed per block&lt;br /&gt;
| custom_property_value2 = 10&lt;br /&gt;
| custom_property_title3 = Blocks broken per second&lt;br /&gt;
| custom_property_value3 = 1000&lt;br /&gt;
| resource_title1 = Any Chiseled Block &lt;br /&gt;
| resource_value1 = 0-300&lt;br /&gt;
| resource_title2 = Iron Block&lt;br /&gt;
| resource_value2 = 1&lt;br /&gt;
| resource_title3 = Any Container&lt;br /&gt;
| resource_value3 = 1&lt;br /&gt;
| resource_title4 = Note Block&lt;br /&gt;
| resource_value4 = 1&lt;br /&gt;
| resource_title5 = Any Sign&lt;br /&gt;
| resource_value5 = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Decomposers&#039;&#039;&#039; break down all blocks within a cubic area.&amp;lt;br&amp;gt;&lt;br /&gt;
Decomposers can be detected with the sign text [decomposer].&amp;lt;br&amp;gt;&lt;br /&gt;
Decomposers break all blocks within a cuboid region determined by its &amp;quot;arms&amp;quot;, which extend behind, to the right of, and above the iron block, up to 100 blocks.&amp;lt;br&amp;gt;&lt;br /&gt;
Decomposers input power via their note block.&amp;lt;br&amp;gt;&lt;br /&gt;
Pilotable blocks broken by the decomposer will be collected to its container. Non-pilotable (natural) blocks will be broken but NOT collected. &amp;lt;br&amp;gt;&lt;br /&gt;
Decomposers consume 10 energy per block broken.&amp;lt;br&amp;gt;&lt;br /&gt;
Due to the nature of this multiblock&#039;s construction, it cannot be placed on ships.&amp;lt;br&amp;gt;&lt;br /&gt;
This multiblock requires [[power]] to function.&lt;br /&gt;
&lt;br /&gt;
{{Navbox_multiblocks}}&lt;br /&gt;
[[Category:Machines]]&lt;br /&gt;
[[Category:Multiblocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Oxidized_Chiseled_Copper.webp&amp;diff=13225</id>
		<title>File:Invicon Oxidized Chiseled Copper.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Oxidized_Chiseled_Copper.webp&amp;diff=13225"/>
		<updated>2026-09-27T15:52:48Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Weathered_Chiseled_Copper.webp&amp;diff=13224</id>
		<title>File:Invicon Weathered Chiseled Copper.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Weathered_Chiseled_Copper.webp&amp;diff=13224"/>
		<updated>2026-09-27T15:52:45Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Exposed_Chiseled_Copper.webp&amp;diff=13223</id>
		<title>File:Invicon Exposed Chiseled Copper.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Exposed_Chiseled_Copper.webp&amp;diff=13223"/>
		<updated>2026-09-27T15:52:42Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Copper.webp&amp;diff=13222</id>
		<title>File:Invicon Chiseled Copper.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Copper.webp&amp;diff=13222"/>
		<updated>2026-09-27T15:52:38Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Deepslate.png&amp;diff=13221</id>
		<title>File:Invicon Chiseled Deepslate.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Deepslate.png&amp;diff=13221"/>
		<updated>2026-09-27T15:52:33Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Nether_Bricks.webp&amp;diff=13220</id>
		<title>File:Invicon Chiseled Nether Bricks.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Nether_Bricks.webp&amp;diff=13220"/>
		<updated>2026-09-27T15:52:30Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Polished_Blackstone.png&amp;diff=13219</id>
		<title>File:Invicon Chiseled Polished Blackstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Polished_Blackstone.png&amp;diff=13219"/>
		<updated>2026-09-27T15:52:25Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Quartz_Block.png&amp;diff=13218</id>
		<title>File:Invicon Chiseled Quartz Block.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Quartz_Block.png&amp;diff=13218"/>
		<updated>2026-09-27T15:52:22Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Red_Sandstone.png&amp;diff=13217</id>
		<title>File:Invicon Chiseled Red Sandstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Red_Sandstone.png&amp;diff=13217"/>
		<updated>2026-09-27T15:52:18Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Resin_Bricks.png&amp;diff=13216</id>
		<title>File:Invicon Chiseled Resin Bricks.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Resin_Bricks.png&amp;diff=13216"/>
		<updated>2026-09-27T15:52:14Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Sandstone.png&amp;diff=13215</id>
		<title>File:Invicon Chiseled Sandstone.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Sandstone.png&amp;diff=13215"/>
		<updated>2026-09-27T15:52:11Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Stone_Bricks.png&amp;diff=13214</id>
		<title>File:Invicon Chiseled Stone Bricks.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Stone_Bricks.png&amp;diff=13214"/>
		<updated>2026-09-27T15:52:08Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Tuff.webp&amp;diff=13213</id>
		<title>File:Invicon Chiseled Tuff.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Tuff.webp&amp;diff=13213"/>
		<updated>2026-09-27T15:52:04Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Tuff_Bricks.webp&amp;diff=13212</id>
		<title>File:Invicon Chiseled Tuff Bricks.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Tuff_Bricks.webp&amp;diff=13212"/>
		<updated>2026-09-27T15:52:00Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Sulfur.webp&amp;diff=13211</id>
		<title>File:Invicon Chiseled Sulfur.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Sulfur.webp&amp;diff=13211"/>
		<updated>2026-09-27T15:51:49Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Cinnabar.webp&amp;diff=13210</id>
		<title>File:Invicon Chiseled Cinnabar.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Cinnabar.webp&amp;diff=13210"/>
		<updated>2026-09-27T15:51:41Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Bookshelf.png&amp;diff=13209</id>
		<title>File:Invicon Chiseled Bookshelf.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Chiseled_Bookshelf.png&amp;diff=13209"/>
		<updated>2026-09-27T15:51:35Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13208</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13208"/>
		<updated>2026-09-27T15:49:22Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Sponge===&lt;br /&gt;
&#039;&#039;&#039;Sponge&#039;&#039;&#039; is a common component of machines, and functions as a wire for [[Power]]. Sponge can be produced using a [[Printer]].&lt;br /&gt;
===Note Block===&lt;br /&gt;
&#039;&#039;&#039;Note blocks&#039;&#039;&#039; are a key component in many powered [[machine]]s. They function as inputs for [[Power]].&lt;br /&gt;
===Furnace===&lt;br /&gt;
&#039;&#039;&#039;Furnaces&#039;&#039;&#039; act as storage for ingredients for many machines. The furnace output slot may sometimes contain the result, or a separate inventory. Because of this, furnaces have special pipe rules, only allowing the output slot to be extracted from.  &lt;br /&gt;
===Storage Blocks===&lt;br /&gt;
&#039;&#039;&#039;Miscellaneous storage blocks&#039;&#039;&#039; are used in many multiblocks. They contain input ingredients or results.&lt;br /&gt;
===Crafting Table===&lt;br /&gt;
&#039;&#039;&#039;Crafting Tables&#039;&#039;&#039; act as &amp;quot;extractors&amp;quot; for [[Power]] and [[Item Transport]]. Extractors will remove power or items from their storage, towards containers that can store it.&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Sponge&amp;diff=13207</id>
		<title>Sponge</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Sponge&amp;diff=13207"/>
		<updated>2026-09-27T15:49:04Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Changed redirect target from Printer to Machine Components#Sponge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Sponge]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13206</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13206"/>
		<updated>2026-09-27T15:48:52Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Sponge===&lt;br /&gt;
&#039;&#039;&#039;Sponge&#039;&#039;&#039; is a common component of machines, and functions as a wire for [[Power]].&lt;br /&gt;
===Note Block===&lt;br /&gt;
&#039;&#039;&#039;Note blocks&#039;&#039;&#039; are a key component in many powered [[machine]]s. They function as inputs for [[Power]].&lt;br /&gt;
===Furnace===&lt;br /&gt;
&#039;&#039;&#039;Furnaces&#039;&#039;&#039; act as storage for ingredients for many machines. The furnace output slot may sometimes contain the result, or a separate inventory. Because of this, furnaces have special pipe rules, only allowing the output slot to be extracted from.  &lt;br /&gt;
===Storage Blocks===&lt;br /&gt;
&#039;&#039;&#039;Miscellaneous storage blocks&#039;&#039;&#039; are used in many multiblocks. They contain input ingredients or results.&lt;br /&gt;
===Crafting Table===&lt;br /&gt;
&#039;&#039;&#039;Crafting Tables&#039;&#039;&#039; act as &amp;quot;extractors&amp;quot; for [[Power]] and [[Item Transport]]. Extractors will remove power or items from their storage, towards containers that can store it.&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Decorated_Pot&amp;diff=13205</id>
		<title>Decorated Pot</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Decorated_Pot&amp;diff=13205"/>
		<updated>2026-09-27T15:47:57Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage Blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage Blocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Smoker&amp;diff=13204</id>
		<title>Smoker</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Smoker&amp;diff=13204"/>
		<updated>2026-09-27T15:47:45Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage Blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage Blocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Barrel&amp;diff=13203</id>
		<title>Barrel</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Barrel&amp;diff=13203"/>
		<updated>2026-09-27T15:47:35Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage Blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage Blocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Dropper&amp;diff=13202</id>
		<title>Dropper</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Dropper&amp;diff=13202"/>
		<updated>2026-09-27T15:47:23Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage Blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage Blocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13201</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13201"/>
		<updated>2026-09-27T15:46:26Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Note Block===&lt;br /&gt;
&#039;&#039;&#039;Note blocks&#039;&#039;&#039; are a key component in many powered [[machine]]s. They function as inputs for [[Power]].&lt;br /&gt;
===Furnace===&lt;br /&gt;
&#039;&#039;&#039;Furnaces&#039;&#039;&#039; act as storage for ingredients for many machines. The furnace output slot may sometimes contain the result, or a separate inventory. Because of this, furnaces have special pipe rules, only allowing the output slot to be extracted from.  &lt;br /&gt;
===Storage Blocks===&lt;br /&gt;
&#039;&#039;&#039;Miscellaneous storage blocks&#039;&#039;&#039; are used in many multiblocks. They contain input ingredients or results.&lt;br /&gt;
===Crafting Table===&lt;br /&gt;
&#039;&#039;&#039;Crafting Tables&#039;&#039;&#039; act as &amp;quot;extractors&amp;quot; for [[Power]] and [[Item Transport]]. Extractors will remove power or items from their storage, towards containers that can store it.&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Crafting_Table&amp;diff=13200</id>
		<title>Crafting Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Crafting_Table&amp;diff=13200"/>
		<updated>2026-09-27T15:45:17Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Crafting Table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Crafting Table]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Furnace&amp;diff=13199</id>
		<title>Furnace</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Furnace&amp;diff=13199"/>
		<updated>2026-09-27T15:44:36Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Furnace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Furnace]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Dispenser&amp;diff=13198</id>
		<title>Dispenser</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Dispenser&amp;diff=13198"/>
		<updated>2026-09-27T15:44:08Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage Blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage Blocks]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13197</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13197"/>
		<updated>2026-09-27T15:43:43Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Note Block===&lt;br /&gt;
&#039;&#039;&#039;Note blocks&#039;&#039;&#039; are a key component in many powered [[machine]]s. They function as inputs for [[Power]].&lt;br /&gt;
===Furnace===&lt;br /&gt;
&#039;&#039;&#039;Furnaces&#039;&#039;&#039; act as storage for ingredients for many machines. The furnace output slot may sometimes contain the result, or a separate inventory. Because of this, furnaces have special pipe rules, only allowing the output slot to be extracted from.  &lt;br /&gt;
===Storage Blocks===&lt;br /&gt;
&#039;&#039;&#039;Miscellaneous storage blocks&#039;&#039;&#039; are used in many multiblocks. They contain input ingredients or results.&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Stonecutter&amp;diff=13196</id>
		<title>Stonecutter</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Stonecutter&amp;diff=13196"/>
		<updated>2026-09-27T15:38:27Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Removed redirect to Https://minecraft.wiki/w/Stonecutter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [https://minecraft.wiki/w/Stonecutter]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Stonecutter&amp;diff=13195</id>
		<title>Stonecutter</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Stonecutter&amp;diff=13195"/>
		<updated>2026-09-27T15:37:20Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Https://minecraft.wiki/w/Stonecutter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[https://minecraft.wiki/w/Stonecutter]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13194</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13194"/>
		<updated>2026-09-27T15:33:26Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Note Block===&lt;br /&gt;
&#039;&#039;&#039;Note blocks&#039;&#039;&#039; are a key component in many powered [[machine]]s. They function as inputs for [[Power]].&lt;br /&gt;
===Furnace===&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Note_Block&amp;diff=13193</id>
		<title>Note Block</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Note_Block&amp;diff=13193"/>
		<updated>2026-09-27T15:32:51Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Note Block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Note Block]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Chest&amp;diff=13192</id>
		<title>Chest</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Chest&amp;diff=13192"/>
		<updated>2026-09-27T15:32:20Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Redirected page to Machine Components#Storage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#Redirect [[Machine Components#Storage]]&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13191</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13191"/>
		<updated>2026-09-27T15:31:35Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
==Key Components==&lt;br /&gt;
===Note Block===&lt;br /&gt;
===Furnace===&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13190</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13190"/>
		<updated>2026-09-27T15:30:56Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Key Components&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Note Block&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Furnace&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13189</id>
		<title>Machine Components</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Machine_Components&amp;diff=13189"/>
		<updated>2026-09-27T15:30:38Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Created page with &amp;quot;{{Stub}} Many Minecraft blocks are re-purposed on Horizon&amp;#039;s End to provide functionality to machines.  --Key Components-- ---Note Block--- ---Furnace---&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
Many Minecraft blocks are re-purposed on Horizon&#039;s End to provide functionality to machines.&lt;br /&gt;
&lt;br /&gt;
--Key Components--&lt;br /&gt;
---Note Block---&lt;br /&gt;
---Furnace---&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13188</id>
		<title>Module:Inventory slot/Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13188"/>
		<updated>2026-09-27T15:27:56Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local aliases = {&lt;br /&gt;
	-- Common fuel types for furnace --&lt;br /&gt;
	[&#039;Any fuel&#039;] = { &#039;Coal&#039;, &#039;Charcoal&#039;, { title = &#039;Log&#039;, name = &#039;Oak Log&#039; }, { title = &#039;Overworld Planks&#039;, name = &#039;Oak Planks&#039; }, &#039;Lava Bucket&#039;, &#039;Block of Coal&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- All armor --&lt;br /&gt;
	[&#039;Any leather armor&#039;] = { &#039;Leather Cap&#039;, &#039;Leather Tunic&#039;, &#039;Leather Pants&#039;, &#039;Leather Boots&#039; },&lt;br /&gt;
	[&#039;Any golden armor&#039;] = { &#039;Golden Helmet&#039;, &#039;Golden Chestplate&#039;, &#039;Golden Leggings&#039;, &#039;Golden Boots&#039; },&lt;br /&gt;
	[&#039;Any chainmail armor&#039;] = { &#039;Chainmail Helmet&#039;, &#039;Chainmail Chestplate&#039;, &#039;Chainmail Leggings&#039;, &#039;Chainmail Boots&#039; },&lt;br /&gt;
	[&#039;Any iron armor&#039;] = { &#039;Iron Helmet&#039;, &#039;Iron Chestplate&#039;, &#039;Iron Leggings&#039;, &#039;Iron Boots&#039; },&lt;br /&gt;
	[&#039;Any diamond armor&#039;] = { &#039;Diamond Helmet&#039;, &#039;Diamond Chestplate&#039;, &#039;Diamond Leggings&#039;, &#039;Diamond Boots&#039; },&lt;br /&gt;
	[&#039;Any netherite armor&#039;] = { &#039;Netherite Helmet&#039;, &#039;Netherite Chestplate&#039;, &#039;Netherite Leggings&#039;, &#039;Netherite Boots&#039; },&lt;br /&gt;
&lt;br /&gt;
    -- Stones --&lt;br /&gt;
	[&#039;Any Cobblestone or Blackstone&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039; },&lt;br /&gt;
	[&#039;Any stone-tier block&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039;, &#039;Cobbled Deepslate&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Miscellaeous collections --&lt;br /&gt;
	[&#039;Any leaves&#039;] = { &#039;Oak Leaves&#039;, &#039;Spruce Leaves&#039;, &#039;Birch Leaves&#039;, &#039;Acacia Leaves&#039;, &#039;Jungle Leaves&#039;, &#039;Dark Oak Leaves&#039;, &#039;Mangrove Leaves&#039;, &#039;Cherry Leaves&#039;, &#039;Pale Oak Leaves&#039;, &#039;Azalea Leaves&#039;, &#039;Flowering Azalea Leaves&#039; };&lt;br /&gt;
	[&#039;Any egg&#039;] = { &#039;Egg&#039;, &#039;Blue Egg&#039;, &#039;Brown Egg&#039;};&lt;br /&gt;
	[&#039;Any stairs&#039;] = { &#039;Tuff Stairs&#039;, &#039;Polished Tuff Stairs&#039;, &#039;Tuff Brick Stairs&#039;, &#039;Cut Copper Stairs&#039;, &#039;Exposed Cut Copper Stairs&#039;, &#039;Weathered Cut Copper Stairs&#039;, &#039;Oxidized Cut Copper Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Resin Brick Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Nether Brick Stairs&#039;, &#039;Sandstone Stairs&#039;, &#039;Oak Stairs&#039;, &#039;Spruce Stairs&#039;, &#039;Birch Stairs&#039;, &#039;Jungle Stairs&#039;, &#039;Acacia Stairs&#039;, &#039;Cherry Stairs&#039;, &#039;Dark Oak Stairs&#039;, &#039;Pale Oak Stairs&#039;, &#039;Mangrove Stairs&#039;, &#039;Bamboo Stairs&#039;, &#039;Bamboo Mosaic Stairs&#039;, &#039;Crimson Stairs&#039;, &#039;Warped Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Stone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Smooth Quartz Stairs&#039;, &#039;Granite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039; },&lt;br /&gt;
	[&#039;Any Door&#039;] = {&#039;Oak Door&#039;, &#039;Spruce Door&#039;, &#039;Birch Door&#039;, &#039;Jungle Door&#039;, &#039;Acacia Door&#039;, &#039;Dark Oak Door&#039;, &#039;Mangrove Door&#039;, &#039;Cherry Door&#039;, &#039;Bamboo Door&#039;, &#039;Crimson Door&#039;, &#039;Warped Door&#039;, &#039;Pale Oak Door&#039;, &#039;Iron Door&#039;, &#039;Copper Door&#039;, &#039;Exposed Copper Door&#039;, &#039;Weathered Copper Door&#039;,&#039;Oxidized Copper Door&#039; },&lt;br /&gt;
    [&#039;Any inventory&#039;] = { &#039;Chest&#039;, &#039;Trapped Chest&#039;, &#039;Barrel&#039;, &#039;Furnace&#039;, &#039;Smoker&#039;, &#039;Dispenser&#039;, &#039;Dropper&#039;, &#039;Decorated Pot&#039; },&lt;br /&gt;
  &lt;br /&gt;
    [&#039;Any Chiseled Block&#039;] = {&#039;Chiseled Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Chiseled Deepslate&#039;, &#039;Chiseled Tuff&#039;, &#039;Chiseled Tuff Bricks&#039;, &#039;Chiseled Stone Bricks&#039;, &#039;Chiseled Nether Bricks&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Chiseled Copper&#039;, &#039;Exposed Chiseled Copper&#039;, &#039;Weathered Chiseled Copper&#039;, &#039;Oxidized Chiseled Copper&#039; },&lt;br /&gt;
    [&#039;Any Button&#039;]= {&#039;Oak Button&#039;, &#039;Spruce Button&#039;, &#039;Birch Button&#039;, &#039;Jungle Button&#039;, &#039;Acacia Button&#039;, &#039;Dark Oak Button&#039;, &#039;Mangrove Button&#039;, &#039;Cherry Button&#039;, &#039;Pale Oak Button&#039;, &#039;Bamboo Button&#039;, &#039;Crimson Button&#039;, &#039;Warped Button&#039;},&lt;br /&gt;
--Glass--&lt;br /&gt;
[&#039;Any Glass Pane&#039;] = {&lt;br /&gt;
	&#039;Glass Pane&#039;,&lt;br /&gt;
	&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
},&lt;br /&gt;
[&#039;Any Glass&#039;] = {&lt;br /&gt;
	&#039;Glass&#039;,&lt;br /&gt;
	&#039;White Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Black Stained Glass&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass&#039;,&lt;br /&gt;
	&#039;Red Stained Glass&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass&#039;,&lt;br /&gt;
	&#039;Green Stained Glass&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass&#039;,&lt;br /&gt;
},&lt;br /&gt;
    --Gif fixes, Minecraft.wiki does this with a database but I&#039;m not setting that up--&lt;br /&gt;
    [&#039;Prismarine Wall&#039;]={&#039;Prismarine Wall.gif&#039;},&lt;br /&gt;
    [&#039;Sea Lantern&#039;]={ &#039;Sea Lantern.gif&#039; },&lt;br /&gt;
    [&#039;Stonecutter&#039;]={ &#039;Stonecutter.gif&#039; },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    --USE THIS FOR HE RELATED BLOCK TYPES--&lt;br /&gt;
    -- Misc HE--&lt;br /&gt;
    [&#039;Any Thruster Block&#039;]={&#039;Sea Lantern.gif&#039;, &#039;Glowstone&#039;, &#039;Shroomlight&#039;, &#039;Ochre Froglight&#039;, &#039;Verdant Froglight&#039;, &#039;Pearlescent Froglight&#039;, &#039;Redstone Lamp&#039;},&lt;br /&gt;
    [&#039;Any Normal Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Diamond Block&#039;},&lt;br /&gt;
    [&#039;Any Special Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Diamond Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
    [&#039;Any Secondary Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- Display names --&lt;br /&gt;
	[&#039;Broken Elytra&#039;] = { title = &#039;&amp;amp;dElytra&#039;, name = &#039;Broken Elytra&#039; },&lt;br /&gt;
	[&#039;Button&#039;] = { title = &#039;Button&#039;, name = &#039;Stone Button&#039;},&lt;br /&gt;
	[&#039;Wooden Button&#039;] = { title = &#039;Button&#039;, name = &#039;Oak Button&#039;},&lt;br /&gt;
	[&#039;Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Ominous Banner&#039;] = { title = &#039;&amp;amp;6&amp;amp;oOminous Banner&#039;, name = &#039;Ominous Banner&#039;, text = &lt;br /&gt;
		&#039;&amp;amp;7Cyan Lozenge/&amp;amp;7Light Gray Base/&amp;amp;7Gray Pale/&amp;amp;7Light Gray Bordure/&amp;amp;7Black Fess/&amp;amp;7Light Gray Per Fess&#039;},&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Basic&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Basic&#039; },&lt;br /&gt;
    [&#039;Power Hoe Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Basic&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Enhanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Advanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Advanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Advanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Battery A&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;cA &amp;amp;9Battery&#039;, name = &#039;Battery A&#039; },&lt;br /&gt;
    [&#039;Battery M&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;aM &amp;amp;9Battery&#039;, name = &#039;Battery M&#039; },&lt;br /&gt;
    [&#039;Battery G&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;6G &amp;amp;9Battery&#039;, name = &#039;Battery G&#039; },&lt;br /&gt;
&lt;br /&gt;
	[&#039;Half Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Half Filled Bundle&#039; },&lt;br /&gt;
	[&#039;Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Filled Bundle&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Empty display name --&lt;br /&gt;
	[&#039;debug_fourj_item&#039;] = { title = &#039;\226\128\140&#039;, name = &#039;debug_fourj_item&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Equipment with custom rarity --&lt;br /&gt;
	[&#039;Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Damaged Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Trident BE&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;9 +8 Attack Damage&#039;},&lt;br /&gt;
	[&#039;Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Damaged Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Mace BE&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;9 +5 Attack Damage&#039;},&lt;br /&gt;
	[&amp;quot;Damaged Elytra&amp;quot;] = { title = &amp;quot;&amp;amp;dElytra&amp;quot;, name = &amp;quot;Damaged Elytra&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Boots&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Boots&amp;quot;, name = &amp;quot;Damaged Chainmail Boots&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Chestplate&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Chestplate&amp;quot;, name = &amp;quot;Damaged Chainmail Chestplate&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Helmet&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Helmet&amp;quot;, name = &amp;quot;Damaged Chainmail Helmet&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Leggings&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Leggings&amp;quot;, name = &amp;quot;Damaged Chainmail Leggings&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
	-- Ominous Bottles --&lt;br /&gt;
    [&#039;Ominous Bottle&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle II&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen II (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle III&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen III (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle IV&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen IV (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle V&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen V (01:40:00)&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Bedrock and Education Edition display names --&lt;br /&gt;
	[&#039;Buried Treasure Map BE&#039;] = { title = &#039;Treasure Map&#039;, name = &#039;Buried Treasure Map BE&#039; },&lt;br /&gt;
	[&#039;Elytra Wings&#039;] = { title = &#039;Elytra Wings&#039;, name = &#039;Elytra&#039; },&lt;br /&gt;
	[&#039;Glowing Obsidian&#039;] = { title = &#039;tile.glowingobsidian.name&#039;, name = &#039;Glowing Obsidian&#039; },&lt;br /&gt;
	[&#039;Map (no markers)&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;cNo&#039; },&lt;br /&gt;
	[&#039;Locator Map&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;aYes&#039; },&lt;br /&gt;
	[&#039;Shrub BE&#039;] = { title = &#039;Fern&#039;, name = &#039;Short Grass&#039; },&lt;br /&gt;
	[&#039;Unknown&#039;] = { title = &#039;Unknown&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update&#039;] = { title = &#039;tile.info_update.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update2&#039;] = { title = &#039;tile.info_update2.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;reserved6&#039;] = { title = &#039;tile.reserved6.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;Smooth Purpur&#039;] = { title = &#039;tile.deprecated_purpur_block_2.name&#039;, name = &#039;Smooth Purpur&#039; },&lt;br /&gt;
	[&#039;Beacon BE&#039;] = { title = &#039;&amp;amp;bBeacon&#039;, name = &#039;Beacon BE&#039; },&lt;br /&gt;
	[&#039;Conduit BE&#039;] = { title = &#039;&amp;amp;eConduit&#039;, name = &#039;Conduit BE&#039; },&lt;br /&gt;
	[&#039;Dragon Egg BE&#039;] = { title = &#039;&amp;amp;dDragon Egg&#039;, name = &#039;Dragon Egg BE&#039; },&lt;br /&gt;
	[&#039;Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;eSkeleton Skull&#039;, name = &#039;Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Wither Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;bWither Skeleton Skull&#039;, name = &#039;Wither Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Zombie Head BE&#039;] = { title = &#039;&amp;amp;eZombie Head&#039;, name = &#039;Zombie Head BE&#039; },&lt;br /&gt;
	[&#039;Player Head BE&#039;] = { title = &#039;&amp;amp;ePlayer Head&#039;, name = &#039;Player Head BE&#039; },&lt;br /&gt;
	[&#039;Creeper Head BE&#039;] = { title = &#039;&amp;amp;eCreeper Head&#039;, name = &#039;Creeper Head BE&#039; },&lt;br /&gt;
	[&#039;Dragon Head BE&#039;] = { title = &#039;&amp;amp;dDragon Head&#039;, name = &#039;Dragon Head BE&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Chemistry --&lt;br /&gt;
	[&#039;Lead (element)&#039;] = { title = &#039;Lead&#039;, name = &#039;Lead (element)&#039; },&lt;br /&gt;
	[&#039;Water (compound)&#039;] = { title = &#039;Water&#039;, name = &#039;Water (compound)&#039; },&lt;br /&gt;
	[&#039;Chloride&#039;] = { &#039;Calcium Chloride&#039;, &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Sparkler&#039;] = { &#039;Orange Sparkler&#039;, &#039;Blue Sparkler&#039;, &#039;Red Sparkler&#039;, &#039;Purple Sparkler&#039;, &#039;Green Sparkler&#039; },&lt;br /&gt;
	[&#039;Matching Chloride&#039;] = { &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Matching Colored Torch&#039;] = { &#039;Blue Torch&#039;, &#039;Red Torch&#039;, &#039;Purple Torch&#039;, &#039;Green Torch&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- April Fools&#039; Day jokes --&lt;br /&gt;
	[&#039;New Thing Banner Pattern&#039;] = { title = &#039;&amp;amp;dBanner Pattern&#039;, name = &#039;New Thing Banner Pattern&#039;, text = &#039;&amp;amp;7New Thing&#039;},&lt;br /&gt;
	-- Note: These can&#039;t use this module&#039;s default color handling because potato peels have no white variant but do include the uncolored variant in recipes&lt;br /&gt;
	[&#039;Any Potato Peels&#039;] = { &#039;Potato Peels&#039;, &#039;Light Gray Potato Peels&#039;, &#039;Gray Potato Peels&#039;, &#039;Black Potato Peels&#039;, &#039;Brown Potato Peels&#039;, &#039;Red Potato Peels&#039;, &#039;Orange Potato Peels&#039;, &#039;Yellow Potato Peels&#039;, &#039;Lime Potato Peels&#039;, &#039;Green Potato Peels&#039;, &#039;Cyan Potato Peels&#039;, &#039;Light Blue Potato Peels&#039;, &#039;Blue Potato Peels&#039;, &#039;Purple Potato Peels&#039;, &#039;Magenta Potato Peels&#039;, &#039;Pink Potato Peels&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- Old textures --&lt;br /&gt;
	[&#039;Apple Revision 1&#039;] = { title = &#039;Apple&#039;, name = &#039;Apple Revision 1&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Stairs&#039;] = aliases[&#039;Any stairs&#039;]&lt;br /&gt;
aliases[&#039;Any Inventory&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Container&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Tier Block&#039;] = aliases[&#039;Any Normal Tier Block&#039;]&lt;br /&gt;
aliases[&#039;Any Harvester Tier Block&#039;] = aliases[&#039;Any Secondary Tier Block&#039;]&lt;br /&gt;
&lt;br /&gt;
-- Tooltip colors --&lt;br /&gt;
local yellowTooltips = {&lt;br /&gt;
    &#039;Bottle o\&#039; Enchanting&#039;,&lt;br /&gt;
    &#039;Chainmail Boots&#039;,&lt;br /&gt;
    &#039;Chainmail Chestplate&#039;,&lt;br /&gt;
    &#039;Chainmail Helmet&#039;,&lt;br /&gt;
    &#039;Chainmail Leggings&#039;,&lt;br /&gt;
    &#039;Conduit&#039;,&lt;br /&gt;
    &#039;Creeper Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Creeper Head&#039;,&lt;br /&gt;
    &#039;Disc Fragment 5&#039;,&lt;br /&gt;
    &#039;Dragon\&#039;s Breath&#039;,&lt;br /&gt;
    &#039;Echo Shard&#039;,&lt;br /&gt;
    &#039;Enchanted Book&#039;,&lt;br /&gt;
    &#039;Goat Horn&#039;,&lt;br /&gt;
    &#039;Heart of the Sea&#039;,&lt;br /&gt;
    &#039;Nautilus Shell&#039;,&lt;br /&gt;
    &#039;Ominous Banner&#039;,&lt;br /&gt;
    &#039;Piglin Head&#039;,&lt;br /&gt;
    &#039;Player Head&#039;,&lt;br /&gt;
    &#039;Recovery Compass&#039;,&lt;br /&gt;
    &#039;Skeleton Skull&#039;,&lt;br /&gt;
    &#039;Sniffer Egg&#039;,&lt;br /&gt;
    &#039;Snout Banner Pattern&#039;,&lt;br /&gt;
    &#039;Totem of Undying&#039;,&lt;br /&gt;
    &#039;Zombie Head&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( yellowTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local aquaTooltips = {&lt;br /&gt;
	&#039;Beacon&#039;,&lt;br /&gt;
	&#039;Enchanted Golden Apple&#039;,&lt;br /&gt;
    &#039;Flow Banner Pattern&#039;,&lt;br /&gt;
	&#039;Guster Banner Pattern&#039;,&lt;br /&gt;
	&#039;Nether Star&#039;,&lt;br /&gt;
    &#039;Skull Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Thing Banner Pattern&#039;,&lt;br /&gt;
    &#039;Wither Skeleton Skull&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( aquaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;b&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local magentaTooltips = {&lt;br /&gt;
	&#039;Barrier&#039;,&lt;br /&gt;
	&#039;Command Block&#039;,&lt;br /&gt;
	&#039;Chain Command Block&#039;,&lt;br /&gt;
	&#039;Debug Stick&#039;,&lt;br /&gt;
	&#039;Dragon Egg&#039;,&lt;br /&gt;
	&#039;Dragon Head&#039;,&lt;br /&gt;
	&#039;Elytra&#039;,&lt;br /&gt;
	&#039;Heavy Core&#039;,&lt;br /&gt;
	&#039;Jigsaw Block&#039;,&lt;br /&gt;
	&#039;Knowledge Book&#039;,&lt;br /&gt;
	&#039;Light&#039;,&lt;br /&gt;
	&#039;Repeating Command Block&#039;,&lt;br /&gt;
	&#039;Structure Block&#039;,&lt;br /&gt;
	&#039;Structure Void&#039;,&lt;br /&gt;
	&#039;Test Block&#039;,&lt;br /&gt;
	&#039;Test Instance Block&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( magentaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;d&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons --&lt;br /&gt;
local tools = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5, 1.6 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6, 1.6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7, 1.6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8, 1.6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3, 1.2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4, 1.2 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5, 1.2 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6, 1.2 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 7, 0.8 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 9, 0.8 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 9, 0.9 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 7, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 9, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 10, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 3.5, 1 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 4.5, 1 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 5.5, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 6.5, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 1, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 1, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 1, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 1, 4 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local materialGroups = {}&lt;br /&gt;
local toolGroups = {}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( tools ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	local damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
	local text = &#039;/&amp;amp;7When in Main Hand:/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[3] .. &#039; Attack Damage/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[4] .. &#039; Attack Speed&#039;&lt;br /&gt;
	aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
	aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
	&lt;br /&gt;
	local materialGroup = toolProps[1]:lower()&lt;br /&gt;
	local toolGroup = toolProps[2]:lower()&lt;br /&gt;
	&lt;br /&gt;
	if toolProps[2] ~= &#039;Sword&#039; then&lt;br /&gt;
		if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end&lt;br /&gt;
		table.insert( materialGroups[materialGroup], aliases[aliasName] )&lt;br /&gt;
	end&lt;br /&gt;
	if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end&lt;br /&gt;
	table.insert( toolGroups[toolGroup], aliases[aliasName] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for materialGroup, items in pairs( materialGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. materialGroup .. &#039; tools&#039;] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for toolGroup, items in pairs( toolGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. toolGroup] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons in Bedrock Edition --&lt;br /&gt;
local toolsBE = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 4 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 5 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 7 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 5 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 6 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( toolsBE ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	aliases[aliasName .. &#039; BE&#039;] = { title = aliasName, name = aliasName, text = &#039;/&amp;amp;9+&#039; .. toolProps[3] .. &#039; Attack Damage&#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Armor tooltips --&lt;br /&gt;
local head = {&lt;br /&gt;
	{&#039;Leather Cap&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Iron Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond Helmet&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Helmet&#039;, 3, 3, 1 },&lt;br /&gt;
	{&#039;Turtle Shell&#039;, 2 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local body = {&lt;br /&gt;
	{&#039;Leather Tunic&#039;, 3 },&lt;br /&gt;
	{&#039;Chainmail Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Iron Chestplate&#039;, 6 },&lt;br /&gt;
	{&#039;Golden Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Diamond Chestplate&#039;, 8, 2 },&lt;br /&gt;
	{&#039;Netherite Chestplate&#039;, 8, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legs = {&lt;br /&gt;
	{&#039;Leather Pants&#039;, 2 },&lt;br /&gt;
	{&#039;Chainmail Leggings&#039;, 4 },&lt;br /&gt;
	{&#039;Iron Leggings&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Leggings&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond Leggings&#039;, 6, 2 },&lt;br /&gt;
	{&#039;Netherite Leggings&#039;, 6, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local feet = {&lt;br /&gt;
	{&#039;Leather Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Iron Boots&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond Boots&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Boots&#039;, 3, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local equipped = {&lt;br /&gt;
	{&#039;Leather Horse Armor&#039;, 3 },&lt;br /&gt;
	{&#039;Iron Horse Armor&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Horse Armor&#039;, 7 },&lt;br /&gt;
	{&#039;Diamond Horse Armor&#039;, 11, 2 },&lt;br /&gt;
	{&#039;Wolf Armor&#039;, 11 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local bodyParts = {&lt;br /&gt;
    {head, &amp;quot;on Head&amp;quot;},&lt;br /&gt;
    {body, &amp;quot;on Body&amp;quot;},&lt;br /&gt;
    {legs, &amp;quot;on Legs&amp;quot;},&lt;br /&gt;
    {feet, &amp;quot;on Feet&amp;quot;},&lt;br /&gt;
    {equipped, &amp;quot;equipped&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local trimMaterial = {&lt;br /&gt;
	{&#039;Quartz&#039;, &#039;&amp;amp;h&#039;},&lt;br /&gt;
	{&#039;Iron&#039;, &#039;&amp;amp;i&#039;},&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;&amp;amp;j&#039;},&lt;br /&gt;
	{&#039;Redstone&#039;, &#039;&amp;amp;y&#039;},&lt;br /&gt;
	{&#039;Copper&#039;, &#039;&amp;amp;z&#039;},&lt;br /&gt;
	{&#039;Gold&#039;, &#039;&amp;amp;p&#039;},&lt;br /&gt;
	{&#039;Emerald&#039;, &#039;&amp;amp;q&#039;},&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;&amp;amp;s&#039;},&lt;br /&gt;
	{&#039;Lapis&#039;, &#039;&amp;amp;t&#039;},&lt;br /&gt;
	{&#039;Amethyst&#039;, &#039;&amp;amp;u&#039;},&lt;br /&gt;
	{&#039;Resin&#039;, &#039;&amp;amp;v&#039;},&lt;br /&gt;
	{&#039;Amber&#039;, &#039;&amp;amp;6&#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, bodyPart in ipairs(bodyParts) do&lt;br /&gt;
    local items = bodyPart[1]&lt;br /&gt;
    local bodyPartName = bodyPart[2]&lt;br /&gt;
    &lt;br /&gt;
    for _, toolProps in ipairs(items) do&lt;br /&gt;
        local aliasName = toolProps[1]&lt;br /&gt;
        local damagedName&lt;br /&gt;
        if string.find(aliasName, &amp;quot;Horse Armor&amp;quot;) then&lt;br /&gt;
            damagedName = aliasName &lt;br /&gt;
        else&lt;br /&gt;
            damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
        end     &lt;br /&gt;
        local text = &#039;/&amp;amp;7When &#039; .. bodyPartName .. &#039;:/&amp;amp;9+&#039; .. toolProps[2] .. &#039; Armor/&#039;&lt;br /&gt;
        if toolProps[3] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[3] .. &#039; Armor Toughness/&#039;&lt;br /&gt;
        end&lt;br /&gt;
        if toolProps[4] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[4] .. &#039; Knockback Resistance&#039;&lt;br /&gt;
        end&lt;br /&gt;
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
        aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
        if bodyPartName ~= &amp;quot;equipped&amp;quot; then&lt;br /&gt;
			for _, materialType in ipairs( trimMaterial ) do&lt;br /&gt;
	        	local trimName = materialType[1] .. &#039; Trim &#039; .. aliasName&lt;br /&gt;
				local trimText = &#039;&amp;amp;7Upgrade:/&amp;amp;#160;&#039; .. materialType[2] .. &#039;Armor Trim/&amp;amp;#160;&#039; .. materialType[1] .. &#039; Material/&#039;&lt;br /&gt;
				aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Lists of item variants --&lt;br /&gt;
local itemVariants = {&lt;br /&gt;
	[&#039;Small Flower&#039;] = { &#039;Oxeye Daisy&#039;, &#039;Cornflower&#039;, &#039;Lily of the Valley&#039;, &#039;Wither Rose&#039;, &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039;, &#039;Azure Bluet&#039;, &#039;Allium&#039;, &#039;Blue Orchid&#039;, &#039;Poppy&#039;, &#039;Dandelion&#039;, &#039;Torchflower&#039;, &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Eyeblossom&#039;] = { &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Mushroom&#039;] = { &#039;Red Mushroom&#039;, &#039;Brown Mushroom&#039; },&lt;br /&gt;
	[&#039;Quartz Block&#039;] = { &#039;Block of Quartz&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Quartz Pillar&#039; },&lt;br /&gt;
	[&#039;Red Sandstone&#039;] = { &#039;Red Sandstone&#039;, &#039;Cut Red Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Smooth Red Sandstone&#039; },&lt;br /&gt;
	[&#039;Sandstone&#039;] = { &#039;Sandstone&#039;, &#039;Cut Sandstone&#039;, &#039;Chiseled Sandstone&#039;, &#039;Smooth Sandstone&#039; },&lt;br /&gt;
	[&#039;Stone Bricks&#039;] = { &#039;Stone Bricks&#039;, &#039;Mossy Stone Bricks&#039;, &#039;Cracked Stone Bricks&#039;, &#039;Chiseled Stone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Slab&#039;] = { &#039;Stone Slab&#039;, &#039;Cobblestone Slab&#039;, &#039;Mossy Cobblestone Slab&#039;, &#039;Smooth Stone Slab&#039;, &#039;Stone Brick Slab&#039;, &#039;Mossy Stone Brick Slab&#039;, &lt;br /&gt;
		&#039;Granite Slab&#039;, &#039;Polished Granite Slab&#039;, &#039;Diorite Slab&#039;, &#039;Polished Diorite Slab&#039;, &#039;Andesite Slab&#039;, &#039;Polished Andesite Slab&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Slab&#039;, &#039;Polished Deepslate Slab&#039;, &#039;Deepslate Brick Slab&#039;, &#039;Deepslate Tile Slab&#039;, &#039;Brick Slab&#039;, &#039;Mud Brick Slab&#039;, &#039;Resin Brick Slab&#039;,&lt;br /&gt;
		&#039;Sandstone Slab&#039;, &#039;Smooth Sandstone Slab&#039;, &#039;Cut Sandstone Slab&#039;, &#039;Red Sandstone Slab&#039;, &#039;Smooth Red Sandstone Slab&#039;, &#039;Cut Red Sandstone Slab&#039;, &#039;Prismarine Slab&#039;, &#039;Prismarine Brick Slab&#039;, &#039;Dark Prismarine Slab&#039;, &lt;br /&gt;
		&#039;Nether Brick Slab&#039;, &#039;Red Nether Brick Slab&#039;, &#039;Blackstone Slab&#039;, &#039;Polished Blackstone Slab&#039;, &#039;Polished Blackstone Brick Slab&#039;, &#039;End Stone Brick Slab&#039;, &#039;Purpur Slab&#039;, &#039;Quartz Slab&#039;, &#039;Smooth Quartz Slab&#039;, &#039;Petrified Oak Slab&#039; },&lt;br /&gt;
	[&#039;Stone Stairs&#039;] = { &#039;Stone Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &lt;br /&gt;
		&#039;Granite Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Resin Brick Stairs&#039;, &lt;br /&gt;
		&#039;Sandstone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &lt;br /&gt;
		&#039;Nether Brick Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Smooth Quartz Stairs&#039; },&lt;br /&gt;
	[&#039;Wall&#039;] = { &#039;Cobblestone Wall&#039;, &#039;Mossy Cobblestone Wall&#039;, &#039;Stone Brick Wall&#039;, &#039;Mossy Stone Brick Wall&#039;, &#039;Granite Wall&#039;, &#039;Diorite Wall&#039;, &#039;Andesite Wall&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;, &#039;Polished Deepslate Wall&#039;, &#039;Deepslate Brick Wall&#039;, &#039;Deepslate Tile Wall&#039;, &#039;Brick Wall&#039;, &#039;Mud Brick Wall&#039;, &#039;Resin Brick Wall&#039;, &#039;Sandstone Wall&#039;, &#039;Red Sandstone Wall&#039;, &#039;Prismarine Wall&#039;, &lt;br /&gt;
		&#039;Nether Brick Wall&#039;, &#039;Red Nether Brick Wall&#039;, &#039;Blackstone Wall&#039;, &#039;Polished Blackstone Wall&#039;, &#039;Polished Blackstone Brick Wall&#039;, &#039;End Stone Brick Wall&#039; },&lt;br /&gt;
	[&#039;Purpur Block&#039;] = { &#039;Purpur Block&#039;, &#039;Purpur Pillar&#039; },&lt;br /&gt;
	[&#039;Stone&#039;] = { &#039;Stone&#039;, &#039;Andesite&#039;, &#039;Granite&#039;, &#039;Diorite&#039;, &#039;Polished Andesite&#039;, &#039;Polished Granite&#039;, &#039;Polished Diorite&#039; },&lt;br /&gt;
	[&#039;Resin Block&#039;] = { &#039;Block of Resin&#039;, &#039;Resin Bricks&#039;, &#039;Chiseled Resin Bricks&#039; },&lt;br /&gt;
	[&#039;Tulip&#039;] = { &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039; },&lt;br /&gt;
	[&#039;Prismarine&#039;] = { &#039;Prismarine&#039;, &#039;Prismarine Bricks&#039;, &#039;Dark Prismarine&#039; },&lt;br /&gt;
	[&#039;Ore&#039;] = { &#039;Coal Ore&#039;, &#039;Iron Ore&#039;, &#039;Gold Ore&#039;, &#039;Lapis Lazuli Ore&#039;, &#039;Redstone Ore&#039;, &#039;Emerald Ore&#039;, &#039;Diamond Ore&#039;, &#039;Nether Quartz Ore&#039;, &#039;Nether Gold Ore&#039;, &#039;Deepslate Coal Ore&#039;, &lt;br /&gt;
		&#039;Deepslate Copper Ore&#039;, &#039;Deepslate Emerald Ore&#039;, &#039;Deepslate Iron Ore&#039;, &#039;Deepslate Gold Ore&#039;, &#039;Deepslate Lapis Lazuli Ore&#039;, &#039;Deepslate Redstone Ore&#039;, &#039;Deepslate Diamond Ore&#039;},&lt;br /&gt;
	[&#039;Dead Coral Block&#039;] = { &#039;Dead Tube Coral Block&#039;, &#039;Dead Brain Coral Block&#039;, &#039;Dead Bubble Coral Block&#039;, &#039;Dead Fire Coral Block&#039;, &#039;Dead Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Coral Block&#039;] = { &#039;Tube Coral Block&#039;, &#039;Brain Coral Block&#039;, &#039;Bubble Coral Block&#039;, &#039;Fire Coral Block&#039;, &#039;Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Dead Coral&#039;] = { &#039;Dead Tube Coral&#039;, &#039;Dead Brain Coral&#039;, &#039;Dead Bubble Coral&#039;, &#039;Dead Fire Coral&#039;, &#039;Dead Horn Coral&#039; },&lt;br /&gt;
	[&#039;Dead Coral Fan&#039;] = { &#039;Dead Tube Coral Fan&#039;, &#039;Dead Brain Coral Fan&#039;, &#039;Dead Bubble Coral Fan&#039;, &#039;Dead Fire Coral Fan&#039;, &#039;Dead Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Coral&#039;] = { &#039;Tube Coral&#039;, &#039;Brain Coral&#039;, &#039;Bubble Coral&#039;, &#039;Fire Coral&#039;, &#039;Horn Coral&#039; },&lt;br /&gt;
	[&#039;Coral Fan&#039;] = { &#039;Tube Coral Fan&#039;, &#039;Brain Coral Fan&#039;, &#039;Bubble Coral Fan&#039;, &#039;Fire Coral Fan&#039;, &#039;Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Torch&#039;] = { &#039;Torch&#039;, &#039;Soul Torch&#039; },&lt;br /&gt;
	[&#039;Lantern&#039;] = { &#039;Lantern&#039;, &#039;Soul Lantern&#039; },&lt;br /&gt;
	[&#039;Fungus&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Fungi&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Roots&#039;] = { &#039;Crimson Roots&#039;, &#039;Warped Roots&#039; },&lt;br /&gt;
	[&#039;Nylium&#039;] = { &#039;Crimson Nylium&#039;, &#039;Warped Nylium&#039; },&lt;br /&gt;
	[&#039;Soul Sand&#039;] = { &#039;Soul Sand&#039;, &#039;Soul Soil&#039; },&lt;br /&gt;
	[&#039;Campfire&#039;] = { &#039;Campfire&#039;, &#039;Soul Campfire&#039; },&lt;br /&gt;
	[&#039;Blackstone&#039;] = { &#039;Blackstone&#039;, &#039;Polished Blackstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Polished Blackstone Bricks&#039;, &#039;Cracked Polished Blackstone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Button&#039;] = { &#039;Stone Button&#039;, &#039;Polished Blackstone Button&#039; },&lt;br /&gt;
	[&#039;Stone Pressure Plate&#039;] = { &#039;Stone Pressure Plate&#039;, &#039;Polished Blackstone Pressure Plate&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Copper --&lt;br /&gt;
local copperstuff = {&lt;br /&gt;
	&#039;Block of Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper Stairs&#039;,&lt;br /&gt;
	&#039;Cut Copper Slab&#039;,&lt;br /&gt;
	&#039;Chiseled Copper&#039;,&lt;br /&gt;
	&#039;Copper Grate&#039;,&lt;br /&gt;
	&#039;Copper Bulb&#039;,&lt;br /&gt;
	&#039;Copper Door&#039;,&lt;br /&gt;
	&#039;Copper Trapdoor&#039;,&lt;br /&gt;
}&lt;br /&gt;
local coppervariants = { &#039;&#039;, &#039;Exposed &#039;, &#039;Weathered &#039;, &#039;Oxidized &#039; }&lt;br /&gt;
for _, copper in ipairs( copperstuff ) do&lt;br /&gt;
	itemVariants[&#039;Unwaxed &#039; .. copper] = {}&lt;br /&gt;
	itemVariants[&#039;Waxed &#039; .. copper] = {}&lt;br /&gt;
	for _, coppervariant in ipairs( coppervariants ) do&lt;br /&gt;
		local name = coppervariant .. copper&lt;br /&gt;
		if copper == &#039;Block of Copper&#039; and coppervariant ~= &#039;&#039; then&lt;br /&gt;
			name = coppervariant .. &#039;Copper&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( itemVariants[&#039;Unwaxed &#039; .. copper], name )&lt;br /&gt;
		table.insert( itemVariants[&#039;Waxed &#039; .. copper], name )&lt;br /&gt;
	end&lt;br /&gt;
	itemVariants[copper] = {}&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Unwaxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Waxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for aliasName, aliasItems in pairs( itemVariants ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. aliasName] = aliasItems&lt;br /&gt;
	aliases[&#039;Matching &#039; .. aliasName] = aliasItems&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Discs --&lt;br /&gt;
local discs = { &lt;br /&gt;
	{ &#039;13&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Cat&#039;,                 &#039;C418&#039;,         &#039;cat&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Blocks&#039;,              &#039;C418&#039;,         &#039;blocks&#039;,    &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Chirp&#039;,               &#039;C418&#039;,         &#039;chirp&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Far&#039;,                 &#039;C418&#039;,         &#039;far&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mall&#039;,                &#039;C418&#039;,         &#039;mall&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mellohi&#039;,             &#039;C418&#039;,         &#039;mellohi&#039;,   &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Stal&#039;,                &#039;C418&#039;,         &#039;stal&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Strad&#039;,               &#039;C418&#039;,         &#039;strad&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Ward&#039;,                &#039;C418&#039;,         &#039;ward&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;11&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wait&#039;,                &#039;C418&#039;,         &#039;wait&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Otherside&#039;,           &#039;Lena Raine&#039;,   &#039;otherside&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Pigstep&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;5&#039;,                   &#039;Samuel Åberg&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Relic&#039;,               &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Precipice&#039;,           &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Creator&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Creator (Music Box)&#039;, &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
}&lt;br /&gt;
for _, disc in ipairs( discs ) do&lt;br /&gt;
    local rarityColor = disc[4]&lt;br /&gt;
	local name = &#039;Music Disc &#039; .. disc[1]&lt;br /&gt;
	local artist = disc[2]&lt;br /&gt;
	local trackname = disc[1]&lt;br /&gt;
	if disc[3] ~= &#039;&#039; then&lt;br /&gt;
		trackname = disc[3]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = rarityColor .. &#039;Music Disc&#039;, name = name, text = &#039;&amp;amp;7&#039; .. artist .. &#039; - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Disc Fragments --&lt;br /&gt;
local disc_fragments = { &lt;br /&gt;
	{ &#039;5&#039;,    },&lt;br /&gt;
}&lt;br /&gt;
for _, disc_fragment in ipairs( disc_fragments ) do&lt;br /&gt;
	local name = &#039;Disc Fragment &#039; .. disc_fragment[1]&lt;br /&gt;
	local trackname = disc_fragment[1]&lt;br /&gt;
	if disc_fragment[2] ~= nil then&lt;br /&gt;
		trackname = disc_fragment[2]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;eDisc Fragment&#039;, name = name, text = &#039;&amp;amp;7Music Disc - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Paintings --&lt;br /&gt;
local paintings = { &lt;br /&gt;
	{ &#039;Kebab med tre pepperoni&#039;,    &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;de_aztec&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Albanian&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Target Successfully Bombed&#039;, &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Paradisträd&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wasteland&#039;,                  &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Meditative&#039;,                 &#039;Sarah Boeving&#039;,           &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wanderer&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Graham&#039;,                     &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Prairie Ride&#039;,               &#039;Sarah Boeving&#039;,           &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;The Pool&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Bonjour Monsieur Courbet&#039;,   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;sunset_dense&#039;,               &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Seaside&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Creebet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Match&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bust&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The Stage Is Set&#039;,           &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The void&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Skull and Roses&#039;,            &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wither&#039;,                     &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Baroque&#039;,                    &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Humble&#039;,                     &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bouquet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cavebird&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cotán&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Endboss&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Fern&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Owlemons&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Sunflowers&#039;,                 &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Tides&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Backyard&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Pond&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Fighters&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Changing&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Finding&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Lowmist&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Passage&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Mortal Coil&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Kong&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Pointer&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Pigscene&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Skull On Fire&#039;,              &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Unpacked&#039;,                   &#039;Sarah Boeving&#039;,           &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Orb&#039;,                        &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Earth&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wind&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Fire&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Water&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; }&lt;br /&gt;
}&lt;br /&gt;
for _, painting in ipairs( paintings ) do&lt;br /&gt;
	local name = &#039;Painting &#039; .. painting[1]&lt;br /&gt;
	local artist = painting[2]&lt;br /&gt;
	local artwork = painting[1]&lt;br /&gt;
	local size = painting[3]&lt;br /&gt;
	aliases[name] = { title = &#039;Painting&#039;, name = &#039;Painting&#039;, text = &#039;&amp;amp;e&#039; .. artwork .. &#039;/&amp;amp;7&#039; .. artist .. &#039;/&#039; .. &#039;&amp;amp;f&#039; .. size }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Damaged items, note it skips tools, weapons, and armor as they are handled above to add the damage tooltip. --&lt;br /&gt;
-- Items with rarity (such as Mace and Elytra) are hard-coded in the module&#039;s beginning.&lt;br /&gt;
local damagedItems = {&lt;br /&gt;
	&#039;Bow&#039;,&lt;br /&gt;
	&#039;Brush&#039;,&lt;br /&gt;
	&#039;Carrot on a Stick&#039;,&lt;br /&gt;
	&#039;Crossbow&#039;,&lt;br /&gt;
	&#039;Fishing Rod&#039;,&lt;br /&gt;
	&#039;Flint and Steel&#039;,&lt;br /&gt;
	&#039;Shears&#039;,&lt;br /&gt;
	&#039;Shield&#039;&lt;br /&gt;
}&lt;br /&gt;
for _, item in ipairs( damagedItems ) do&lt;br /&gt;
	local name = &#039;Damaged &#039; .. item&lt;br /&gt;
	aliases[name] = { title = item, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Banners and colored items --&lt;br /&gt;
local patterns = {&lt;br /&gt;
	&#039;Base Dexter Canton&#039;,&lt;br /&gt;
	&#039;Base&#039;,&lt;br /&gt;
	&#039;Base Gradient&#039;,&lt;br /&gt;
	&#039;Base Indented&#039;,&lt;br /&gt;
	&#039;Base Sinister Canton&#039;,&lt;br /&gt;
	&#039;Bend&#039;,&lt;br /&gt;
	&#039;Bend Sinister&#039;,&lt;br /&gt;
	&#039;Bordure&#039;,&lt;br /&gt;
	&#039;Bordure Indented&#039;,&lt;br /&gt;
	&#039;Chevron&#039;,&lt;br /&gt;
	&#039;Chief Dexter Canton&#039;,&lt;br /&gt;
	&#039;Chief&#039;,&lt;br /&gt;
	&#039;Chief Indented&#039;,&lt;br /&gt;
	&#039;Chief Sinister Canton&#039;,&lt;br /&gt;
	&#039;Creeper Charge&#039;,&lt;br /&gt;
	&#039;Cross&#039;,&lt;br /&gt;
	&#039;Fess&#039;,&lt;br /&gt;
	&#039;Field Masoned&#039;,&lt;br /&gt;
	&#039;Flow&#039;,&lt;br /&gt;
	&#039;Flower Charge&#039;,&lt;br /&gt;
	&#039;Globe&#039;,&lt;br /&gt;
	&#039;Gradient&#039;,&lt;br /&gt;
	&#039;Guster&#039;,&lt;br /&gt;
	&#039;Inverted Chevron&#039;,&lt;br /&gt;
	&#039;Lozenge&#039;,&lt;br /&gt;
	&#039;Thing&#039;,&lt;br /&gt;
	&#039;Pale&#039;,&lt;br /&gt;
	&#039;Pale Dexter&#039;,&lt;br /&gt;
	&#039;Pale Sinister&#039;,&lt;br /&gt;
	&#039;Paly&#039;,&lt;br /&gt;
	&#039;Per Bend&#039;,&lt;br /&gt;
	&#039;Per Bend Inverted&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister Inverted&#039;,&lt;br /&gt;
	&#039;Per Fess&#039;,&lt;br /&gt;
	&#039;Per Fess Inverted&#039;,&lt;br /&gt;
	&#039;Per Pale&#039;,&lt;br /&gt;
	&#039;Per Pale Inverted&#039;,&lt;br /&gt;
	&#039;Piglin&#039;,&lt;br /&gt;
	&#039;Snout&#039;,&lt;br /&gt;
	&#039;Roundel&#039;,&lt;br /&gt;
	&#039;Saltire&#039;,&lt;br /&gt;
	&#039;Skull Charge&#039;&lt;br /&gt;
}&lt;br /&gt;
local colors = {&lt;br /&gt;
	&#039;White&#039;,&lt;br /&gt;
	&#039;Light Gray&#039;,&lt;br /&gt;
	&#039;Gray&#039;,&lt;br /&gt;
	&#039;Black&#039;,&lt;br /&gt;
	&#039;Brown&#039;,&lt;br /&gt;
	&#039;Red&#039;,&lt;br /&gt;
	&#039;Orange&#039;,&lt;br /&gt;
	&#039;Yellow&#039;,&lt;br /&gt;
	&#039;Lime&#039;,&lt;br /&gt;
	&#039;Green&#039;,&lt;br /&gt;
	&#039;Cyan&#039;,&lt;br /&gt;
	&#039;Light Blue&#039;,&lt;br /&gt;
	&#039;Blue&#039;,&lt;br /&gt;
	&#039;Purple&#039;,&lt;br /&gt;
	&#039;Magenta&#039;,&lt;br /&gt;
	&#039;Pink&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Firework Stars --&lt;br /&gt;
local fireworkStar = {}&lt;br /&gt;
for _, color in ipairs( colors ) do&lt;br /&gt;
	local name = color .. &#039; Firework Star&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;Firework Star&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color }&lt;br /&gt;
	table.insert( fireworkStar, aliases[name] )&lt;br /&gt;
	for _, pattern in ipairs( patterns ) do&lt;br /&gt;
		name = color .. &#039; &#039; .. pattern .. &#039; Banner&#039;&lt;br /&gt;
		aliases[name] = { title = &#039;Banner&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color .. &#039; &#039; .. pattern }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Firework Star&#039;] = fireworkStar&lt;br /&gt;
aliases[&#039;Matching Firework Star&#039;] = fireworkStar&lt;br /&gt;
&lt;br /&gt;
-- Items that use the sixteen colors --&lt;br /&gt;
local coloredItems = {&lt;br /&gt;
	withWhite = {&lt;br /&gt;
		&#039;Balloon&#039;,&lt;br /&gt;
		&#039;Banner&#039;,&lt;br /&gt;
		&#039;Bed&#039;,&lt;br /&gt;
		&#039;Carpet&#039;,&lt;br /&gt;
		&#039;Concrete&#039;,&lt;br /&gt;
		&#039;Concrete Powder&#039;,&lt;br /&gt;
		&#039;Glazed Terracotta&#039;,&lt;br /&gt;
		&#039;Glow Stick&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Shield&#039;,&lt;br /&gt;
		&#039;Shulker Box&#039;,&lt;br /&gt;
		&#039;Stained Glass&#039;,&lt;br /&gt;
		&#039;Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Wool&#039;,&lt;br /&gt;
&lt;br /&gt;
		&#039;$Dyed Bundle&#039;,&lt;br /&gt;
		&#039;$Dyed Candle&#039;,&lt;br /&gt;
		&#039;$Dyed Terracotta&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	noWhite = {&lt;br /&gt;
		&#039;$Dyed Wool&#039;,&lt;br /&gt;
		&#039;$Dyed Bed&#039;,&lt;br /&gt;
		&#039;$Dyed Carpet&#039;,&lt;br /&gt;
		&#039;$Colored Dye&#039;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local coloredBadItems = {&lt;br /&gt;
	[&#039;Light Gray Glow Stick&#039;] = 1,&lt;br /&gt;
	[&#039;Black Glow Stick&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for type, items in pairs( coloredItems ) do&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local coloredItemAliases = {}&lt;br /&gt;
		local defaultItemAliases&lt;br /&gt;
&lt;br /&gt;
		if item:find( &#039;%$[^1]&#039; ) then&lt;br /&gt;
			defaultItemAliases = {}&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type == &#039;noWhite&#039; then&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+&#039;, &#039;White&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( defaultItemAliases, itemName )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, color in ipairs( colors ) do&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type ~= &#039;noWhite&#039; or color ~= &#039;White&#039; then&lt;br /&gt;
				if item:find( &#039;%$1&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$1&#039;, color )&lt;br /&gt;
				elseif item:find( &#039;%$&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$%w+&#039;, color )&lt;br /&gt;
				else&lt;br /&gt;
					itemName = color .. &#039; &#039; .. item&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not coloredBadItems[itemName] then&lt;br /&gt;
				if defaultItemAliases then&lt;br /&gt;
					table.insert( defaultItemAliases, itemName )&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table.insert( coloredItemAliases, itemName )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if defaultItemAliases then&lt;br /&gt;
			local defaultItem = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			aliases[&#039;Any &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
			aliases[&#039;Matching &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
		end&lt;br /&gt;
		item = item:gsub( &#039;%$1 &#039;, &#039;&#039; )&lt;br /&gt;
		item = item:gsub( &#039;%$&#039;, &#039;&#039; )&lt;br /&gt;
		aliases[&#039;Any &#039; .. item] = coloredItemAliases&lt;br /&gt;
		aliases[&#039;Matching &#039; .. item] = coloredItemAliases&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- list of all potions with no effects&lt;br /&gt;
local noEffects = {&lt;br /&gt;
	&#039;Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Potion&#039;,&lt;br /&gt;
	&#039;Thick Potion&#039;,&lt;br /&gt;
	&#039;Mundane Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Potion&#039;,&lt;br /&gt;
	&#039;Splash Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Splash Potion&#039;,&lt;br /&gt;
	&#039;Thick Splash Potion&#039;,&lt;br /&gt;
	&#039;Mundane Splash Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Splash Potion&#039;,&lt;br /&gt;
	&#039;Lingering Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Lingering Potion&#039;,&lt;br /&gt;
	&#039;Thick Lingering Potion&#039;,&lt;br /&gt;
	&#039;Mundane Lingering Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Lingering Potion&#039;,&lt;br /&gt;
	&#039;Tipped Arrow&#039;,&lt;br /&gt;
	&#039;Arrow of Splashing&#039;,&lt;br /&gt;
	&#039;Uncraftable Tipped Arrow&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs(noEffects) do&lt;br /&gt;
	aliases[name] = { name = name, text = &#039;&amp;amp;7No Effects&#039; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start these lists with the no effect items as names are not normal&lt;br /&gt;
local potionItems = {&lt;br /&gt;
	[&#039;Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Splash Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Splash Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Splash Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Lingering Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Lingering Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Lingering Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Tipped Arrow&#039;] = {&lt;br /&gt;
		aliases[&#039;Arrow of Splashing&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Potions --&lt;br /&gt;
local effects = {&lt;br /&gt;
	-- durations are in the order normal, extended, enhanced&lt;br /&gt;
	{name = &#039;Regeneration&#039;, effect = &#039;&amp;amp;9Regeneration&#039;, enhanced = &#039;II&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:22&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Swiftness&#039;, effect = &#039;&amp;amp;9Speed&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Fire Resistance&#039;, effect = &#039;&amp;amp;9Fire Resistance&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Poison&#039;, effect = &#039;&amp;amp;cPoison&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:21&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Healing&#039;, effect = &#039;&amp;amp;9Instant Health&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Night Vision&#039;,    effect = &#039;&amp;amp;9Night Vision&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Weakness&#039;,        effect = &#039;&amp;amp;cWeakness&#039;,        durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Strength&#039;, effect = &#039;&amp;amp;9Strength&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039;}, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Slowness&#039;, effect = &#039;&amp;amp;cSlowness&#039;, enhanced = &#039;IV&#039;, &lt;br /&gt;
		durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039;, &#039;0:20&#039;}, lingering = {&#039;0:22&#039;, &#039;1:00&#039;, &#039;0:05&#039;}, arrow = { &#039;0:11&#039;, &#039;0:30&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Leaping&#039;, effect = &#039;&amp;amp;9Jump Boost&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Harming&#039;, effect = &#039;&amp;amp;cInstant Damage&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Water Breathing&#039;, effect = &#039;&amp;amp;9Water Breathing&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Invisibility&#039;,    effect = &#039;&amp;amp;9Invisibility&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Slow Falling&#039;,    effect = &#039;&amp;amp;9Slow Falling&#039;,    durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Luck&#039;,  effect = &#039;&amp;amp;9Luck&#039;,   durations = { normal = { &#039;5:00&#039; }, lingering = { &#039;1:15&#039; }, arrow = { &#039;0:37&#039; }}},&lt;br /&gt;
	{ name = &#039;Decay&#039;, effect = &#039;&amp;amp;cWither II&#039;, durations = { normal = { &#039;0:40&#039; }, lingering = { &#039;0:10&#039; }, arrow = { &#039;0:05&#039; }}},&lt;br /&gt;
	{ name = &#039;the Turtle Master&#039;, text = &#039;&amp;amp;cSlowness IV ($1)/&amp;amp;9Resistance III ($1)&#039;, enhanced = &#039;&amp;amp;cSlowness VI ($1)/&amp;amp;9Resistance IV ($1)&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:20&#039;, &#039;0:40&#039;, &#039;0:20&#039; }, lingering = { &#039;0:15&#039;, &#039;0:45&#039;, &#039;0:15&#039; }, arrow = {  &#039;0:07&#039;, &#039;0:22&#039;, &#039;0:07&#039; }}},&lt;br /&gt;
	{ name = &#039;Oozing&#039;,  effect = &#039;&amp;amp;cOozing&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Infestation&#039;,  effect = &#039;&amp;amp;cInfested&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Weaving&#039;,  effect = &#039;&amp;amp;cWeaving&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Wind Charging&#039;,  effect = &#039;&amp;amp;cWind Charged&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}}&lt;br /&gt;
}&lt;br /&gt;
local types = {&lt;br /&gt;
	{name = &#039;Potion&#039;,           durations = &#039;normal&#039;,    text = &#039;Potion of &#039;},&lt;br /&gt;
	{name = &#039;Splash Potion&#039;,    durations = &#039;normal&#039;,    text = &#039;Splash Potion of &#039;},&lt;br /&gt;
	{name = &#039;Lingering Potion&#039;, durations = &#039;lingering&#039;, text = &#039;Lingering Potion of &#039;},&lt;br /&gt;
	{name = &#039;Tipped Arrow&#039;,     durations = &#039;arrow&#039;,     text = &#039;Arrow of &#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, effect in ipairs(effects) do&lt;br /&gt;
	for _, type in ipairs(types) do&lt;br /&gt;
		-- form name, it will be reused&lt;br /&gt;
		local name =  type.text .. effect.name&lt;br /&gt;
		local potionName = {}&lt;br /&gt;
		if type.name == &#039;Tipped Arrow&#039; then&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		else&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if we have durations, add times&lt;br /&gt;
		if effect.durations then&lt;br /&gt;
			local durations = effect.durations[type.durations]&lt;br /&gt;
			&lt;br /&gt;
			-- turtle master is weird, so just do a fancy string replacement&lt;br /&gt;
			if effect.text then&lt;br /&gt;
				aliases[name] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[1] ) }&lt;br /&gt;
				aliases[name .. &#039; Extended&#039;] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
				aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.enhanced:gsub( &#039;%$1&#039;, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
			else&lt;br /&gt;
				-- we always have normal&lt;br /&gt;
				aliases[name] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[1] ) }&lt;br /&gt;
			&lt;br /&gt;
				-- ensure we have extended&lt;br /&gt;
				if durations[2] then&lt;br /&gt;
					aliases[name .. &#039; Extended&#039;] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
					&lt;br /&gt;
					-- and enhanced&lt;br /&gt;
					if effect.enhanced then&lt;br /&gt;
						aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = string.format( &#039;%s %s (%s)&#039;, effect.effect, effect.enhanced, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- otherwise its just effect, currently every potion with no duration can be enhanced&lt;br /&gt;
			aliases[name] = { name = potionName, text = effect.effect}&lt;br /&gt;
			aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.effect .. &#039; &#039; .. effect.enhanced .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- add the base potion to the any list&lt;br /&gt;
		table.insert(potionItems[type.name], aliases[name])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- build the any lists&lt;br /&gt;
for item, potionAliases in pairs( potionItems ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. item] = potionAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = potionAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wood --&lt;br /&gt;
local woodTypes = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Oak&#039;,&lt;br /&gt;
	    &#039;Spruce&#039;,&lt;br /&gt;
	    &#039;Birch&#039;,&lt;br /&gt;
	    &#039;Jungle&#039;,&lt;br /&gt;
	    &#039;Acacia&#039;,&lt;br /&gt;
        &#039;Dark Oak&#039;,&lt;br /&gt;
        &#039;Mangrove&#039;,&lt;br /&gt;
        &#039;Cherry&#039;,&lt;br /&gt;
        &#039;Pale Oak&#039;,&lt;br /&gt;
        &#039;Bamboo&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Crimson&#039;,&lt;br /&gt;
        &#039;Warped&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {},&lt;br /&gt;
}&lt;br /&gt;
local woodTypeWorld = {}&lt;br /&gt;
for _, world in ipairs({&#039;overworld&#039;, &#039;nether&#039;}) do&lt;br /&gt;
	local woods = woodTypes[world]&lt;br /&gt;
	for _, type in ipairs(woods) do&lt;br /&gt;
		woodTypeWorld[type] = world&lt;br /&gt;
        table.insert(woodTypes.both, type)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
local woodItems = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Log&#039;,&lt;br /&gt;
        &#039;Wood&#039;,&lt;br /&gt;
        &#039;Stripped $1 Log&#039;,&lt;br /&gt;
        &#039;Stripped $1 Wood&#039;,&lt;br /&gt;
        &#039;Boat&#039;,&lt;br /&gt;
        &#039;Boat with Chest&#039;,&lt;br /&gt;
        &#039;Sapling&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Stem&#039;,&lt;br /&gt;
        &#039;Hyphae&#039;,&lt;br /&gt;
        &#039;Stripped $1 Stem&#039;,&lt;br /&gt;
        &#039;Stripped $1 Hyphae&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {&lt;br /&gt;
		-- Any/Matching X or Y&lt;br /&gt;
        &#039;${Log,Stem}&#039;,&lt;br /&gt;
        &#039;${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Log,Stem}&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Dimensional prefixes&lt;br /&gt;
        &#039;$world Planks&#039;,&lt;br /&gt;
        &#039;$world $wood Stairs&#039;,&lt;br /&gt;
        &#039;$world $wood Slab&#039;,&lt;br /&gt;
        &#039;$world $wood Fence&#039;,&lt;br /&gt;
        &#039;$world $wood Fence Gate&#039;,&lt;br /&gt;
        &#039;$world $wood Door&#039;,&lt;br /&gt;
        &#039;$world $wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$world $wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$world $wood Button&#039;,&lt;br /&gt;
        &#039;$world $wood Sign&#039;,&lt;br /&gt;
        &#039;$world $wood Hanging Sign&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Both dimensions&lt;br /&gt;
		-- Items with non-wood variants include $wood&lt;br /&gt;
        &#039;Planks&#039;,&lt;br /&gt;
        &#039;$wood Stairs&#039;,&lt;br /&gt;
        &#039;$wood Slab&#039;,&lt;br /&gt;
        &#039;$wood Fence&#039;,&lt;br /&gt;
        &#039;Fence Gate&#039;,&lt;br /&gt;
        &#039;$wood Door&#039;,&lt;br /&gt;
        &#039;$wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$wood Button&#039;,&lt;br /&gt;
        &#039;Sign&#039;,&lt;br /&gt;
        &#039;Hanging Sign&#039;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
local woodItemWorld = {}&lt;br /&gt;
for world, items in pairs(woodItems) do&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
		-- expand $world (should only happen in &amp;quot;both&amp;quot;)&lt;br /&gt;
        if (item:find(&#039;%$world&#039;)) and world == &#039;both&#039; then&lt;br /&gt;
            item = item:gsub(&#039;%$world &#039;, &#039;&#039;)&lt;br /&gt;
            woodItemWorld[&#039;Overworld &#039; .. item] = &#039;overworld&#039;&lt;br /&gt;
			woodItemWorld[&#039;Nether &#039; .. item] = &#039;nether&#039;&lt;br /&gt;
		else&lt;br /&gt;
			woodItemWorld[item] = world&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local woodBadItems = {&lt;br /&gt;
	[&#039;Bamboo Sapling&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Log&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Log&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local woodNameMapping = {&lt;br /&gt;
	[&#039;Mangrove Sapling&#039;] = &#039;Mangrove Propagule&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat&#039;] = &#039;Bamboo Raft&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat with Chest&#039;] = &#039;Bamboo Raft with Chest&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for item, world in pairs(woodItemWorld) do&lt;br /&gt;
	local itemName = &#039;&#039;&lt;br /&gt;
	local woodAliases = {}&lt;br /&gt;
&lt;br /&gt;
	-- real &amp;quot;linkable&amp;quot; name&lt;br /&gt;
    local realItem = item:gsub(&#039;^Overworld &#039;, &#039;&#039;)&lt;br /&gt;
    realItem = realItem:gsub(&#039;^Nether &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, wood in ipairs(woodTypes[world]) do&lt;br /&gt;
		-- Parse ${,} (world-select) syntax&lt;br /&gt;
		local selector = (woodTypeWorld[wood] == &#039;overworld&#039;) and &amp;quot;%1&amp;quot; or &amp;quot;%2&amp;quot;&lt;br /&gt;
		itemName = realItem:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, selector)&lt;br /&gt;
&lt;br /&gt;
		if itemName:find(&#039;%$wood&#039;) then&lt;br /&gt;
			itemName = itemName:gsub(&#039;%$wood&#039;, wood)&lt;br /&gt;
		elseif itemName:find(&#039;%$1&#039;) then&lt;br /&gt;
			itemName = itemName:gsub( &#039;%$1&#039;, wood)&lt;br /&gt;
		else&lt;br /&gt;
			itemName = wood .. &#039; &#039; .. itemName&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- special handling&lt;br /&gt;
		if woodNameMapping[itemName] then&lt;br /&gt;
			itemName = woodNameMapping[itemName]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not woodBadItems[itemName] then&lt;br /&gt;
			table.insert(woodAliases, itemName)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Parse ${,} (world-select) syntax&lt;br /&gt;
	item = item:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, &amp;quot;%1 or %2&amp;quot;)&lt;br /&gt;
    item = item:gsub(&#039;%$wood&#039;, &#039;Wooden&#039;)&lt;br /&gt;
    item = item:gsub(&#039;%$1 &#039;, &#039;&#039;)&lt;br /&gt;
    aliases[&#039;Any &#039; .. item] = woodAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = woodAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Bedrock Edition Items --&lt;br /&gt;
local editionItems = {&lt;br /&gt;
	BE = {&lt;br /&gt;
		&#039;Acacia Fence Gate&#039;,&lt;br /&gt;
		&#039;Andesite Wall&#039;,&lt;br /&gt;
		&#039;Birch Fence Gate&#039;,&lt;br /&gt;
		&#039;Black Bed&#039;,&lt;br /&gt;
		&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Blue Bed&#039;,&lt;br /&gt;
		&#039;Blue Ice&#039;,&lt;br /&gt;
		&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bow&#039;,&lt;br /&gt;
		&#039;Brick Wall&#039;,&lt;br /&gt;
		&#039;Brown Bed&#039;,&lt;br /&gt;
		&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bucket of Pufferfish&#039;,&lt;br /&gt;
		&#039;Bucket of Tropical Fish&#039;,&lt;br /&gt;
		&#039;Cat Spawn Egg&#039;,&lt;br /&gt;
		&#039;Chest&#039;,&lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Crimson Fence Gate&#039;,&lt;br /&gt;
		&#039;Crying Obsidian&#039;,&lt;br /&gt;
		&#039;Cyan Bed&#039;,&lt;br /&gt;
		&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Dark Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Deepslate Brick Wall&#039;,&lt;br /&gt;
		&#039;Deepslate Tile Wall&#039;,&lt;br /&gt;
		&#039;Desert Village Map&#039;,&lt;br /&gt;
		&#039;Diorite Wall&#039;,&lt;br /&gt;
		&#039;Enchanting Table&#039;,&lt;br /&gt;
		&#039;End Gateway&#039;,&lt;br /&gt;
		&#039;End Portal Frame&#039;,&lt;br /&gt;
		&#039;End Portal&#039;,&lt;br /&gt;
		&#039;End Rod&#039;,&lt;br /&gt;
		&#039;End Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Ender Chest&#039;,&lt;br /&gt;
		&#039;Glass Pane&#039;,&lt;br /&gt;
		&#039;Glowstone&#039;,&lt;br /&gt;
		&#039;Granite Wall&#039;,&lt;br /&gt;
		&#039;Gray Bed&#039;,&lt;br /&gt;
		&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Green Bed&#039;,&lt;br /&gt;
		&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Honey Block&#039;,&lt;br /&gt;
		&#039;Horn Coral Block&#039;,&lt;br /&gt;
		&#039;Iron Bars&#039;,&lt;br /&gt;
		&#039;Jack o\&#039;Lantern&#039;,&lt;br /&gt;
		&#039;Jungle Explorer Map&#039;,&lt;br /&gt;
		&#039;Jungle Fence Gate&#039;,&lt;br /&gt;
		&#039;Jungle Leaves&#039;,&lt;br /&gt;
		&#039;Lava&#039;,&lt;br /&gt;
		&#039;Leather Horse Armor&#039;,&lt;br /&gt;
		&#039;Light&#039;,&lt;br /&gt;
		&#039;Light Blue Bed&#039;,&lt;br /&gt;
		&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Light Gray Bed&#039;,&lt;br /&gt;
		&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Lime Bed&#039;,&lt;br /&gt;
		&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
        &#039;Lodestone Compass&#039;,&lt;br /&gt;
        &#039;Magenta Bed&#039;,&lt;br /&gt;
		&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Magma Block&#039;,&lt;br /&gt;
		&#039;Map&#039;,&lt;br /&gt;
		&#039;Minecart with Command Block&#039;,&lt;br /&gt;
		&#039;Monster Spawner&#039;,&lt;br /&gt;
		&#039;Mossy Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Mossy Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Mud Brick Wall&#039;,&lt;br /&gt;
		&#039;Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Observer&#039;,&lt;br /&gt;
		&#039;Ocean Explorer Map&#039;,&lt;br /&gt;
		&#039;Ochre Froglight&#039;,&lt;br /&gt;
		&#039;Orange Bed&#039;,&lt;br /&gt;
		&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Panda Spawn Egg&#039;,&lt;br /&gt;
		&#039;Pearlescent Froglight&#039;,&lt;br /&gt;
		&#039;Pink Bed&#039;,&lt;br /&gt;
		&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Plains Village Map&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Brick Wall&#039;,&lt;br /&gt;
		&#039;Polished Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Polished Tuff Wall&#039;,&lt;br /&gt;
		&#039;Prismarine Wall&#039;,&lt;br /&gt;
		&#039;Purple Bed&#039;,&lt;br /&gt;
		&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Red Bed&#039;,&lt;br /&gt;
		&#039;Red Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Red Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Resin Brick Wall&#039;,&lt;br /&gt;
		&#039;Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Savanna Village Map&#039;,&lt;br /&gt;
		&#039;Scaffolding&#039;,&lt;br /&gt;
		&#039;Sea Lantern&#039;,&lt;br /&gt;
		&#039;Shroomlight&#039;,&lt;br /&gt;
		&#039;Snowy Village Map&#039;,&lt;br /&gt;
		&#039;Spruce Fence Gate&#039;,&lt;br /&gt;
		&#039;Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Stonecutter&#039;,&lt;br /&gt;
		&#039;Structure Void&#039;,&lt;br /&gt;
		&#039;Swamp Explorer Map&#039;,&lt;br /&gt;
		&#039;Taiga Village Map&#039;,&lt;br /&gt;
		&#039;Trapped Chest&#039;,&lt;br /&gt;
		&#039;Trial Explorer Map&#039;,&lt;br /&gt;
		&#039;Tuff Wall&#039;,&lt;br /&gt;
		&#039;Tuff Brick Wall&#039;,&lt;br /&gt;
		&#039;Verdant Froglight&#039;,&lt;br /&gt;
		&#039;Wandering Trader Spawn Egg&#039;,&lt;br /&gt;
		&#039;Warped Fence Gate&#039;,&lt;br /&gt;
		&#039;White Bed&#039;,&lt;br /&gt;
		&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Woodland Explorer Map&#039;,&lt;br /&gt;
		&#039;Yellow Bed&#039;,&lt;br /&gt;
		&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	LCE = {&lt;br /&gt;
		&#039;Shrub&#039;&lt;br /&gt;
	},&lt;br /&gt;
	    SM = {&lt;br /&gt;
    	&#039;Compass&#039;,&lt;br /&gt;
    	&#039;Diamond Axe&#039;,&lt;br /&gt;
    	&#039;Diamond Hoe&#039;,&lt;br /&gt;
    	&#039;Diamond Pickaxe&#039;,&lt;br /&gt;
    	&#039;Diamond Shovel&#039;,&lt;br /&gt;
    	&#039;Diamond Sword&#039;,&lt;br /&gt;
    	&#039;Flint and Steel&#039;,&lt;br /&gt;
    	&#039;Potion of Invisibility&#039;,&lt;br /&gt;
    	&#039;Potion of Leaping&#039;,&lt;br /&gt;
    	&#039;Potion of Swiftness&#039;,&lt;br /&gt;
    	&#039;TNT&#039;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
for edition, items in pairs(editionItems) do&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local name = item .. &#039; &#039; .. edition&lt;br /&gt;
		aliases[name] = { title = item, name = name }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Light blocks --&lt;br /&gt;
for level = 0, 15 do&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level] = { title = &amp;quot;&amp;amp;dLight&amp;quot;, name = &amp;quot;Light &amp;quot; .. level }&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot;] = { title = &amp;quot;Light&amp;quot;, name = &amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Pottery Sherds --&lt;br /&gt;
local pottery_sherds = { &lt;br /&gt;
	{ &#039;Angler&#039; },&lt;br /&gt;
	{ &#039;Arms Up&#039; },&lt;br /&gt;
	{ &#039;Archer&#039; },&lt;br /&gt;
	{ &#039;Blade&#039; },&lt;br /&gt;
	{ &#039;Brewer&#039; },&lt;br /&gt;
	{ &#039;Burn&#039; },&lt;br /&gt;
	{ &#039;Danger&#039; },&lt;br /&gt;
	{ &#039;Explorer&#039; },&lt;br /&gt;
	{ &#039;Flow&#039; },&lt;br /&gt;
	{ &#039;Friend&#039; },&lt;br /&gt;
	{ &#039;Guster&#039; },&lt;br /&gt;
	{ &#039;Heart&#039; },&lt;br /&gt;
	{ &#039;Heartbreak&#039; },&lt;br /&gt;
	{ &#039;Howl&#039; },&lt;br /&gt;
	{ &#039;Miner&#039; },&lt;br /&gt;
	{ &#039;Mourner&#039; },&lt;br /&gt;
	{ &#039;Plenty&#039; },&lt;br /&gt;
	{ &#039;Prize&#039; },&lt;br /&gt;
	{ &#039;Scrape&#039; },&lt;br /&gt;
	{ &#039;Sheaf&#039; },&lt;br /&gt;
	{ &#039;Shelter&#039; },&lt;br /&gt;
	{ &#039;Skull&#039; },&lt;br /&gt;
	{ &#039;Snort&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local potterySherdAliases = {}&lt;br /&gt;
for _, pottery_sherd in ipairs(pottery_sherds) do&lt;br /&gt;
	local name = pottery_sherd[1] .. &#039; Pottery Sherd&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039; .. name , name = name }&lt;br /&gt;
	table.insert(potterySherdAliases, aliases[name])&lt;br /&gt;
end&lt;br /&gt;
table.insert(potterySherdAliases, &#039;Brick&#039;)&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Pottery Sherd&#039;] = potterySherdAliases&lt;br /&gt;
&lt;br /&gt;
-- Smithing Templates --&lt;br /&gt;
local smithing_templates = {&lt;br /&gt;
	{ &#039;Netherite Upgrade&#039;,    &#039;Diamond Equipment&#039;, &#039;Netherite Ingot&#039;,  &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Bolt Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Coast Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Dune Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Eye Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Flow Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Host Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Raiser Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Rib Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Sentry Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Shaper Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Silence Armor Trim&#039;,   &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;d&#039; },&lt;br /&gt;
	{ &#039;Snout Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Spire Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Tide Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Vex Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Ward Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Wayfinder Armor Trim&#039;, &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wild Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
local smithing_template_array = {}&lt;br /&gt;
local armor_trims_array = {}&lt;br /&gt;
for _,smithing_template in pairs(smithing_templates) do&lt;br /&gt;
    local rarityColor = smithing_template[4]&lt;br /&gt;
	local current_alias = {&lt;br /&gt;
		title = rarityColor .. smithing_template[1],&lt;br /&gt;
		name = smithing_template[1] .. &#039; Smithing Template&#039;,&lt;br /&gt;
		text = &#039;&amp;amp;7&#039; .. &#039;Smithing Template&#039; .. &#039;//Applies to:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[2] .. &#039;/&amp;amp;7Ingredients:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[3],&lt;br /&gt;
	}&lt;br /&gt;
	aliases[smithing_template[1]] = current_alias&lt;br /&gt;
	aliases[smithing_template[1] .. &#039; Smithing Template&#039;] = current_alias&lt;br /&gt;
	table.insert(smithing_template_array,current_alias)&lt;br /&gt;
	if string.find(smithing_template[1],&#039; Armor Trim$&#039;) then&lt;br /&gt;
		table.insert(armor_trims_array,current_alias)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Matching Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Any Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
&lt;br /&gt;
--- Merge all separate slab collections into one &amp;quot;Any Slab&amp;quot; group&lt;br /&gt;
local slabs = {}&lt;br /&gt;
local trapdoors = {}&lt;br /&gt;
for groupName, entries in pairs(aliases) do&lt;br /&gt;
    if groupName:find(&#039;^Any&#039;) then&lt;br /&gt;
         if groupName:find(&#039;%Slab$&#039;) then&lt;br /&gt;
            for _, v in ipairs(entries) do&lt;br /&gt;
                table.insert(slabs, v)&lt;br /&gt;
            end&lt;br /&gt;
        else end&lt;br /&gt;
        if groupName:find(&#039;%Trapdoor$&#039;) then&lt;br /&gt;
           for _, v in ipairs(entries) do&lt;br /&gt;
               table.insert(trapdoors, v)&lt;br /&gt;
           end&lt;br /&gt;
       else end&lt;br /&gt;
    else end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Slab&#039;] = slabs&lt;br /&gt;
aliases[&#039;Any Trapdoor&#039;] = trapdoors&lt;br /&gt;
&lt;br /&gt;
return aliases&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13187</id>
		<title>Module:Inventory slot/Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13187"/>
		<updated>2026-09-27T15:26:44Z</updated>

		<summary type="html">&lt;p&gt;Gutin: point waxed copper textures to regular copper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local aliases = {&lt;br /&gt;
	-- Common fuel types for furnace --&lt;br /&gt;
	[&#039;Any fuel&#039;] = { &#039;Coal&#039;, &#039;Charcoal&#039;, { title = &#039;Log&#039;, name = &#039;Oak Log&#039; }, { title = &#039;Overworld Planks&#039;, name = &#039;Oak Planks&#039; }, &#039;Lava Bucket&#039;, &#039;Block of Coal&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- All armor --&lt;br /&gt;
	[&#039;Any leather armor&#039;] = { &#039;Leather Cap&#039;, &#039;Leather Tunic&#039;, &#039;Leather Pants&#039;, &#039;Leather Boots&#039; },&lt;br /&gt;
	[&#039;Any golden armor&#039;] = { &#039;Golden Helmet&#039;, &#039;Golden Chestplate&#039;, &#039;Golden Leggings&#039;, &#039;Golden Boots&#039; },&lt;br /&gt;
	[&#039;Any chainmail armor&#039;] = { &#039;Chainmail Helmet&#039;, &#039;Chainmail Chestplate&#039;, &#039;Chainmail Leggings&#039;, &#039;Chainmail Boots&#039; },&lt;br /&gt;
	[&#039;Any iron armor&#039;] = { &#039;Iron Helmet&#039;, &#039;Iron Chestplate&#039;, &#039;Iron Leggings&#039;, &#039;Iron Boots&#039; },&lt;br /&gt;
	[&#039;Any diamond armor&#039;] = { &#039;Diamond Helmet&#039;, &#039;Diamond Chestplate&#039;, &#039;Diamond Leggings&#039;, &#039;Diamond Boots&#039; },&lt;br /&gt;
	[&#039;Any netherite armor&#039;] = { &#039;Netherite Helmet&#039;, &#039;Netherite Chestplate&#039;, &#039;Netherite Leggings&#039;, &#039;Netherite Boots&#039; },&lt;br /&gt;
&lt;br /&gt;
    -- Stones --&lt;br /&gt;
	[&#039;Any Cobblestone or Blackstone&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039; },&lt;br /&gt;
	[&#039;Any stone-tier block&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039;, &#039;Cobbled Deepslate&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Miscellaeous collections --&lt;br /&gt;
	[&#039;Any leaves&#039;] = { &#039;Oak Leaves&#039;, &#039;Spruce Leaves&#039;, &#039;Birch Leaves&#039;, &#039;Acacia Leaves&#039;, &#039;Jungle Leaves&#039;, &#039;Dark Oak Leaves&#039;, &#039;Mangrove Leaves&#039;, &#039;Cherry Leaves&#039;, &#039;Pale Oak Leaves&#039;, &#039;Azalea Leaves&#039;, &#039;Flowering Azalea Leaves&#039; };&lt;br /&gt;
	[&#039;Any egg&#039;] = { &#039;Egg&#039;, &#039;Blue Egg&#039;, &#039;Brown Egg&#039;};&lt;br /&gt;
	[&#039;Any stairs&#039;] = { &#039;Tuff Stairs&#039;, &#039;Polished Tuff Stairs&#039;, &#039;Tuff Brick Stairs&#039;, &#039;Cut Copper Stairs&#039;, &#039;Exposed Cut Copper Stairs&#039;, &#039;Weathered Cut Copper Stairs&#039;, &#039;Oxidized Cut Copper Stairs&#039;, &#039;Waxed Cut Copper Stairs&#039;, &#039;Waxed Exposed Cut Copper Stairs&#039;, &#039;Waxed Weathered Cut Copper Stairs&#039;, &#039;Waxed Oxidized Cut Copper Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Resin Brick Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Nether Brick Stairs&#039;, &#039;Sandstone Stairs&#039;, &#039;Oak Stairs&#039;, &#039;Spruce Stairs&#039;, &#039;Birch Stairs&#039;, &#039;Jungle Stairs&#039;, &#039;Acacia Stairs&#039;, &#039;Cherry Stairs&#039;, &#039;Dark Oak Stairs&#039;, &#039;Pale Oak Stairs&#039;, &#039;Mangrove Stairs&#039;, &#039;Bamboo Stairs&#039;, &#039;Bamboo Mosaic Stairs&#039;, &#039;Crimson Stairs&#039;, &#039;Warped Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Stone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Smooth Quartz Stairs&#039;, &#039;Granite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039; },&lt;br /&gt;
	[&#039;Any Door&#039;] = {&#039;Oak Door&#039;, &#039;Spruce Door&#039;, &#039;Birch Door&#039;, &#039;Jungle Door&#039;, &#039;Acacia Door&#039;, &#039;Dark Oak Door&#039;, &#039;Mangrove Door&#039;, &#039;Cherry Door&#039;, &#039;Bamboo Door&#039;, &#039;Crimson Door&#039;, &#039;Warped Door&#039;, &#039;Pale Oak Door&#039;, &#039;Iron Door&#039;, &#039;Copper Door&#039;, &#039;Exposed Copper Door&#039;, &#039;Weathered Copper Door&#039;,&#039;Oxidized Copper Door&#039;, &#039;Waxed Copper Door&#039;, &#039;Waxed Exposed Copper Door&#039;, &#039;Waxed Weathered Copper Door&#039;, &#039;Waxed Oxidized Copper Door&#039;},&lt;br /&gt;
    [&#039;Any inventory&#039;] = { &#039;Chest&#039;, &#039;Trapped Chest&#039;, &#039;Barrel&#039;, &#039;Furnace&#039;, &#039;Smoker&#039;, &#039;Dispenser&#039;, &#039;Dropper&#039;, &#039;Decorated Pot&#039; },&lt;br /&gt;
  &lt;br /&gt;
    [&#039;Any Chiseled Block&#039;] = {&#039;Chiseled Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Chiseled Deepslate&#039;, &#039;Chiseled Tuff&#039;, &#039;Chiseled Tuff Bricks&#039;, &#039;Chiseled Stone Bricks&#039;, &#039;Chiseled Nether Bricks&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Chiseled Copper&#039;, &#039;Exposed Chiseled Copper&#039;, &#039;Weathered Chiseled Copper&#039;, &#039;Oxidized Chiseled Copper&#039;, &#039;Waxed Chiseled Copper&#039;, &#039;Waxed Exposed Chiseled Copper&#039;, &#039;Waxed Weathered Chiseled Copper&#039;, &#039;Waxed Oxidized Chiseled Copper&#039;},&lt;br /&gt;
    [&#039;Any Button&#039;]= {&#039;Oak Button&#039;, &#039;Spruce Button&#039;, &#039;Birch Button&#039;, &#039;Jungle Button&#039;, &#039;Acacia Button&#039;, &#039;Dark Oak Button&#039;, &#039;Mangrove Button&#039;, &#039;Cherry Button&#039;, &#039;Pale Oak Button&#039;, &#039;Bamboo Button&#039;, &#039;Crimson Button&#039;, &#039;Warped Button&#039;},&lt;br /&gt;
--Glass--&lt;br /&gt;
[&#039;Any Glass Pane&#039;] = {&lt;br /&gt;
	&#039;Glass Pane&#039;,&lt;br /&gt;
	&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
},&lt;br /&gt;
[&#039;Any Glass&#039;] = {&lt;br /&gt;
	&#039;Glass&#039;,&lt;br /&gt;
	&#039;White Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Black Stained Glass&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass&#039;,&lt;br /&gt;
	&#039;Red Stained Glass&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass&#039;,&lt;br /&gt;
	&#039;Green Stained Glass&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass&#039;,&lt;br /&gt;
},&lt;br /&gt;
    --Gif fixes, Minecraft.wiki does this with a database but I&#039;m not setting that up--&lt;br /&gt;
    [&#039;Prismarine Wall&#039;]={&#039;Prismarine Wall.gif&#039;},&lt;br /&gt;
    [&#039;Sea Lantern&#039;]={ &#039;Sea Lantern.gif&#039; },&lt;br /&gt;
    [&#039;Stonecutter&#039;]={ &#039;Stonecutter.gif&#039; },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    --USE THIS FOR HE RELATED BLOCK TYPES--&lt;br /&gt;
    -- Misc HE--&lt;br /&gt;
    [&#039;Any Thruster Block&#039;]={&#039;Sea Lantern.gif&#039;, &#039;Glowstone&#039;, &#039;Shroomlight&#039;, &#039;Ochre Froglight&#039;, &#039;Verdant Froglight&#039;, &#039;Pearlescent Froglight&#039;, &#039;Redstone Lamp&#039;},&lt;br /&gt;
    [&#039;Any Normal Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Diamond Block&#039;},&lt;br /&gt;
    [&#039;Any Special Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Diamond Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
    [&#039;Any Secondary Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- Display names --&lt;br /&gt;
	[&#039;Broken Elytra&#039;] = { title = &#039;&amp;amp;dElytra&#039;, name = &#039;Broken Elytra&#039; },&lt;br /&gt;
	[&#039;Button&#039;] = { title = &#039;Button&#039;, name = &#039;Stone Button&#039;},&lt;br /&gt;
	[&#039;Wooden Button&#039;] = { title = &#039;Button&#039;, name = &#039;Oak Button&#039;},&lt;br /&gt;
	[&#039;Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Ominous Banner&#039;] = { title = &#039;&amp;amp;6&amp;amp;oOminous Banner&#039;, name = &#039;Ominous Banner&#039;, text = &lt;br /&gt;
		&#039;&amp;amp;7Cyan Lozenge/&amp;amp;7Light Gray Base/&amp;amp;7Gray Pale/&amp;amp;7Light Gray Bordure/&amp;amp;7Black Fess/&amp;amp;7Light Gray Per Fess&#039;},&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Basic&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Basic&#039; },&lt;br /&gt;
    [&#039;Power Hoe Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Basic&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Enhanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Advanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Advanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Advanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Battery A&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;cA &amp;amp;9Battery&#039;, name = &#039;Battery A&#039; },&lt;br /&gt;
    [&#039;Battery M&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;aM &amp;amp;9Battery&#039;, name = &#039;Battery M&#039; },&lt;br /&gt;
    [&#039;Battery G&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;6G &amp;amp;9Battery&#039;, name = &#039;Battery G&#039; },&lt;br /&gt;
&lt;br /&gt;
	[&#039;Half Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Half Filled Bundle&#039; },&lt;br /&gt;
	[&#039;Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Filled Bundle&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Empty display name --&lt;br /&gt;
	[&#039;debug_fourj_item&#039;] = { title = &#039;\226\128\140&#039;, name = &#039;debug_fourj_item&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Equipment with custom rarity --&lt;br /&gt;
	[&#039;Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Damaged Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Trident BE&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;9 +8 Attack Damage&#039;},&lt;br /&gt;
	[&#039;Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Damaged Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Mace BE&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;9 +5 Attack Damage&#039;},&lt;br /&gt;
	[&amp;quot;Damaged Elytra&amp;quot;] = { title = &amp;quot;&amp;amp;dElytra&amp;quot;, name = &amp;quot;Damaged Elytra&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Boots&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Boots&amp;quot;, name = &amp;quot;Damaged Chainmail Boots&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Chestplate&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Chestplate&amp;quot;, name = &amp;quot;Damaged Chainmail Chestplate&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Helmet&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Helmet&amp;quot;, name = &amp;quot;Damaged Chainmail Helmet&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Leggings&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Leggings&amp;quot;, name = &amp;quot;Damaged Chainmail Leggings&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
	-- Ominous Bottles --&lt;br /&gt;
    [&#039;Ominous Bottle&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle II&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen II (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle III&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen III (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle IV&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen IV (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle V&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen V (01:40:00)&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Bedrock and Education Edition display names --&lt;br /&gt;
	[&#039;Buried Treasure Map BE&#039;] = { title = &#039;Treasure Map&#039;, name = &#039;Buried Treasure Map BE&#039; },&lt;br /&gt;
	[&#039;Elytra Wings&#039;] = { title = &#039;Elytra Wings&#039;, name = &#039;Elytra&#039; },&lt;br /&gt;
	[&#039;Glowing Obsidian&#039;] = { title = &#039;tile.glowingobsidian.name&#039;, name = &#039;Glowing Obsidian&#039; },&lt;br /&gt;
	[&#039;Map (no markers)&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;cNo&#039; },&lt;br /&gt;
	[&#039;Locator Map&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;aYes&#039; },&lt;br /&gt;
	[&#039;Shrub BE&#039;] = { title = &#039;Fern&#039;, name = &#039;Short Grass&#039; },&lt;br /&gt;
	[&#039;Unknown&#039;] = { title = &#039;Unknown&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update&#039;] = { title = &#039;tile.info_update.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update2&#039;] = { title = &#039;tile.info_update2.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;reserved6&#039;] = { title = &#039;tile.reserved6.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;Smooth Purpur&#039;] = { title = &#039;tile.deprecated_purpur_block_2.name&#039;, name = &#039;Smooth Purpur&#039; },&lt;br /&gt;
	[&#039;Beacon BE&#039;] = { title = &#039;&amp;amp;bBeacon&#039;, name = &#039;Beacon BE&#039; },&lt;br /&gt;
	[&#039;Conduit BE&#039;] = { title = &#039;&amp;amp;eConduit&#039;, name = &#039;Conduit BE&#039; },&lt;br /&gt;
	[&#039;Dragon Egg BE&#039;] = { title = &#039;&amp;amp;dDragon Egg&#039;, name = &#039;Dragon Egg BE&#039; },&lt;br /&gt;
	[&#039;Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;eSkeleton Skull&#039;, name = &#039;Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Wither Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;bWither Skeleton Skull&#039;, name = &#039;Wither Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Zombie Head BE&#039;] = { title = &#039;&amp;amp;eZombie Head&#039;, name = &#039;Zombie Head BE&#039; },&lt;br /&gt;
	[&#039;Player Head BE&#039;] = { title = &#039;&amp;amp;ePlayer Head&#039;, name = &#039;Player Head BE&#039; },&lt;br /&gt;
	[&#039;Creeper Head BE&#039;] = { title = &#039;&amp;amp;eCreeper Head&#039;, name = &#039;Creeper Head BE&#039; },&lt;br /&gt;
	[&#039;Dragon Head BE&#039;] = { title = &#039;&amp;amp;dDragon Head&#039;, name = &#039;Dragon Head BE&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Chemistry --&lt;br /&gt;
	[&#039;Lead (element)&#039;] = { title = &#039;Lead&#039;, name = &#039;Lead (element)&#039; },&lt;br /&gt;
	[&#039;Water (compound)&#039;] = { title = &#039;Water&#039;, name = &#039;Water (compound)&#039; },&lt;br /&gt;
	[&#039;Chloride&#039;] = { &#039;Calcium Chloride&#039;, &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Sparkler&#039;] = { &#039;Orange Sparkler&#039;, &#039;Blue Sparkler&#039;, &#039;Red Sparkler&#039;, &#039;Purple Sparkler&#039;, &#039;Green Sparkler&#039; },&lt;br /&gt;
	[&#039;Matching Chloride&#039;] = { &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Matching Colored Torch&#039;] = { &#039;Blue Torch&#039;, &#039;Red Torch&#039;, &#039;Purple Torch&#039;, &#039;Green Torch&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- April Fools&#039; Day jokes --&lt;br /&gt;
	[&#039;New Thing Banner Pattern&#039;] = { title = &#039;&amp;amp;dBanner Pattern&#039;, name = &#039;New Thing Banner Pattern&#039;, text = &#039;&amp;amp;7New Thing&#039;},&lt;br /&gt;
	-- Note: These can&#039;t use this module&#039;s default color handling because potato peels have no white variant but do include the uncolored variant in recipes&lt;br /&gt;
	[&#039;Any Potato Peels&#039;] = { &#039;Potato Peels&#039;, &#039;Light Gray Potato Peels&#039;, &#039;Gray Potato Peels&#039;, &#039;Black Potato Peels&#039;, &#039;Brown Potato Peels&#039;, &#039;Red Potato Peels&#039;, &#039;Orange Potato Peels&#039;, &#039;Yellow Potato Peels&#039;, &#039;Lime Potato Peels&#039;, &#039;Green Potato Peels&#039;, &#039;Cyan Potato Peels&#039;, &#039;Light Blue Potato Peels&#039;, &#039;Blue Potato Peels&#039;, &#039;Purple Potato Peels&#039;, &#039;Magenta Potato Peels&#039;, &#039;Pink Potato Peels&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- Old textures --&lt;br /&gt;
	[&#039;Apple Revision 1&#039;] = { title = &#039;Apple&#039;, name = &#039;Apple Revision 1&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Stairs&#039;] = aliases[&#039;Any stairs&#039;]&lt;br /&gt;
aliases[&#039;Any Inventory&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Container&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Tier Block&#039;] = aliases[&#039;Any Normal Tier Block&#039;]&lt;br /&gt;
aliases[&#039;Any Harvester Tier Block&#039;] = aliases[&#039;Any Secondary Tier Block&#039;]&lt;br /&gt;
&lt;br /&gt;
-- Tooltip colors --&lt;br /&gt;
local yellowTooltips = {&lt;br /&gt;
    &#039;Bottle o\&#039; Enchanting&#039;,&lt;br /&gt;
    &#039;Chainmail Boots&#039;,&lt;br /&gt;
    &#039;Chainmail Chestplate&#039;,&lt;br /&gt;
    &#039;Chainmail Helmet&#039;,&lt;br /&gt;
    &#039;Chainmail Leggings&#039;,&lt;br /&gt;
    &#039;Conduit&#039;,&lt;br /&gt;
    &#039;Creeper Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Creeper Head&#039;,&lt;br /&gt;
    &#039;Disc Fragment 5&#039;,&lt;br /&gt;
    &#039;Dragon\&#039;s Breath&#039;,&lt;br /&gt;
    &#039;Echo Shard&#039;,&lt;br /&gt;
    &#039;Enchanted Book&#039;,&lt;br /&gt;
    &#039;Goat Horn&#039;,&lt;br /&gt;
    &#039;Heart of the Sea&#039;,&lt;br /&gt;
    &#039;Nautilus Shell&#039;,&lt;br /&gt;
    &#039;Ominous Banner&#039;,&lt;br /&gt;
    &#039;Piglin Head&#039;,&lt;br /&gt;
    &#039;Player Head&#039;,&lt;br /&gt;
    &#039;Recovery Compass&#039;,&lt;br /&gt;
    &#039;Skeleton Skull&#039;,&lt;br /&gt;
    &#039;Sniffer Egg&#039;,&lt;br /&gt;
    &#039;Snout Banner Pattern&#039;,&lt;br /&gt;
    &#039;Totem of Undying&#039;,&lt;br /&gt;
    &#039;Zombie Head&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( yellowTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local aquaTooltips = {&lt;br /&gt;
	&#039;Beacon&#039;,&lt;br /&gt;
	&#039;Enchanted Golden Apple&#039;,&lt;br /&gt;
    &#039;Flow Banner Pattern&#039;,&lt;br /&gt;
	&#039;Guster Banner Pattern&#039;,&lt;br /&gt;
	&#039;Nether Star&#039;,&lt;br /&gt;
    &#039;Skull Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Thing Banner Pattern&#039;,&lt;br /&gt;
    &#039;Wither Skeleton Skull&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( aquaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;b&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local magentaTooltips = {&lt;br /&gt;
	&#039;Barrier&#039;,&lt;br /&gt;
	&#039;Command Block&#039;,&lt;br /&gt;
	&#039;Chain Command Block&#039;,&lt;br /&gt;
	&#039;Debug Stick&#039;,&lt;br /&gt;
	&#039;Dragon Egg&#039;,&lt;br /&gt;
	&#039;Dragon Head&#039;,&lt;br /&gt;
	&#039;Elytra&#039;,&lt;br /&gt;
	&#039;Heavy Core&#039;,&lt;br /&gt;
	&#039;Jigsaw Block&#039;,&lt;br /&gt;
	&#039;Knowledge Book&#039;,&lt;br /&gt;
	&#039;Light&#039;,&lt;br /&gt;
	&#039;Repeating Command Block&#039;,&lt;br /&gt;
	&#039;Structure Block&#039;,&lt;br /&gt;
	&#039;Structure Void&#039;,&lt;br /&gt;
	&#039;Test Block&#039;,&lt;br /&gt;
	&#039;Test Instance Block&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( magentaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;d&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons --&lt;br /&gt;
local tools = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5, 1.6 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6, 1.6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7, 1.6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8, 1.6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3, 1.2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4, 1.2 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5, 1.2 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6, 1.2 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 7, 0.8 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 9, 0.8 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 9, 0.9 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 7, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 9, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 10, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 3.5, 1 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 4.5, 1 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 5.5, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 6.5, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 1, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 1, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 1, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 1, 4 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local materialGroups = {}&lt;br /&gt;
local toolGroups = {}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( tools ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	local damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
	local text = &#039;/&amp;amp;7When in Main Hand:/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[3] .. &#039; Attack Damage/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[4] .. &#039; Attack Speed&#039;&lt;br /&gt;
	aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
	aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
	&lt;br /&gt;
	local materialGroup = toolProps[1]:lower()&lt;br /&gt;
	local toolGroup = toolProps[2]:lower()&lt;br /&gt;
	&lt;br /&gt;
	if toolProps[2] ~= &#039;Sword&#039; then&lt;br /&gt;
		if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end&lt;br /&gt;
		table.insert( materialGroups[materialGroup], aliases[aliasName] )&lt;br /&gt;
	end&lt;br /&gt;
	if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end&lt;br /&gt;
	table.insert( toolGroups[toolGroup], aliases[aliasName] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for materialGroup, items in pairs( materialGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. materialGroup .. &#039; tools&#039;] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for toolGroup, items in pairs( toolGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. toolGroup] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons in Bedrock Edition --&lt;br /&gt;
local toolsBE = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 4 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 5 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 7 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 5 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 6 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( toolsBE ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	aliases[aliasName .. &#039; BE&#039;] = { title = aliasName, name = aliasName, text = &#039;/&amp;amp;9+&#039; .. toolProps[3] .. &#039; Attack Damage&#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Armor tooltips --&lt;br /&gt;
local head = {&lt;br /&gt;
	{&#039;Leather Cap&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Iron Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond Helmet&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Helmet&#039;, 3, 3, 1 },&lt;br /&gt;
	{&#039;Turtle Shell&#039;, 2 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local body = {&lt;br /&gt;
	{&#039;Leather Tunic&#039;, 3 },&lt;br /&gt;
	{&#039;Chainmail Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Iron Chestplate&#039;, 6 },&lt;br /&gt;
	{&#039;Golden Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Diamond Chestplate&#039;, 8, 2 },&lt;br /&gt;
	{&#039;Netherite Chestplate&#039;, 8, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legs = {&lt;br /&gt;
	{&#039;Leather Pants&#039;, 2 },&lt;br /&gt;
	{&#039;Chainmail Leggings&#039;, 4 },&lt;br /&gt;
	{&#039;Iron Leggings&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Leggings&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond Leggings&#039;, 6, 2 },&lt;br /&gt;
	{&#039;Netherite Leggings&#039;, 6, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local feet = {&lt;br /&gt;
	{&#039;Leather Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Iron Boots&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond Boots&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Boots&#039;, 3, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local equipped = {&lt;br /&gt;
	{&#039;Leather Horse Armor&#039;, 3 },&lt;br /&gt;
	{&#039;Iron Horse Armor&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Horse Armor&#039;, 7 },&lt;br /&gt;
	{&#039;Diamond Horse Armor&#039;, 11, 2 },&lt;br /&gt;
	{&#039;Wolf Armor&#039;, 11 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local bodyParts = {&lt;br /&gt;
    {head, &amp;quot;on Head&amp;quot;},&lt;br /&gt;
    {body, &amp;quot;on Body&amp;quot;},&lt;br /&gt;
    {legs, &amp;quot;on Legs&amp;quot;},&lt;br /&gt;
    {feet, &amp;quot;on Feet&amp;quot;},&lt;br /&gt;
    {equipped, &amp;quot;equipped&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local trimMaterial = {&lt;br /&gt;
	{&#039;Quartz&#039;, &#039;&amp;amp;h&#039;},&lt;br /&gt;
	{&#039;Iron&#039;, &#039;&amp;amp;i&#039;},&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;&amp;amp;j&#039;},&lt;br /&gt;
	{&#039;Redstone&#039;, &#039;&amp;amp;y&#039;},&lt;br /&gt;
	{&#039;Copper&#039;, &#039;&amp;amp;z&#039;},&lt;br /&gt;
	{&#039;Gold&#039;, &#039;&amp;amp;p&#039;},&lt;br /&gt;
	{&#039;Emerald&#039;, &#039;&amp;amp;q&#039;},&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;&amp;amp;s&#039;},&lt;br /&gt;
	{&#039;Lapis&#039;, &#039;&amp;amp;t&#039;},&lt;br /&gt;
	{&#039;Amethyst&#039;, &#039;&amp;amp;u&#039;},&lt;br /&gt;
	{&#039;Resin&#039;, &#039;&amp;amp;v&#039;},&lt;br /&gt;
	{&#039;Amber&#039;, &#039;&amp;amp;6&#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, bodyPart in ipairs(bodyParts) do&lt;br /&gt;
    local items = bodyPart[1]&lt;br /&gt;
    local bodyPartName = bodyPart[2]&lt;br /&gt;
    &lt;br /&gt;
    for _, toolProps in ipairs(items) do&lt;br /&gt;
        local aliasName = toolProps[1]&lt;br /&gt;
        local damagedName&lt;br /&gt;
        if string.find(aliasName, &amp;quot;Horse Armor&amp;quot;) then&lt;br /&gt;
            damagedName = aliasName &lt;br /&gt;
        else&lt;br /&gt;
            damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
        end     &lt;br /&gt;
        local text = &#039;/&amp;amp;7When &#039; .. bodyPartName .. &#039;:/&amp;amp;9+&#039; .. toolProps[2] .. &#039; Armor/&#039;&lt;br /&gt;
        if toolProps[3] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[3] .. &#039; Armor Toughness/&#039;&lt;br /&gt;
        end&lt;br /&gt;
        if toolProps[4] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[4] .. &#039; Knockback Resistance&#039;&lt;br /&gt;
        end&lt;br /&gt;
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
        aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
        if bodyPartName ~= &amp;quot;equipped&amp;quot; then&lt;br /&gt;
			for _, materialType in ipairs( trimMaterial ) do&lt;br /&gt;
	        	local trimName = materialType[1] .. &#039; Trim &#039; .. aliasName&lt;br /&gt;
				local trimText = &#039;&amp;amp;7Upgrade:/&amp;amp;#160;&#039; .. materialType[2] .. &#039;Armor Trim/&amp;amp;#160;&#039; .. materialType[1] .. &#039; Material/&#039;&lt;br /&gt;
				aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Lists of item variants --&lt;br /&gt;
local itemVariants = {&lt;br /&gt;
	[&#039;Small Flower&#039;] = { &#039;Oxeye Daisy&#039;, &#039;Cornflower&#039;, &#039;Lily of the Valley&#039;, &#039;Wither Rose&#039;, &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039;, &#039;Azure Bluet&#039;, &#039;Allium&#039;, &#039;Blue Orchid&#039;, &#039;Poppy&#039;, &#039;Dandelion&#039;, &#039;Torchflower&#039;, &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Eyeblossom&#039;] = { &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Mushroom&#039;] = { &#039;Red Mushroom&#039;, &#039;Brown Mushroom&#039; },&lt;br /&gt;
	[&#039;Quartz Block&#039;] = { &#039;Block of Quartz&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Quartz Pillar&#039; },&lt;br /&gt;
	[&#039;Red Sandstone&#039;] = { &#039;Red Sandstone&#039;, &#039;Cut Red Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Smooth Red Sandstone&#039; },&lt;br /&gt;
	[&#039;Sandstone&#039;] = { &#039;Sandstone&#039;, &#039;Cut Sandstone&#039;, &#039;Chiseled Sandstone&#039;, &#039;Smooth Sandstone&#039; },&lt;br /&gt;
	[&#039;Stone Bricks&#039;] = { &#039;Stone Bricks&#039;, &#039;Mossy Stone Bricks&#039;, &#039;Cracked Stone Bricks&#039;, &#039;Chiseled Stone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Slab&#039;] = { &#039;Stone Slab&#039;, &#039;Cobblestone Slab&#039;, &#039;Mossy Cobblestone Slab&#039;, &#039;Smooth Stone Slab&#039;, &#039;Stone Brick Slab&#039;, &#039;Mossy Stone Brick Slab&#039;, &lt;br /&gt;
		&#039;Granite Slab&#039;, &#039;Polished Granite Slab&#039;, &#039;Diorite Slab&#039;, &#039;Polished Diorite Slab&#039;, &#039;Andesite Slab&#039;, &#039;Polished Andesite Slab&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Slab&#039;, &#039;Polished Deepslate Slab&#039;, &#039;Deepslate Brick Slab&#039;, &#039;Deepslate Tile Slab&#039;, &#039;Brick Slab&#039;, &#039;Mud Brick Slab&#039;, &#039;Resin Brick Slab&#039;,&lt;br /&gt;
		&#039;Sandstone Slab&#039;, &#039;Smooth Sandstone Slab&#039;, &#039;Cut Sandstone Slab&#039;, &#039;Red Sandstone Slab&#039;, &#039;Smooth Red Sandstone Slab&#039;, &#039;Cut Red Sandstone Slab&#039;, &#039;Prismarine Slab&#039;, &#039;Prismarine Brick Slab&#039;, &#039;Dark Prismarine Slab&#039;, &lt;br /&gt;
		&#039;Nether Brick Slab&#039;, &#039;Red Nether Brick Slab&#039;, &#039;Blackstone Slab&#039;, &#039;Polished Blackstone Slab&#039;, &#039;Polished Blackstone Brick Slab&#039;, &#039;End Stone Brick Slab&#039;, &#039;Purpur Slab&#039;, &#039;Quartz Slab&#039;, &#039;Smooth Quartz Slab&#039;, &#039;Petrified Oak Slab&#039; },&lt;br /&gt;
	[&#039;Stone Stairs&#039;] = { &#039;Stone Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &lt;br /&gt;
		&#039;Granite Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Resin Brick Stairs&#039;, &lt;br /&gt;
		&#039;Sandstone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &lt;br /&gt;
		&#039;Nether Brick Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Smooth Quartz Stairs&#039; },&lt;br /&gt;
	[&#039;Wall&#039;] = { &#039;Cobblestone Wall&#039;, &#039;Mossy Cobblestone Wall&#039;, &#039;Stone Brick Wall&#039;, &#039;Mossy Stone Brick Wall&#039;, &#039;Granite Wall&#039;, &#039;Diorite Wall&#039;, &#039;Andesite Wall&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;, &#039;Polished Deepslate Wall&#039;, &#039;Deepslate Brick Wall&#039;, &#039;Deepslate Tile Wall&#039;, &#039;Brick Wall&#039;, &#039;Mud Brick Wall&#039;, &#039;Resin Brick Wall&#039;, &#039;Sandstone Wall&#039;, &#039;Red Sandstone Wall&#039;, &#039;Prismarine Wall&#039;, &lt;br /&gt;
		&#039;Nether Brick Wall&#039;, &#039;Red Nether Brick Wall&#039;, &#039;Blackstone Wall&#039;, &#039;Polished Blackstone Wall&#039;, &#039;Polished Blackstone Brick Wall&#039;, &#039;End Stone Brick Wall&#039; },&lt;br /&gt;
	[&#039;Purpur Block&#039;] = { &#039;Purpur Block&#039;, &#039;Purpur Pillar&#039; },&lt;br /&gt;
	[&#039;Stone&#039;] = { &#039;Stone&#039;, &#039;Andesite&#039;, &#039;Granite&#039;, &#039;Diorite&#039;, &#039;Polished Andesite&#039;, &#039;Polished Granite&#039;, &#039;Polished Diorite&#039; },&lt;br /&gt;
	[&#039;Resin Block&#039;] = { &#039;Block of Resin&#039;, &#039;Resin Bricks&#039;, &#039;Chiseled Resin Bricks&#039; },&lt;br /&gt;
	[&#039;Tulip&#039;] = { &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039; },&lt;br /&gt;
	[&#039;Prismarine&#039;] = { &#039;Prismarine&#039;, &#039;Prismarine Bricks&#039;, &#039;Dark Prismarine&#039; },&lt;br /&gt;
	[&#039;Ore&#039;] = { &#039;Coal Ore&#039;, &#039;Iron Ore&#039;, &#039;Gold Ore&#039;, &#039;Lapis Lazuli Ore&#039;, &#039;Redstone Ore&#039;, &#039;Emerald Ore&#039;, &#039;Diamond Ore&#039;, &#039;Nether Quartz Ore&#039;, &#039;Nether Gold Ore&#039;, &#039;Deepslate Coal Ore&#039;, &lt;br /&gt;
		&#039;Deepslate Copper Ore&#039;, &#039;Deepslate Emerald Ore&#039;, &#039;Deepslate Iron Ore&#039;, &#039;Deepslate Gold Ore&#039;, &#039;Deepslate Lapis Lazuli Ore&#039;, &#039;Deepslate Redstone Ore&#039;, &#039;Deepslate Diamond Ore&#039;},&lt;br /&gt;
	[&#039;Dead Coral Block&#039;] = { &#039;Dead Tube Coral Block&#039;, &#039;Dead Brain Coral Block&#039;, &#039;Dead Bubble Coral Block&#039;, &#039;Dead Fire Coral Block&#039;, &#039;Dead Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Coral Block&#039;] = { &#039;Tube Coral Block&#039;, &#039;Brain Coral Block&#039;, &#039;Bubble Coral Block&#039;, &#039;Fire Coral Block&#039;, &#039;Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Dead Coral&#039;] = { &#039;Dead Tube Coral&#039;, &#039;Dead Brain Coral&#039;, &#039;Dead Bubble Coral&#039;, &#039;Dead Fire Coral&#039;, &#039;Dead Horn Coral&#039; },&lt;br /&gt;
	[&#039;Dead Coral Fan&#039;] = { &#039;Dead Tube Coral Fan&#039;, &#039;Dead Brain Coral Fan&#039;, &#039;Dead Bubble Coral Fan&#039;, &#039;Dead Fire Coral Fan&#039;, &#039;Dead Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Coral&#039;] = { &#039;Tube Coral&#039;, &#039;Brain Coral&#039;, &#039;Bubble Coral&#039;, &#039;Fire Coral&#039;, &#039;Horn Coral&#039; },&lt;br /&gt;
	[&#039;Coral Fan&#039;] = { &#039;Tube Coral Fan&#039;, &#039;Brain Coral Fan&#039;, &#039;Bubble Coral Fan&#039;, &#039;Fire Coral Fan&#039;, &#039;Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Torch&#039;] = { &#039;Torch&#039;, &#039;Soul Torch&#039; },&lt;br /&gt;
	[&#039;Lantern&#039;] = { &#039;Lantern&#039;, &#039;Soul Lantern&#039; },&lt;br /&gt;
	[&#039;Fungus&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Fungi&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Roots&#039;] = { &#039;Crimson Roots&#039;, &#039;Warped Roots&#039; },&lt;br /&gt;
	[&#039;Nylium&#039;] = { &#039;Crimson Nylium&#039;, &#039;Warped Nylium&#039; },&lt;br /&gt;
	[&#039;Soul Sand&#039;] = { &#039;Soul Sand&#039;, &#039;Soul Soil&#039; },&lt;br /&gt;
	[&#039;Campfire&#039;] = { &#039;Campfire&#039;, &#039;Soul Campfire&#039; },&lt;br /&gt;
	[&#039;Blackstone&#039;] = { &#039;Blackstone&#039;, &#039;Polished Blackstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Polished Blackstone Bricks&#039;, &#039;Cracked Polished Blackstone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Button&#039;] = { &#039;Stone Button&#039;, &#039;Polished Blackstone Button&#039; },&lt;br /&gt;
	[&#039;Stone Pressure Plate&#039;] = { &#039;Stone Pressure Plate&#039;, &#039;Polished Blackstone Pressure Plate&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Copper --&lt;br /&gt;
local copperstuff = {&lt;br /&gt;
	&#039;Block of Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper Stairs&#039;,&lt;br /&gt;
	&#039;Cut Copper Slab&#039;,&lt;br /&gt;
	&#039;Chiseled Copper&#039;,&lt;br /&gt;
	&#039;Copper Grate&#039;,&lt;br /&gt;
	&#039;Copper Bulb&#039;,&lt;br /&gt;
	&#039;Copper Door&#039;,&lt;br /&gt;
	&#039;Copper Trapdoor&#039;,&lt;br /&gt;
}&lt;br /&gt;
local coppervariants = { &#039;&#039;, &#039;Exposed &#039;, &#039;Weathered &#039;, &#039;Oxidized &#039; }&lt;br /&gt;
for _, copper in ipairs( copperstuff ) do&lt;br /&gt;
	itemVariants[&#039;Unwaxed &#039; .. copper] = {}&lt;br /&gt;
	itemVariants[&#039;Waxed &#039; .. copper] = {}&lt;br /&gt;
	for _, coppervariant in ipairs( coppervariants ) do&lt;br /&gt;
		local name = coppervariant .. copper&lt;br /&gt;
		if copper == &#039;Block of Copper&#039; and coppervariant ~= &#039;&#039; then&lt;br /&gt;
			name = coppervariant .. &#039;Copper&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( itemVariants[&#039;Unwaxed &#039; .. copper], name )&lt;br /&gt;
		table.insert( itemVariants[&#039;Waxed &#039; .. copper], name )&lt;br /&gt;
	end&lt;br /&gt;
	itemVariants[copper] = {}&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Unwaxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Waxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for aliasName, aliasItems in pairs( itemVariants ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. aliasName] = aliasItems&lt;br /&gt;
	aliases[&#039;Matching &#039; .. aliasName] = aliasItems&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Discs --&lt;br /&gt;
local discs = { &lt;br /&gt;
	{ &#039;13&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Cat&#039;,                 &#039;C418&#039;,         &#039;cat&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Blocks&#039;,              &#039;C418&#039;,         &#039;blocks&#039;,    &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Chirp&#039;,               &#039;C418&#039;,         &#039;chirp&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Far&#039;,                 &#039;C418&#039;,         &#039;far&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mall&#039;,                &#039;C418&#039;,         &#039;mall&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mellohi&#039;,             &#039;C418&#039;,         &#039;mellohi&#039;,   &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Stal&#039;,                &#039;C418&#039;,         &#039;stal&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Strad&#039;,               &#039;C418&#039;,         &#039;strad&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Ward&#039;,                &#039;C418&#039;,         &#039;ward&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;11&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wait&#039;,                &#039;C418&#039;,         &#039;wait&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Otherside&#039;,           &#039;Lena Raine&#039;,   &#039;otherside&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Pigstep&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;5&#039;,                   &#039;Samuel Åberg&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Relic&#039;,               &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Precipice&#039;,           &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Creator&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Creator (Music Box)&#039;, &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
}&lt;br /&gt;
for _, disc in ipairs( discs ) do&lt;br /&gt;
    local rarityColor = disc[4]&lt;br /&gt;
	local name = &#039;Music Disc &#039; .. disc[1]&lt;br /&gt;
	local artist = disc[2]&lt;br /&gt;
	local trackname = disc[1]&lt;br /&gt;
	if disc[3] ~= &#039;&#039; then&lt;br /&gt;
		trackname = disc[3]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = rarityColor .. &#039;Music Disc&#039;, name = name, text = &#039;&amp;amp;7&#039; .. artist .. &#039; - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Disc Fragments --&lt;br /&gt;
local disc_fragments = { &lt;br /&gt;
	{ &#039;5&#039;,    },&lt;br /&gt;
}&lt;br /&gt;
for _, disc_fragment in ipairs( disc_fragments ) do&lt;br /&gt;
	local name = &#039;Disc Fragment &#039; .. disc_fragment[1]&lt;br /&gt;
	local trackname = disc_fragment[1]&lt;br /&gt;
	if disc_fragment[2] ~= nil then&lt;br /&gt;
		trackname = disc_fragment[2]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;eDisc Fragment&#039;, name = name, text = &#039;&amp;amp;7Music Disc - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Paintings --&lt;br /&gt;
local paintings = { &lt;br /&gt;
	{ &#039;Kebab med tre pepperoni&#039;,    &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;de_aztec&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Albanian&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Target Successfully Bombed&#039;, &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Paradisträd&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wasteland&#039;,                  &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Meditative&#039;,                 &#039;Sarah Boeving&#039;,           &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wanderer&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Graham&#039;,                     &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Prairie Ride&#039;,               &#039;Sarah Boeving&#039;,           &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;The Pool&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Bonjour Monsieur Courbet&#039;,   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;sunset_dense&#039;,               &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Seaside&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Creebet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Match&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bust&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The Stage Is Set&#039;,           &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The void&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Skull and Roses&#039;,            &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wither&#039;,                     &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Baroque&#039;,                    &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Humble&#039;,                     &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bouquet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cavebird&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cotán&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Endboss&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Fern&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Owlemons&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Sunflowers&#039;,                 &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Tides&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Backyard&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Pond&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Fighters&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Changing&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Finding&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Lowmist&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Passage&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Mortal Coil&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Kong&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Pointer&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Pigscene&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Skull On Fire&#039;,              &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Unpacked&#039;,                   &#039;Sarah Boeving&#039;,           &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Orb&#039;,                        &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Earth&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wind&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Fire&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Water&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; }&lt;br /&gt;
}&lt;br /&gt;
for _, painting in ipairs( paintings ) do&lt;br /&gt;
	local name = &#039;Painting &#039; .. painting[1]&lt;br /&gt;
	local artist = painting[2]&lt;br /&gt;
	local artwork = painting[1]&lt;br /&gt;
	local size = painting[3]&lt;br /&gt;
	aliases[name] = { title = &#039;Painting&#039;, name = &#039;Painting&#039;, text = &#039;&amp;amp;e&#039; .. artwork .. &#039;/&amp;amp;7&#039; .. artist .. &#039;/&#039; .. &#039;&amp;amp;f&#039; .. size }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Damaged items, note it skips tools, weapons, and armor as they are handled above to add the damage tooltip. --&lt;br /&gt;
-- Items with rarity (such as Mace and Elytra) are hard-coded in the module&#039;s beginning.&lt;br /&gt;
local damagedItems = {&lt;br /&gt;
	&#039;Bow&#039;,&lt;br /&gt;
	&#039;Brush&#039;,&lt;br /&gt;
	&#039;Carrot on a Stick&#039;,&lt;br /&gt;
	&#039;Crossbow&#039;,&lt;br /&gt;
	&#039;Fishing Rod&#039;,&lt;br /&gt;
	&#039;Flint and Steel&#039;,&lt;br /&gt;
	&#039;Shears&#039;,&lt;br /&gt;
	&#039;Shield&#039;&lt;br /&gt;
}&lt;br /&gt;
for _, item in ipairs( damagedItems ) do&lt;br /&gt;
	local name = &#039;Damaged &#039; .. item&lt;br /&gt;
	aliases[name] = { title = item, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Banners and colored items --&lt;br /&gt;
local patterns = {&lt;br /&gt;
	&#039;Base Dexter Canton&#039;,&lt;br /&gt;
	&#039;Base&#039;,&lt;br /&gt;
	&#039;Base Gradient&#039;,&lt;br /&gt;
	&#039;Base Indented&#039;,&lt;br /&gt;
	&#039;Base Sinister Canton&#039;,&lt;br /&gt;
	&#039;Bend&#039;,&lt;br /&gt;
	&#039;Bend Sinister&#039;,&lt;br /&gt;
	&#039;Bordure&#039;,&lt;br /&gt;
	&#039;Bordure Indented&#039;,&lt;br /&gt;
	&#039;Chevron&#039;,&lt;br /&gt;
	&#039;Chief Dexter Canton&#039;,&lt;br /&gt;
	&#039;Chief&#039;,&lt;br /&gt;
	&#039;Chief Indented&#039;,&lt;br /&gt;
	&#039;Chief Sinister Canton&#039;,&lt;br /&gt;
	&#039;Creeper Charge&#039;,&lt;br /&gt;
	&#039;Cross&#039;,&lt;br /&gt;
	&#039;Fess&#039;,&lt;br /&gt;
	&#039;Field Masoned&#039;,&lt;br /&gt;
	&#039;Flow&#039;,&lt;br /&gt;
	&#039;Flower Charge&#039;,&lt;br /&gt;
	&#039;Globe&#039;,&lt;br /&gt;
	&#039;Gradient&#039;,&lt;br /&gt;
	&#039;Guster&#039;,&lt;br /&gt;
	&#039;Inverted Chevron&#039;,&lt;br /&gt;
	&#039;Lozenge&#039;,&lt;br /&gt;
	&#039;Thing&#039;,&lt;br /&gt;
	&#039;Pale&#039;,&lt;br /&gt;
	&#039;Pale Dexter&#039;,&lt;br /&gt;
	&#039;Pale Sinister&#039;,&lt;br /&gt;
	&#039;Paly&#039;,&lt;br /&gt;
	&#039;Per Bend&#039;,&lt;br /&gt;
	&#039;Per Bend Inverted&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister Inverted&#039;,&lt;br /&gt;
	&#039;Per Fess&#039;,&lt;br /&gt;
	&#039;Per Fess Inverted&#039;,&lt;br /&gt;
	&#039;Per Pale&#039;,&lt;br /&gt;
	&#039;Per Pale Inverted&#039;,&lt;br /&gt;
	&#039;Piglin&#039;,&lt;br /&gt;
	&#039;Snout&#039;,&lt;br /&gt;
	&#039;Roundel&#039;,&lt;br /&gt;
	&#039;Saltire&#039;,&lt;br /&gt;
	&#039;Skull Charge&#039;&lt;br /&gt;
}&lt;br /&gt;
local colors = {&lt;br /&gt;
	&#039;White&#039;,&lt;br /&gt;
	&#039;Light Gray&#039;,&lt;br /&gt;
	&#039;Gray&#039;,&lt;br /&gt;
	&#039;Black&#039;,&lt;br /&gt;
	&#039;Brown&#039;,&lt;br /&gt;
	&#039;Red&#039;,&lt;br /&gt;
	&#039;Orange&#039;,&lt;br /&gt;
	&#039;Yellow&#039;,&lt;br /&gt;
	&#039;Lime&#039;,&lt;br /&gt;
	&#039;Green&#039;,&lt;br /&gt;
	&#039;Cyan&#039;,&lt;br /&gt;
	&#039;Light Blue&#039;,&lt;br /&gt;
	&#039;Blue&#039;,&lt;br /&gt;
	&#039;Purple&#039;,&lt;br /&gt;
	&#039;Magenta&#039;,&lt;br /&gt;
	&#039;Pink&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Firework Stars --&lt;br /&gt;
local fireworkStar = {}&lt;br /&gt;
for _, color in ipairs( colors ) do&lt;br /&gt;
	local name = color .. &#039; Firework Star&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;Firework Star&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color }&lt;br /&gt;
	table.insert( fireworkStar, aliases[name] )&lt;br /&gt;
	for _, pattern in ipairs( patterns ) do&lt;br /&gt;
		name = color .. &#039; &#039; .. pattern .. &#039; Banner&#039;&lt;br /&gt;
		aliases[name] = { title = &#039;Banner&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color .. &#039; &#039; .. pattern }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Firework Star&#039;] = fireworkStar&lt;br /&gt;
aliases[&#039;Matching Firework Star&#039;] = fireworkStar&lt;br /&gt;
&lt;br /&gt;
-- Items that use the sixteen colors --&lt;br /&gt;
local coloredItems = {&lt;br /&gt;
	withWhite = {&lt;br /&gt;
		&#039;Balloon&#039;,&lt;br /&gt;
		&#039;Banner&#039;,&lt;br /&gt;
		&#039;Bed&#039;,&lt;br /&gt;
		&#039;Carpet&#039;,&lt;br /&gt;
		&#039;Concrete&#039;,&lt;br /&gt;
		&#039;Concrete Powder&#039;,&lt;br /&gt;
		&#039;Glazed Terracotta&#039;,&lt;br /&gt;
		&#039;Glow Stick&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Shield&#039;,&lt;br /&gt;
		&#039;Shulker Box&#039;,&lt;br /&gt;
		&#039;Stained Glass&#039;,&lt;br /&gt;
		&#039;Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Wool&#039;,&lt;br /&gt;
&lt;br /&gt;
		&#039;$Dyed Bundle&#039;,&lt;br /&gt;
		&#039;$Dyed Candle&#039;,&lt;br /&gt;
		&#039;$Dyed Terracotta&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	noWhite = {&lt;br /&gt;
		&#039;$Dyed Wool&#039;,&lt;br /&gt;
		&#039;$Dyed Bed&#039;,&lt;br /&gt;
		&#039;$Dyed Carpet&#039;,&lt;br /&gt;
		&#039;$Colored Dye&#039;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local coloredBadItems = {&lt;br /&gt;
	[&#039;Light Gray Glow Stick&#039;] = 1,&lt;br /&gt;
	[&#039;Black Glow Stick&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for type, items in pairs( coloredItems ) do&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local coloredItemAliases = {}&lt;br /&gt;
		local defaultItemAliases&lt;br /&gt;
&lt;br /&gt;
		if item:find( &#039;%$[^1]&#039; ) then&lt;br /&gt;
			defaultItemAliases = {}&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type == &#039;noWhite&#039; then&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+&#039;, &#039;White&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( defaultItemAliases, itemName )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, color in ipairs( colors ) do&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type ~= &#039;noWhite&#039; or color ~= &#039;White&#039; then&lt;br /&gt;
				if item:find( &#039;%$1&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$1&#039;, color )&lt;br /&gt;
				elseif item:find( &#039;%$&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$%w+&#039;, color )&lt;br /&gt;
				else&lt;br /&gt;
					itemName = color .. &#039; &#039; .. item&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not coloredBadItems[itemName] then&lt;br /&gt;
				if defaultItemAliases then&lt;br /&gt;
					table.insert( defaultItemAliases, itemName )&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table.insert( coloredItemAliases, itemName )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if defaultItemAliases then&lt;br /&gt;
			local defaultItem = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			aliases[&#039;Any &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
			aliases[&#039;Matching &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
		end&lt;br /&gt;
		item = item:gsub( &#039;%$1 &#039;, &#039;&#039; )&lt;br /&gt;
		item = item:gsub( &#039;%$&#039;, &#039;&#039; )&lt;br /&gt;
		aliases[&#039;Any &#039; .. item] = coloredItemAliases&lt;br /&gt;
		aliases[&#039;Matching &#039; .. item] = coloredItemAliases&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- list of all potions with no effects&lt;br /&gt;
local noEffects = {&lt;br /&gt;
	&#039;Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Potion&#039;,&lt;br /&gt;
	&#039;Thick Potion&#039;,&lt;br /&gt;
	&#039;Mundane Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Potion&#039;,&lt;br /&gt;
	&#039;Splash Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Splash Potion&#039;,&lt;br /&gt;
	&#039;Thick Splash Potion&#039;,&lt;br /&gt;
	&#039;Mundane Splash Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Splash Potion&#039;,&lt;br /&gt;
	&#039;Lingering Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Lingering Potion&#039;,&lt;br /&gt;
	&#039;Thick Lingering Potion&#039;,&lt;br /&gt;
	&#039;Mundane Lingering Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Lingering Potion&#039;,&lt;br /&gt;
	&#039;Tipped Arrow&#039;,&lt;br /&gt;
	&#039;Arrow of Splashing&#039;,&lt;br /&gt;
	&#039;Uncraftable Tipped Arrow&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs(noEffects) do&lt;br /&gt;
	aliases[name] = { name = name, text = &#039;&amp;amp;7No Effects&#039; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start these lists with the no effect items as names are not normal&lt;br /&gt;
local potionItems = {&lt;br /&gt;
	[&#039;Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Splash Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Splash Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Splash Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Lingering Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Lingering Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Lingering Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Tipped Arrow&#039;] = {&lt;br /&gt;
		aliases[&#039;Arrow of Splashing&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Potions --&lt;br /&gt;
local effects = {&lt;br /&gt;
	-- durations are in the order normal, extended, enhanced&lt;br /&gt;
	{name = &#039;Regeneration&#039;, effect = &#039;&amp;amp;9Regeneration&#039;, enhanced = &#039;II&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:22&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Swiftness&#039;, effect = &#039;&amp;amp;9Speed&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Fire Resistance&#039;, effect = &#039;&amp;amp;9Fire Resistance&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Poison&#039;, effect = &#039;&amp;amp;cPoison&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:21&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Healing&#039;, effect = &#039;&amp;amp;9Instant Health&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Night Vision&#039;,    effect = &#039;&amp;amp;9Night Vision&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Weakness&#039;,        effect = &#039;&amp;amp;cWeakness&#039;,        durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Strength&#039;, effect = &#039;&amp;amp;9Strength&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039;}, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Slowness&#039;, effect = &#039;&amp;amp;cSlowness&#039;, enhanced = &#039;IV&#039;, &lt;br /&gt;
		durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039;, &#039;0:20&#039;}, lingering = {&#039;0:22&#039;, &#039;1:00&#039;, &#039;0:05&#039;}, arrow = { &#039;0:11&#039;, &#039;0:30&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Leaping&#039;, effect = &#039;&amp;amp;9Jump Boost&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Harming&#039;, effect = &#039;&amp;amp;cInstant Damage&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Water Breathing&#039;, effect = &#039;&amp;amp;9Water Breathing&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Invisibility&#039;,    effect = &#039;&amp;amp;9Invisibility&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Slow Falling&#039;,    effect = &#039;&amp;amp;9Slow Falling&#039;,    durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Luck&#039;,  effect = &#039;&amp;amp;9Luck&#039;,   durations = { normal = { &#039;5:00&#039; }, lingering = { &#039;1:15&#039; }, arrow = { &#039;0:37&#039; }}},&lt;br /&gt;
	{ name = &#039;Decay&#039;, effect = &#039;&amp;amp;cWither II&#039;, durations = { normal = { &#039;0:40&#039; }, lingering = { &#039;0:10&#039; }, arrow = { &#039;0:05&#039; }}},&lt;br /&gt;
	{ name = &#039;the Turtle Master&#039;, text = &#039;&amp;amp;cSlowness IV ($1)/&amp;amp;9Resistance III ($1)&#039;, enhanced = &#039;&amp;amp;cSlowness VI ($1)/&amp;amp;9Resistance IV ($1)&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:20&#039;, &#039;0:40&#039;, &#039;0:20&#039; }, lingering = { &#039;0:15&#039;, &#039;0:45&#039;, &#039;0:15&#039; }, arrow = {  &#039;0:07&#039;, &#039;0:22&#039;, &#039;0:07&#039; }}},&lt;br /&gt;
	{ name = &#039;Oozing&#039;,  effect = &#039;&amp;amp;cOozing&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Infestation&#039;,  effect = &#039;&amp;amp;cInfested&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Weaving&#039;,  effect = &#039;&amp;amp;cWeaving&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Wind Charging&#039;,  effect = &#039;&amp;amp;cWind Charged&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}}&lt;br /&gt;
}&lt;br /&gt;
local types = {&lt;br /&gt;
	{name = &#039;Potion&#039;,           durations = &#039;normal&#039;,    text = &#039;Potion of &#039;},&lt;br /&gt;
	{name = &#039;Splash Potion&#039;,    durations = &#039;normal&#039;,    text = &#039;Splash Potion of &#039;},&lt;br /&gt;
	{name = &#039;Lingering Potion&#039;, durations = &#039;lingering&#039;, text = &#039;Lingering Potion of &#039;},&lt;br /&gt;
	{name = &#039;Tipped Arrow&#039;,     durations = &#039;arrow&#039;,     text = &#039;Arrow of &#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, effect in ipairs(effects) do&lt;br /&gt;
	for _, type in ipairs(types) do&lt;br /&gt;
		-- form name, it will be reused&lt;br /&gt;
		local name =  type.text .. effect.name&lt;br /&gt;
		local potionName = {}&lt;br /&gt;
		if type.name == &#039;Tipped Arrow&#039; then&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		else&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if we have durations, add times&lt;br /&gt;
		if effect.durations then&lt;br /&gt;
			local durations = effect.durations[type.durations]&lt;br /&gt;
			&lt;br /&gt;
			-- turtle master is weird, so just do a fancy string replacement&lt;br /&gt;
			if effect.text then&lt;br /&gt;
				aliases[name] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[1] ) }&lt;br /&gt;
				aliases[name .. &#039; Extended&#039;] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
				aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.enhanced:gsub( &#039;%$1&#039;, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
			else&lt;br /&gt;
				-- we always have normal&lt;br /&gt;
				aliases[name] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[1] ) }&lt;br /&gt;
			&lt;br /&gt;
				-- ensure we have extended&lt;br /&gt;
				if durations[2] then&lt;br /&gt;
					aliases[name .. &#039; Extended&#039;] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
					&lt;br /&gt;
					-- and enhanced&lt;br /&gt;
					if effect.enhanced then&lt;br /&gt;
						aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = string.format( &#039;%s %s (%s)&#039;, effect.effect, effect.enhanced, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- otherwise its just effect, currently every potion with no duration can be enhanced&lt;br /&gt;
			aliases[name] = { name = potionName, text = effect.effect}&lt;br /&gt;
			aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.effect .. &#039; &#039; .. effect.enhanced .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- add the base potion to the any list&lt;br /&gt;
		table.insert(potionItems[type.name], aliases[name])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- build the any lists&lt;br /&gt;
for item, potionAliases in pairs( potionItems ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. item] = potionAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = potionAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wood --&lt;br /&gt;
local woodTypes = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Oak&#039;,&lt;br /&gt;
	    &#039;Spruce&#039;,&lt;br /&gt;
	    &#039;Birch&#039;,&lt;br /&gt;
	    &#039;Jungle&#039;,&lt;br /&gt;
	    &#039;Acacia&#039;,&lt;br /&gt;
        &#039;Dark Oak&#039;,&lt;br /&gt;
        &#039;Mangrove&#039;,&lt;br /&gt;
        &#039;Cherry&#039;,&lt;br /&gt;
        &#039;Pale Oak&#039;,&lt;br /&gt;
        &#039;Bamboo&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Crimson&#039;,&lt;br /&gt;
        &#039;Warped&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {},&lt;br /&gt;
}&lt;br /&gt;
local woodTypeWorld = {}&lt;br /&gt;
for _, world in ipairs({&#039;overworld&#039;, &#039;nether&#039;}) do&lt;br /&gt;
	local woods = woodTypes[world]&lt;br /&gt;
	for _, type in ipairs(woods) do&lt;br /&gt;
		woodTypeWorld[type] = world&lt;br /&gt;
        table.insert(woodTypes.both, type)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
local woodItems = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Log&#039;,&lt;br /&gt;
        &#039;Wood&#039;,&lt;br /&gt;
        &#039;Stripped $1 Log&#039;,&lt;br /&gt;
        &#039;Stripped $1 Wood&#039;,&lt;br /&gt;
        &#039;Boat&#039;,&lt;br /&gt;
        &#039;Boat with Chest&#039;,&lt;br /&gt;
        &#039;Sapling&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Stem&#039;,&lt;br /&gt;
        &#039;Hyphae&#039;,&lt;br /&gt;
        &#039;Stripped $1 Stem&#039;,&lt;br /&gt;
        &#039;Stripped $1 Hyphae&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {&lt;br /&gt;
		-- Any/Matching X or Y&lt;br /&gt;
        &#039;${Log,Stem}&#039;,&lt;br /&gt;
        &#039;${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Log,Stem}&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Dimensional prefixes&lt;br /&gt;
        &#039;$world Planks&#039;,&lt;br /&gt;
        &#039;$world $wood Stairs&#039;,&lt;br /&gt;
        &#039;$world $wood Slab&#039;,&lt;br /&gt;
        &#039;$world $wood Fence&#039;,&lt;br /&gt;
        &#039;$world $wood Fence Gate&#039;,&lt;br /&gt;
        &#039;$world $wood Door&#039;,&lt;br /&gt;
        &#039;$world $wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$world $wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$world $wood Button&#039;,&lt;br /&gt;
        &#039;$world $wood Sign&#039;,&lt;br /&gt;
        &#039;$world $wood Hanging Sign&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Both dimensions&lt;br /&gt;
		-- Items with non-wood variants include $wood&lt;br /&gt;
        &#039;Planks&#039;,&lt;br /&gt;
        &#039;$wood Stairs&#039;,&lt;br /&gt;
        &#039;$wood Slab&#039;,&lt;br /&gt;
        &#039;$wood Fence&#039;,&lt;br /&gt;
        &#039;Fence Gate&#039;,&lt;br /&gt;
        &#039;$wood Door&#039;,&lt;br /&gt;
        &#039;$wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$wood Button&#039;,&lt;br /&gt;
        &#039;Sign&#039;,&lt;br /&gt;
        &#039;Hanging Sign&#039;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
local woodItemWorld = {}&lt;br /&gt;
for world, items in pairs(woodItems) do&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
		-- expand $world (should only happen in &amp;quot;both&amp;quot;)&lt;br /&gt;
        if (item:find(&#039;%$world&#039;)) and world == &#039;both&#039; then&lt;br /&gt;
            item = item:gsub(&#039;%$world &#039;, &#039;&#039;)&lt;br /&gt;
            woodItemWorld[&#039;Overworld &#039; .. item] = &#039;overworld&#039;&lt;br /&gt;
			woodItemWorld[&#039;Nether &#039; .. item] = &#039;nether&#039;&lt;br /&gt;
		else&lt;br /&gt;
			woodItemWorld[item] = world&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local woodBadItems = {&lt;br /&gt;
	[&#039;Bamboo Sapling&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Log&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Log&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local woodNameMapping = {&lt;br /&gt;
	[&#039;Mangrove Sapling&#039;] = &#039;Mangrove Propagule&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat&#039;] = &#039;Bamboo Raft&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat with Chest&#039;] = &#039;Bamboo Raft with Chest&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for item, world in pairs(woodItemWorld) do&lt;br /&gt;
	local itemName = &#039;&#039;&lt;br /&gt;
	local woodAliases = {}&lt;br /&gt;
&lt;br /&gt;
	-- real &amp;quot;linkable&amp;quot; name&lt;br /&gt;
    local realItem = item:gsub(&#039;^Overworld &#039;, &#039;&#039;)&lt;br /&gt;
    realItem = realItem:gsub(&#039;^Nether &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, wood in ipairs(woodTypes[world]) do&lt;br /&gt;
		-- Parse ${,} (world-select) syntax&lt;br /&gt;
		local selector = (woodTypeWorld[wood] == &#039;overworld&#039;) and &amp;quot;%1&amp;quot; or &amp;quot;%2&amp;quot;&lt;br /&gt;
		itemName = realItem:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, selector)&lt;br /&gt;
&lt;br /&gt;
		if itemName:find(&#039;%$wood&#039;) then&lt;br /&gt;
			itemName = itemName:gsub(&#039;%$wood&#039;, wood)&lt;br /&gt;
		elseif itemName:find(&#039;%$1&#039;) then&lt;br /&gt;
			itemName = itemName:gsub( &#039;%$1&#039;, wood)&lt;br /&gt;
		else&lt;br /&gt;
			itemName = wood .. &#039; &#039; .. itemName&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- special handling&lt;br /&gt;
		if woodNameMapping[itemName] then&lt;br /&gt;
			itemName = woodNameMapping[itemName]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not woodBadItems[itemName] then&lt;br /&gt;
			table.insert(woodAliases, itemName)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Parse ${,} (world-select) syntax&lt;br /&gt;
	item = item:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, &amp;quot;%1 or %2&amp;quot;)&lt;br /&gt;
    item = item:gsub(&#039;%$wood&#039;, &#039;Wooden&#039;)&lt;br /&gt;
    item = item:gsub(&#039;%$1 &#039;, &#039;&#039;)&lt;br /&gt;
    aliases[&#039;Any &#039; .. item] = woodAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = woodAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Bedrock Edition Items --&lt;br /&gt;
local editionItems = {&lt;br /&gt;
	BE = {&lt;br /&gt;
		&#039;Acacia Fence Gate&#039;,&lt;br /&gt;
		&#039;Andesite Wall&#039;,&lt;br /&gt;
		&#039;Birch Fence Gate&#039;,&lt;br /&gt;
		&#039;Black Bed&#039;,&lt;br /&gt;
		&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Blue Bed&#039;,&lt;br /&gt;
		&#039;Blue Ice&#039;,&lt;br /&gt;
		&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bow&#039;,&lt;br /&gt;
		&#039;Brick Wall&#039;,&lt;br /&gt;
		&#039;Brown Bed&#039;,&lt;br /&gt;
		&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bucket of Pufferfish&#039;,&lt;br /&gt;
		&#039;Bucket of Tropical Fish&#039;,&lt;br /&gt;
		&#039;Cat Spawn Egg&#039;,&lt;br /&gt;
		&#039;Chest&#039;,&lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Crimson Fence Gate&#039;,&lt;br /&gt;
		&#039;Crying Obsidian&#039;,&lt;br /&gt;
		&#039;Cyan Bed&#039;,&lt;br /&gt;
		&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Dark Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Deepslate Brick Wall&#039;,&lt;br /&gt;
		&#039;Deepslate Tile Wall&#039;,&lt;br /&gt;
		&#039;Desert Village Map&#039;,&lt;br /&gt;
		&#039;Diorite Wall&#039;,&lt;br /&gt;
		&#039;Enchanting Table&#039;,&lt;br /&gt;
		&#039;End Gateway&#039;,&lt;br /&gt;
		&#039;End Portal Frame&#039;,&lt;br /&gt;
		&#039;End Portal&#039;,&lt;br /&gt;
		&#039;End Rod&#039;,&lt;br /&gt;
		&#039;End Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Ender Chest&#039;,&lt;br /&gt;
		&#039;Glass Pane&#039;,&lt;br /&gt;
		&#039;Glowstone&#039;,&lt;br /&gt;
		&#039;Granite Wall&#039;,&lt;br /&gt;
		&#039;Gray Bed&#039;,&lt;br /&gt;
		&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Green Bed&#039;,&lt;br /&gt;
		&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Honey Block&#039;,&lt;br /&gt;
		&#039;Horn Coral Block&#039;,&lt;br /&gt;
		&#039;Iron Bars&#039;,&lt;br /&gt;
		&#039;Jack o\&#039;Lantern&#039;,&lt;br /&gt;
		&#039;Jungle Explorer Map&#039;,&lt;br /&gt;
		&#039;Jungle Fence Gate&#039;,&lt;br /&gt;
		&#039;Jungle Leaves&#039;,&lt;br /&gt;
		&#039;Lava&#039;,&lt;br /&gt;
		&#039;Leather Horse Armor&#039;,&lt;br /&gt;
		&#039;Light&#039;,&lt;br /&gt;
		&#039;Light Blue Bed&#039;,&lt;br /&gt;
		&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Light Gray Bed&#039;,&lt;br /&gt;
		&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Lime Bed&#039;,&lt;br /&gt;
		&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
        &#039;Lodestone Compass&#039;,&lt;br /&gt;
        &#039;Magenta Bed&#039;,&lt;br /&gt;
		&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Magma Block&#039;,&lt;br /&gt;
		&#039;Map&#039;,&lt;br /&gt;
		&#039;Minecart with Command Block&#039;,&lt;br /&gt;
		&#039;Monster Spawner&#039;,&lt;br /&gt;
		&#039;Mossy Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Mossy Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Mud Brick Wall&#039;,&lt;br /&gt;
		&#039;Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Observer&#039;,&lt;br /&gt;
		&#039;Ocean Explorer Map&#039;,&lt;br /&gt;
		&#039;Ochre Froglight&#039;,&lt;br /&gt;
		&#039;Orange Bed&#039;,&lt;br /&gt;
		&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Panda Spawn Egg&#039;,&lt;br /&gt;
		&#039;Pearlescent Froglight&#039;,&lt;br /&gt;
		&#039;Pink Bed&#039;,&lt;br /&gt;
		&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Plains Village Map&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Brick Wall&#039;,&lt;br /&gt;
		&#039;Polished Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Polished Tuff Wall&#039;,&lt;br /&gt;
		&#039;Prismarine Wall&#039;,&lt;br /&gt;
		&#039;Purple Bed&#039;,&lt;br /&gt;
		&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Red Bed&#039;,&lt;br /&gt;
		&#039;Red Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Red Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Resin Brick Wall&#039;,&lt;br /&gt;
		&#039;Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Savanna Village Map&#039;,&lt;br /&gt;
		&#039;Scaffolding&#039;,&lt;br /&gt;
		&#039;Sea Lantern&#039;,&lt;br /&gt;
		&#039;Shroomlight&#039;,&lt;br /&gt;
		&#039;Snowy Village Map&#039;,&lt;br /&gt;
		&#039;Spruce Fence Gate&#039;,&lt;br /&gt;
		&#039;Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Stonecutter&#039;,&lt;br /&gt;
		&#039;Structure Void&#039;,&lt;br /&gt;
		&#039;Swamp Explorer Map&#039;,&lt;br /&gt;
		&#039;Taiga Village Map&#039;,&lt;br /&gt;
		&#039;Trapped Chest&#039;,&lt;br /&gt;
		&#039;Trial Explorer Map&#039;,&lt;br /&gt;
		&#039;Tuff Wall&#039;,&lt;br /&gt;
		&#039;Tuff Brick Wall&#039;,&lt;br /&gt;
		&#039;Verdant Froglight&#039;,&lt;br /&gt;
		&#039;Wandering Trader Spawn Egg&#039;,&lt;br /&gt;
		&#039;Warped Fence Gate&#039;,&lt;br /&gt;
		&#039;White Bed&#039;,&lt;br /&gt;
		&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Woodland Explorer Map&#039;,&lt;br /&gt;
		&#039;Yellow Bed&#039;,&lt;br /&gt;
		&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	LCE = {&lt;br /&gt;
		&#039;Shrub&#039;&lt;br /&gt;
	},&lt;br /&gt;
	    SM = {&lt;br /&gt;
    	&#039;Compass&#039;,&lt;br /&gt;
    	&#039;Diamond Axe&#039;,&lt;br /&gt;
    	&#039;Diamond Hoe&#039;,&lt;br /&gt;
    	&#039;Diamond Pickaxe&#039;,&lt;br /&gt;
    	&#039;Diamond Shovel&#039;,&lt;br /&gt;
    	&#039;Diamond Sword&#039;,&lt;br /&gt;
    	&#039;Flint and Steel&#039;,&lt;br /&gt;
    	&#039;Potion of Invisibility&#039;,&lt;br /&gt;
    	&#039;Potion of Leaping&#039;,&lt;br /&gt;
    	&#039;Potion of Swiftness&#039;,&lt;br /&gt;
    	&#039;TNT&#039;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
for edition, items in pairs(editionItems) do&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local name = item .. &#039; &#039; .. edition&lt;br /&gt;
		aliases[name] = { title = item, name = name }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Light blocks --&lt;br /&gt;
for level = 0, 15 do&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level] = { title = &amp;quot;&amp;amp;dLight&amp;quot;, name = &amp;quot;Light &amp;quot; .. level }&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot;] = { title = &amp;quot;Light&amp;quot;, name = &amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Pottery Sherds --&lt;br /&gt;
local pottery_sherds = { &lt;br /&gt;
	{ &#039;Angler&#039; },&lt;br /&gt;
	{ &#039;Arms Up&#039; },&lt;br /&gt;
	{ &#039;Archer&#039; },&lt;br /&gt;
	{ &#039;Blade&#039; },&lt;br /&gt;
	{ &#039;Brewer&#039; },&lt;br /&gt;
	{ &#039;Burn&#039; },&lt;br /&gt;
	{ &#039;Danger&#039; },&lt;br /&gt;
	{ &#039;Explorer&#039; },&lt;br /&gt;
	{ &#039;Flow&#039; },&lt;br /&gt;
	{ &#039;Friend&#039; },&lt;br /&gt;
	{ &#039;Guster&#039; },&lt;br /&gt;
	{ &#039;Heart&#039; },&lt;br /&gt;
	{ &#039;Heartbreak&#039; },&lt;br /&gt;
	{ &#039;Howl&#039; },&lt;br /&gt;
	{ &#039;Miner&#039; },&lt;br /&gt;
	{ &#039;Mourner&#039; },&lt;br /&gt;
	{ &#039;Plenty&#039; },&lt;br /&gt;
	{ &#039;Prize&#039; },&lt;br /&gt;
	{ &#039;Scrape&#039; },&lt;br /&gt;
	{ &#039;Sheaf&#039; },&lt;br /&gt;
	{ &#039;Shelter&#039; },&lt;br /&gt;
	{ &#039;Skull&#039; },&lt;br /&gt;
	{ &#039;Snort&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local potterySherdAliases = {}&lt;br /&gt;
for _, pottery_sherd in ipairs(pottery_sherds) do&lt;br /&gt;
	local name = pottery_sherd[1] .. &#039; Pottery Sherd&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039; .. name , name = name }&lt;br /&gt;
	table.insert(potterySherdAliases, aliases[name])&lt;br /&gt;
end&lt;br /&gt;
table.insert(potterySherdAliases, &#039;Brick&#039;)&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Pottery Sherd&#039;] = potterySherdAliases&lt;br /&gt;
&lt;br /&gt;
-- Smithing Templates --&lt;br /&gt;
local smithing_templates = {&lt;br /&gt;
	{ &#039;Netherite Upgrade&#039;,    &#039;Diamond Equipment&#039;, &#039;Netherite Ingot&#039;,  &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Bolt Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Coast Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Dune Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Eye Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Flow Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Host Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Raiser Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Rib Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Sentry Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Shaper Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Silence Armor Trim&#039;,   &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;d&#039; },&lt;br /&gt;
	{ &#039;Snout Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Spire Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Tide Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Vex Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Ward Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Wayfinder Armor Trim&#039;, &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wild Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
local smithing_template_array = {}&lt;br /&gt;
local armor_trims_array = {}&lt;br /&gt;
for _,smithing_template in pairs(smithing_templates) do&lt;br /&gt;
    local rarityColor = smithing_template[4]&lt;br /&gt;
	local current_alias = {&lt;br /&gt;
		title = rarityColor .. smithing_template[1],&lt;br /&gt;
		name = smithing_template[1] .. &#039; Smithing Template&#039;,&lt;br /&gt;
		text = &#039;&amp;amp;7&#039; .. &#039;Smithing Template&#039; .. &#039;//Applies to:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[2] .. &#039;/&amp;amp;7Ingredients:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[3],&lt;br /&gt;
	}&lt;br /&gt;
	aliases[smithing_template[1]] = current_alias&lt;br /&gt;
	aliases[smithing_template[1] .. &#039; Smithing Template&#039;] = current_alias&lt;br /&gt;
	table.insert(smithing_template_array,current_alias)&lt;br /&gt;
	if string.find(smithing_template[1],&#039; Armor Trim$&#039;) then&lt;br /&gt;
		table.insert(armor_trims_array,current_alias)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Matching Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Any Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
&lt;br /&gt;
--- Merge all separate slab collections into one &amp;quot;Any Slab&amp;quot; group&lt;br /&gt;
local slabs = {}&lt;br /&gt;
local trapdoors = {}&lt;br /&gt;
for groupName, entries in pairs(aliases) do&lt;br /&gt;
    if groupName:find(&#039;^Any&#039;) then&lt;br /&gt;
         if groupName:find(&#039;%Slab$&#039;) then&lt;br /&gt;
            for _, v in ipairs(entries) do&lt;br /&gt;
                table.insert(slabs, v)&lt;br /&gt;
            end&lt;br /&gt;
        else end&lt;br /&gt;
        if groupName:find(&#039;%Trapdoor$&#039;) then&lt;br /&gt;
           for _, v in ipairs(entries) do&lt;br /&gt;
               table.insert(trapdoors, v)&lt;br /&gt;
           end&lt;br /&gt;
       else end&lt;br /&gt;
    else end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Slab&#039;] = slabs&lt;br /&gt;
aliases[&#039;Any Trapdoor&#039;] = trapdoors&lt;br /&gt;
&lt;br /&gt;
return aliases&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13186</id>
		<title>Module:Inventory slot/Aliases</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:Inventory_slot/Aliases&amp;diff=13186"/>
		<updated>2026-09-27T15:23:56Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local aliases = {&lt;br /&gt;
	-- Common fuel types for furnace --&lt;br /&gt;
	[&#039;Any fuel&#039;] = { &#039;Coal&#039;, &#039;Charcoal&#039;, { title = &#039;Log&#039;, name = &#039;Oak Log&#039; }, { title = &#039;Overworld Planks&#039;, name = &#039;Oak Planks&#039; }, &#039;Lava Bucket&#039;, &#039;Block of Coal&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- All armor --&lt;br /&gt;
	[&#039;Any leather armor&#039;] = { &#039;Leather Cap&#039;, &#039;Leather Tunic&#039;, &#039;Leather Pants&#039;, &#039;Leather Boots&#039; },&lt;br /&gt;
	[&#039;Any golden armor&#039;] = { &#039;Golden Helmet&#039;, &#039;Golden Chestplate&#039;, &#039;Golden Leggings&#039;, &#039;Golden Boots&#039; },&lt;br /&gt;
	[&#039;Any chainmail armor&#039;] = { &#039;Chainmail Helmet&#039;, &#039;Chainmail Chestplate&#039;, &#039;Chainmail Leggings&#039;, &#039;Chainmail Boots&#039; },&lt;br /&gt;
	[&#039;Any iron armor&#039;] = { &#039;Iron Helmet&#039;, &#039;Iron Chestplate&#039;, &#039;Iron Leggings&#039;, &#039;Iron Boots&#039; },&lt;br /&gt;
	[&#039;Any diamond armor&#039;] = { &#039;Diamond Helmet&#039;, &#039;Diamond Chestplate&#039;, &#039;Diamond Leggings&#039;, &#039;Diamond Boots&#039; },&lt;br /&gt;
	[&#039;Any netherite armor&#039;] = { &#039;Netherite Helmet&#039;, &#039;Netherite Chestplate&#039;, &#039;Netherite Leggings&#039;, &#039;Netherite Boots&#039; },&lt;br /&gt;
&lt;br /&gt;
    -- Stones --&lt;br /&gt;
	[&#039;Any Cobblestone or Blackstone&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039; },&lt;br /&gt;
	[&#039;Any stone-tier block&#039;] = { &#039;Cobblestone&#039;, &#039;Blackstone&#039;, &#039;Cobbled Deepslate&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Miscellaeous collections --&lt;br /&gt;
	[&#039;Any leaves&#039;] = { &#039;Oak Leaves&#039;, &#039;Spruce Leaves&#039;, &#039;Birch Leaves&#039;, &#039;Acacia Leaves&#039;, &#039;Jungle Leaves&#039;, &#039;Dark Oak Leaves&#039;, &#039;Mangrove Leaves&#039;, &#039;Cherry Leaves&#039;, &#039;Pale Oak Leaves&#039;, &#039;Azalea Leaves&#039;, &#039;Flowering Azalea Leaves&#039; };&lt;br /&gt;
	[&#039;Any egg&#039;] = { &#039;Egg&#039;, &#039;Blue Egg&#039;, &#039;Brown Egg&#039;};&lt;br /&gt;
	[&#039;Any stairs&#039;] = { &#039;Tuff Stairs&#039;, &#039;Polished Tuff Stairs&#039;, &#039;Tuff Brick Stairs&#039;, &#039;Cut Copper Stairs&#039;, &#039;Exposed Cut Copper Stairs&#039;, &#039;Weathered Cut Copper Stairs&#039;, &#039;Oxidized Cut Copper Stairs&#039;, &#039;Waxed Cut Copper Stairs&#039;, &#039;Waxed Exposed Cut Copper Stairs&#039;, &#039;Waxed Weathered Cut Copper Stairs&#039;, &#039;Waxed Oxidized Cut Copper Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Resin Brick Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Nether Brick Stairs&#039;, &#039;Sandstone Stairs&#039;, &#039;Oak Stairs&#039;, &#039;Spruce Stairs&#039;, &#039;Birch Stairs&#039;, &#039;Jungle Stairs&#039;, &#039;Acacia Stairs&#039;, &#039;Cherry Stairs&#039;, &#039;Dark Oak Stairs&#039;, &#039;Pale Oak Stairs&#039;, &#039;Mangrove Stairs&#039;, &#039;Bamboo Stairs&#039;, &#039;Bamboo Mosaic Stairs&#039;, &#039;Crimson Stairs&#039;, &#039;Warped Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Stone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Smooth Quartz Stairs&#039;, &#039;Granite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039; },&lt;br /&gt;
	[&#039;Any Door&#039;] = {&#039;Oak Door&#039;, &#039;Spruce Door&#039;, &#039;Birch Door&#039;, &#039;Jungle Door&#039;, &#039;Acacia Door&#039;, &#039;Dark Oak Door&#039;, &#039;Mangrove Door&#039;, &#039;Cherry Door&#039;, &#039;Bamboo Door&#039;, &#039;Crimson Door&#039;, &#039;Warped Door&#039;, &#039;Pale Oak Door&#039;, &#039;Iron Door&#039;, &#039;Copper Door&#039;, &#039;Exposed Copper Door&#039;, &#039;Weathered Copper Door&#039;,&#039;Oxidized Copper Door&#039;, &#039;Waxed Copper Door&#039;, &#039;Waxed Exposed Copper Door&#039;, &#039;Waxed Weathered Copper Door&#039;, &#039;Waxed Oxidized Copper Door&#039;},&lt;br /&gt;
    [&#039;Any inventory&#039;] = { &#039;Chest&#039;, &#039;Trapped Chest&#039;, &#039;Barrel&#039;, &#039;Furnace&#039;, &#039;Smoker&#039;, &#039;Dispenser&#039;, &#039;Dropper&#039;, &#039;Decorated Pot&#039; },&lt;br /&gt;
  &lt;br /&gt;
    [&#039;Any Chiseled Block&#039;] = {&#039;Chiseled Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Chiseled Deepslate&#039;, &#039;Chiseled Tuff&#039;, &#039;Chiseled Tuff Bricks&#039;, &#039;Chiseled Stone Bricks&#039;, &#039;Chiseled Nether Bricks&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Chiseled Copper&#039;, &#039;Exposed Chiseled Copper&#039;, &#039;Weathered Chiseled Copper&#039;, &#039;Oxidized Chiseled Copper&#039;, &#039;Waxed Chiseled Copper&#039;, &#039;Waxed Exposed Chiseled Copper&#039;, &#039;Waxed Weathered Chiseled Copper&#039;, &#039;Waxed Oxidized Chiseled Copper&#039;},&lt;br /&gt;
    [&#039;Any Button&#039;]= {&#039;Oak Button&#039;, &#039;Spruce Button&#039;, &#039;Birch Button&#039;, &#039;Jungle Button&#039;, &#039;Acacia Button&#039;, &#039;Dark Oak Button&#039;, &#039;Mangrove Button&#039;, &#039;Cherry Button&#039;, &#039;Pale Oak Button&#039;, &#039;Bamboo Button&#039;, &#039;Crimson Button&#039;, &#039;Warped Button&#039;},&lt;br /&gt;
--Glass--&lt;br /&gt;
[&#039;Any Glass Pane&#039;] = {&lt;br /&gt;
	&#039;Glass Pane&#039;,&lt;br /&gt;
	&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
},&lt;br /&gt;
[&#039;Any Glass&#039;] = {&lt;br /&gt;
	&#039;Glass&#039;,&lt;br /&gt;
	&#039;White Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Gray Stained Glass&#039;,&lt;br /&gt;
	&#039;Black Stained Glass&#039;,&lt;br /&gt;
	&#039;Brown Stained Glass&#039;,&lt;br /&gt;
	&#039;Red Stained Glass&#039;,&lt;br /&gt;
	&#039;Orange Stained Glass&#039;,&lt;br /&gt;
	&#039;Yellow Stained Glass&#039;,&lt;br /&gt;
	&#039;Lime Stained Glass&#039;,&lt;br /&gt;
	&#039;Green Stained Glass&#039;,&lt;br /&gt;
	&#039;Cyan Stained Glass&#039;,&lt;br /&gt;
	&#039;Light Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Blue Stained Glass&#039;,&lt;br /&gt;
	&#039;Purple Stained Glass&#039;,&lt;br /&gt;
	&#039;Magenta Stained Glass&#039;,&lt;br /&gt;
	&#039;Pink Stained Glass&#039;,&lt;br /&gt;
},&lt;br /&gt;
    --Gif fixes, Minecraft.wiki does this with a database but I&#039;m not setting that up--&lt;br /&gt;
    [&#039;Prismarine Wall&#039;]={&#039;Prismarine Wall.gif&#039;},&lt;br /&gt;
    [&#039;Sea Lantern&#039;]={ &#039;Sea Lantern.gif&#039; },&lt;br /&gt;
    [&#039;Stonecutter&#039;]={ &#039;Stonecutter.gif&#039; },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    --USE THIS FOR HE RELATED BLOCK TYPES--&lt;br /&gt;
    -- Misc HE--&lt;br /&gt;
    [&#039;Any Thruster Block&#039;]={&#039;Sea Lantern.gif&#039;, &#039;Glowstone&#039;, &#039;Shroomlight&#039;, &#039;Ochre Froglight&#039;, &#039;Verdant Froglight&#039;, &#039;Pearlescent Froglight&#039;, &#039;Redstone Lamp&#039;},&lt;br /&gt;
    [&#039;Any Normal Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Diamond Block&#039;},&lt;br /&gt;
    [&#039;Any Special Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Diamond Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
    [&#039;Any Secondary Tier Block&#039;] = {&#039;Iron Block&#039;, &#039;Gold Block&#039;, &#039;Emerald Block&#039;},	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    -- Display names --&lt;br /&gt;
	[&#039;Broken Elytra&#039;] = { title = &#039;&amp;amp;dElytra&#039;, name = &#039;Broken Elytra&#039; },&lt;br /&gt;
	[&#039;Button&#039;] = { title = &#039;Button&#039;, name = &#039;Stone Button&#039;},&lt;br /&gt;
	[&#039;Wooden Button&#039;] = { title = &#039;Button&#039;, name = &#039;Oak Button&#039;},&lt;br /&gt;
	[&#039;Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Arrow Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Arrow Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Damaged Firework Loaded Crossbow&#039;] = { title = &#039;Crossbow&#039;, name = &#039;Damaged Firework Loaded Crossbow&#039; },&lt;br /&gt;
	[&#039;Ominous Banner&#039;] = { title = &#039;&amp;amp;6&amp;amp;oOminous Banner&#039;, name = &#039;Ominous Banner&#039;, text = &lt;br /&gt;
		&#039;&amp;amp;7Cyan Lozenge/&amp;amp;7Light Gray Base/&amp;amp;7Gray Pale/&amp;amp;7Light Gray Bordure/&amp;amp;7Black Fess/&amp;amp;7Light Gray Per Fess&#039;},&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Basic&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Basic&#039; },&lt;br /&gt;
    [&#039;Power Hoe Basic&#039;] = { title = &#039;&amp;amp;#F2AE67Basic &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Basic&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Enhanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Enhanced&#039;] = { title = &#039;&amp;amp;#00FFA1Enhanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Enhanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Power Drill Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Drill&#039;, name = &#039;Power Drill Advanced&#039; },&lt;br /&gt;
    [&#039;Power Chainsaw Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Chainsaw&#039;, name = &#039;Power Chainsaw Advanced&#039; },&lt;br /&gt;
    [&#039;Power Hoe Advanced&#039;] = { title = &#039;&amp;amp;#B12BC9Advanced &amp;amp;6Power &amp;amp;7Hoe&#039;, name = &#039;Power Hoe Advanced&#039; },&lt;br /&gt;
&lt;br /&gt;
    [&#039;Battery A&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;cA &amp;amp;9Battery&#039;, name = &#039;Battery A&#039; },&lt;br /&gt;
    [&#039;Battery M&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;aM &amp;amp;9Battery&#039;, name = &#039;Battery M&#039; },&lt;br /&gt;
    [&#039;Battery G&#039;] = { title = &#039;&amp;amp;9Size&amp;amp;7-&amp;amp;6G &amp;amp;9Battery&#039;, name = &#039;Battery G&#039; },&lt;br /&gt;
&lt;br /&gt;
	[&#039;Half Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Half Filled Bundle&#039; },&lt;br /&gt;
	[&#039;Filled Bundle&#039;] = { title = &#039;Bundle&#039;, name = &#039;Filled Bundle&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Empty display name --&lt;br /&gt;
	[&#039;debug_fourj_item&#039;] = { title = &#039;\226\128\140&#039;, name = &#039;debug_fourj_item&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Equipment with custom rarity --&lt;br /&gt;
	[&#039;Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Trident&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Damaged Trident&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;29 Attack Damage/&amp;amp;#160;&amp;amp;21.1 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Trident BE&#039;] = { title = &#039;&amp;amp;bTrident&#039;, name = &#039;Trident&#039;, text = &#039;/&amp;amp;9 +8 Attack Damage&#039;},&lt;br /&gt;
	[&#039;Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Damaged Mace&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Damaged Mace&#039;, text = &#039;/&amp;amp;7 When in Main Hand:/&amp;amp;#160;&amp;amp;26 Attack Damage/&amp;amp;#160;&amp;amp;20.6 Attack Speed&#039;},&lt;br /&gt;
	[&#039;Mace BE&#039;] = { title = &#039;&amp;amp;dMace&#039;, name = &#039;Mace&#039;, text = &#039;/&amp;amp;9 +5 Attack Damage&#039;},&lt;br /&gt;
	[&amp;quot;Damaged Elytra&amp;quot;] = { title = &amp;quot;&amp;amp;dElytra&amp;quot;, name = &amp;quot;Damaged Elytra&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Boots&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Boots&amp;quot;, name = &amp;quot;Damaged Chainmail Boots&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Chestplate&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Chestplate&amp;quot;, name = &amp;quot;Damaged Chainmail Chestplate&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Helmet&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Helmet&amp;quot;, name = &amp;quot;Damaged Chainmail Helmet&amp;quot; },&lt;br /&gt;
	[&amp;quot;Damaged Chainmail Leggings&amp;quot;] = { title = &amp;quot;&amp;amp;eChainmail Leggings&amp;quot;, name = &amp;quot;Damaged Chainmail Leggings&amp;quot; },&lt;br /&gt;
	&lt;br /&gt;
	-- Ominous Bottles --&lt;br /&gt;
    [&#039;Ominous Bottle&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle II&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen II (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle III&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen III (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle IV&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen IV (01:40:00)&#039; },&lt;br /&gt;
    [&#039;Ominous Bottle V&#039;] = { title = &#039;&amp;amp;eOminous Bottle&#039;, name = &#039;Ominous Bottle&#039;, text = &#039;&amp;amp;9Bad Omen V (01:40:00)&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Bedrock and Education Edition display names --&lt;br /&gt;
	[&#039;Buried Treasure Map BE&#039;] = { title = &#039;Treasure Map&#039;, name = &#039;Buried Treasure Map BE&#039; },&lt;br /&gt;
	[&#039;Elytra Wings&#039;] = { title = &#039;Elytra Wings&#039;, name = &#039;Elytra&#039; },&lt;br /&gt;
	[&#039;Glowing Obsidian&#039;] = { title = &#039;tile.glowingobsidian.name&#039;, name = &#039;Glowing Obsidian&#039; },&lt;br /&gt;
	[&#039;Map (no markers)&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;cNo&#039; },&lt;br /&gt;
	[&#039;Locator Map&#039;] = { title = &#039;Map&#039;, name = &#039;Map&#039;, text = &#039;Display Markers: &amp;amp;aYes&#039; },&lt;br /&gt;
	[&#039;Shrub BE&#039;] = { title = &#039;Fern&#039;, name = &#039;Short Grass&#039; },&lt;br /&gt;
	[&#039;Unknown&#039;] = { title = &#039;Unknown&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update&#039;] = { title = &#039;tile.info_update.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;info_update2&#039;] = { title = &#039;tile.info_update2.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;reserved6&#039;] = { title = &#039;tile.reserved6.name&#039;, name = &#039;Missing Tile&#039; },&lt;br /&gt;
	[&#039;Smooth Purpur&#039;] = { title = &#039;tile.deprecated_purpur_block_2.name&#039;, name = &#039;Smooth Purpur&#039; },&lt;br /&gt;
	[&#039;Beacon BE&#039;] = { title = &#039;&amp;amp;bBeacon&#039;, name = &#039;Beacon BE&#039; },&lt;br /&gt;
	[&#039;Conduit BE&#039;] = { title = &#039;&amp;amp;eConduit&#039;, name = &#039;Conduit BE&#039; },&lt;br /&gt;
	[&#039;Dragon Egg BE&#039;] = { title = &#039;&amp;amp;dDragon Egg&#039;, name = &#039;Dragon Egg BE&#039; },&lt;br /&gt;
	[&#039;Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;eSkeleton Skull&#039;, name = &#039;Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Wither Skeleton Skull BE&#039;] = { title = &#039;&amp;amp;bWither Skeleton Skull&#039;, name = &#039;Wither Skeleton Skull BE&#039; },&lt;br /&gt;
	[&#039;Zombie Head BE&#039;] = { title = &#039;&amp;amp;eZombie Head&#039;, name = &#039;Zombie Head BE&#039; },&lt;br /&gt;
	[&#039;Player Head BE&#039;] = { title = &#039;&amp;amp;ePlayer Head&#039;, name = &#039;Player Head BE&#039; },&lt;br /&gt;
	[&#039;Creeper Head BE&#039;] = { title = &#039;&amp;amp;eCreeper Head&#039;, name = &#039;Creeper Head BE&#039; },&lt;br /&gt;
	[&#039;Dragon Head BE&#039;] = { title = &#039;&amp;amp;dDragon Head&#039;, name = &#039;Dragon Head BE&#039; },&lt;br /&gt;
&lt;br /&gt;
	-- Chemistry --&lt;br /&gt;
	[&#039;Lead (element)&#039;] = { title = &#039;Lead&#039;, name = &#039;Lead (element)&#039; },&lt;br /&gt;
	[&#039;Water (compound)&#039;] = { title = &#039;Water&#039;, name = &#039;Water (compound)&#039; },&lt;br /&gt;
	[&#039;Chloride&#039;] = { &#039;Calcium Chloride&#039;, &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Sparkler&#039;] = { &#039;Orange Sparkler&#039;, &#039;Blue Sparkler&#039;, &#039;Red Sparkler&#039;, &#039;Purple Sparkler&#039;, &#039;Green Sparkler&#039; },&lt;br /&gt;
	[&#039;Matching Chloride&#039;] = { &#039;Cerium Chloride&#039;, &#039;Mercuric Chloride&#039;, &#039;Potassium Chloride&#039;, &#039;Tungsten Chloride&#039; },&lt;br /&gt;
	[&#039;Matching Colored Torch&#039;] = { &#039;Blue Torch&#039;, &#039;Red Torch&#039;, &#039;Purple Torch&#039;, &#039;Green Torch&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- April Fools&#039; Day jokes --&lt;br /&gt;
	[&#039;New Thing Banner Pattern&#039;] = { title = &#039;&amp;amp;dBanner Pattern&#039;, name = &#039;New Thing Banner Pattern&#039;, text = &#039;&amp;amp;7New Thing&#039;},&lt;br /&gt;
	-- Note: These can&#039;t use this module&#039;s default color handling because potato peels have no white variant but do include the uncolored variant in recipes&lt;br /&gt;
	[&#039;Any Potato Peels&#039;] = { &#039;Potato Peels&#039;, &#039;Light Gray Potato Peels&#039;, &#039;Gray Potato Peels&#039;, &#039;Black Potato Peels&#039;, &#039;Brown Potato Peels&#039;, &#039;Red Potato Peels&#039;, &#039;Orange Potato Peels&#039;, &#039;Yellow Potato Peels&#039;, &#039;Lime Potato Peels&#039;, &#039;Green Potato Peels&#039;, &#039;Cyan Potato Peels&#039;, &#039;Light Blue Potato Peels&#039;, &#039;Blue Potato Peels&#039;, &#039;Purple Potato Peels&#039;, &#039;Magenta Potato Peels&#039;, &#039;Pink Potato Peels&#039; },&lt;br /&gt;
	&lt;br /&gt;
	-- Old textures --&lt;br /&gt;
	[&#039;Apple Revision 1&#039;] = { title = &#039;Apple&#039;, name = &#039;Apple Revision 1&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Stairs&#039;] = aliases[&#039;Any stairs&#039;]&lt;br /&gt;
aliases[&#039;Any Inventory&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Container&#039;] = aliases[&#039;Any inventory&#039;]&lt;br /&gt;
aliases[&#039;Any Tier Block&#039;] = aliases[&#039;Any Normal Tier Block&#039;]&lt;br /&gt;
aliases[&#039;Any Harvester Tier Block&#039;] = aliases[&#039;Any Secondary Tier Block&#039;]&lt;br /&gt;
&lt;br /&gt;
-- Tooltip colors --&lt;br /&gt;
local yellowTooltips = {&lt;br /&gt;
    &#039;Bottle o\&#039; Enchanting&#039;,&lt;br /&gt;
    &#039;Chainmail Boots&#039;,&lt;br /&gt;
    &#039;Chainmail Chestplate&#039;,&lt;br /&gt;
    &#039;Chainmail Helmet&#039;,&lt;br /&gt;
    &#039;Chainmail Leggings&#039;,&lt;br /&gt;
    &#039;Conduit&#039;,&lt;br /&gt;
    &#039;Creeper Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Creeper Head&#039;,&lt;br /&gt;
    &#039;Disc Fragment 5&#039;,&lt;br /&gt;
    &#039;Dragon\&#039;s Breath&#039;,&lt;br /&gt;
    &#039;Echo Shard&#039;,&lt;br /&gt;
    &#039;Enchanted Book&#039;,&lt;br /&gt;
    &#039;Goat Horn&#039;,&lt;br /&gt;
    &#039;Heart of the Sea&#039;,&lt;br /&gt;
    &#039;Nautilus Shell&#039;,&lt;br /&gt;
    &#039;Ominous Banner&#039;,&lt;br /&gt;
    &#039;Piglin Head&#039;,&lt;br /&gt;
    &#039;Player Head&#039;,&lt;br /&gt;
    &#039;Recovery Compass&#039;,&lt;br /&gt;
    &#039;Skeleton Skull&#039;,&lt;br /&gt;
    &#039;Sniffer Egg&#039;,&lt;br /&gt;
    &#039;Snout Banner Pattern&#039;,&lt;br /&gt;
    &#039;Totem of Undying&#039;,&lt;br /&gt;
    &#039;Zombie Head&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( yellowTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local aquaTooltips = {&lt;br /&gt;
	&#039;Beacon&#039;,&lt;br /&gt;
	&#039;Enchanted Golden Apple&#039;,&lt;br /&gt;
    &#039;Flow Banner Pattern&#039;,&lt;br /&gt;
	&#039;Guster Banner Pattern&#039;,&lt;br /&gt;
	&#039;Nether Star&#039;,&lt;br /&gt;
    &#039;Skull Charge Banner Pattern&#039;,&lt;br /&gt;
    &#039;Thing Banner Pattern&#039;,&lt;br /&gt;
    &#039;Wither Skeleton Skull&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( aquaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;b&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local magentaTooltips = {&lt;br /&gt;
	&#039;Barrier&#039;,&lt;br /&gt;
	&#039;Command Block&#039;,&lt;br /&gt;
	&#039;Chain Command Block&#039;,&lt;br /&gt;
	&#039;Debug Stick&#039;,&lt;br /&gt;
	&#039;Dragon Egg&#039;,&lt;br /&gt;
	&#039;Dragon Head&#039;,&lt;br /&gt;
	&#039;Elytra&#039;,&lt;br /&gt;
	&#039;Heavy Core&#039;,&lt;br /&gt;
	&#039;Jigsaw Block&#039;,&lt;br /&gt;
	&#039;Knowledge Book&#039;,&lt;br /&gt;
	&#039;Light&#039;,&lt;br /&gt;
	&#039;Repeating Command Block&#039;,&lt;br /&gt;
	&#039;Structure Block&#039;,&lt;br /&gt;
	&#039;Structure Void&#039;,&lt;br /&gt;
	&#039;Test Block&#039;,&lt;br /&gt;
	&#039;Test Instance Block&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs( magentaTooltips ) do&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;d&#039;, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons --&lt;br /&gt;
local tools = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5, 1.6 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6, 1.6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4, 1.6 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7, 1.6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8, 1.6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3, 1.2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4, 1.2 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2, 1.2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5, 1.2 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6, 1.2 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 7, 0.8 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 9, 0.8 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 9, 0.9 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 7, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 9, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 10, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 3.5, 1 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 4.5, 1 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 2.5, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 5.5, 1 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 6.5, 1 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 1, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 1, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 1, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 1, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 1, 4 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local materialGroups = {}&lt;br /&gt;
local toolGroups = {}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( tools ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	local damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
	local text = &#039;/&amp;amp;7When in Main Hand:/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[3] .. &#039; Attack Damage/&amp;amp;#160;&amp;amp;2&#039; .. toolProps[4] .. &#039; Attack Speed&#039;&lt;br /&gt;
	aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
	aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
	&lt;br /&gt;
	local materialGroup = toolProps[1]:lower()&lt;br /&gt;
	local toolGroup = toolProps[2]:lower()&lt;br /&gt;
	&lt;br /&gt;
	if toolProps[2] ~= &#039;Sword&#039; then&lt;br /&gt;
		if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end&lt;br /&gt;
		table.insert( materialGroups[materialGroup], aliases[aliasName] )&lt;br /&gt;
	end&lt;br /&gt;
	if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end&lt;br /&gt;
	table.insert( toolGroups[toolGroup], aliases[aliasName] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for materialGroup, items in pairs( materialGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. materialGroup .. &#039; tools&#039;] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for toolGroup, items in pairs( toolGroups ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. toolGroup] = items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Tools and weapons in Bedrock Edition --&lt;br /&gt;
local toolsBE = {&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Sword&#039;, 5 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Sword&#039;, 6 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Sword&#039;, 4 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Sword&#039;, 7 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Sword&#039;, 8 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Pickaxe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Pickaxe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Pickaxe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Pickaxe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Pickaxe&#039;, 6 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Axe&#039;, 4 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Axe&#039;, 5 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Axe&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Axe&#039;, 6 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Axe&#039;, 7 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Shovel&#039;, 2 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Shovel&#039;, 3 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Shovel&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Shovel&#039;, 4 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Shovel&#039;, 5 },&lt;br /&gt;
	&lt;br /&gt;
	{&#039;Wooden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Stone&#039;, &#039;Hoe&#039;, 3 },&lt;br /&gt;
	{&#039;Iron&#039;, &#039;Hoe&#039;, 4 },&lt;br /&gt;
	{&#039;Golden&#039;, &#039;Hoe&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;Hoe&#039;, 5 },&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;Hoe&#039;, 6 }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, toolProps in ipairs( toolsBE ) do&lt;br /&gt;
	local aliasName = toolProps[1] .. &#039; &#039; .. toolProps[2]&lt;br /&gt;
	aliases[aliasName .. &#039; BE&#039;] = { title = aliasName, name = aliasName, text = &#039;/&amp;amp;9+&#039; .. toolProps[3] .. &#039; Attack Damage&#039;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Armor tooltips --&lt;br /&gt;
local head = {&lt;br /&gt;
	{&#039;Leather Cap&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Iron Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Helmet&#039;, 2 },&lt;br /&gt;
	{&#039;Diamond Helmet&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Helmet&#039;, 3, 3, 1 },&lt;br /&gt;
	{&#039;Turtle Shell&#039;, 2 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local body = {&lt;br /&gt;
	{&#039;Leather Tunic&#039;, 3 },&lt;br /&gt;
	{&#039;Chainmail Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Iron Chestplate&#039;, 6 },&lt;br /&gt;
	{&#039;Golden Chestplate&#039;, 5 },&lt;br /&gt;
	{&#039;Diamond Chestplate&#039;, 8, 2 },&lt;br /&gt;
	{&#039;Netherite Chestplate&#039;, 8, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legs = {&lt;br /&gt;
	{&#039;Leather Pants&#039;, 2 },&lt;br /&gt;
	{&#039;Chainmail Leggings&#039;, 4 },&lt;br /&gt;
	{&#039;Iron Leggings&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Leggings&#039;, 3 },&lt;br /&gt;
	{&#039;Diamond Leggings&#039;, 6, 2 },&lt;br /&gt;
	{&#039;Netherite Leggings&#039;, 6, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local feet = {&lt;br /&gt;
	{&#039;Leather Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Chainmail Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Iron Boots&#039;, 2 },&lt;br /&gt;
	{&#039;Golden Boots&#039;, 1 },&lt;br /&gt;
	{&#039;Diamond Boots&#039;, 3, 2 },&lt;br /&gt;
	{&#039;Netherite Boots&#039;, 3, 3, 1 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local equipped = {&lt;br /&gt;
	{&#039;Leather Horse Armor&#039;, 3 },&lt;br /&gt;
	{&#039;Iron Horse Armor&#039;, 5 },&lt;br /&gt;
	{&#039;Golden Horse Armor&#039;, 7 },&lt;br /&gt;
	{&#039;Diamond Horse Armor&#039;, 11, 2 },&lt;br /&gt;
	{&#039;Wolf Armor&#039;, 11 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local bodyParts = {&lt;br /&gt;
    {head, &amp;quot;on Head&amp;quot;},&lt;br /&gt;
    {body, &amp;quot;on Body&amp;quot;},&lt;br /&gt;
    {legs, &amp;quot;on Legs&amp;quot;},&lt;br /&gt;
    {feet, &amp;quot;on Feet&amp;quot;},&lt;br /&gt;
    {equipped, &amp;quot;equipped&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local trimMaterial = {&lt;br /&gt;
	{&#039;Quartz&#039;, &#039;&amp;amp;h&#039;},&lt;br /&gt;
	{&#039;Iron&#039;, &#039;&amp;amp;i&#039;},&lt;br /&gt;
	{&#039;Netherite&#039;, &#039;&amp;amp;j&#039;},&lt;br /&gt;
	{&#039;Redstone&#039;, &#039;&amp;amp;y&#039;},&lt;br /&gt;
	{&#039;Copper&#039;, &#039;&amp;amp;z&#039;},&lt;br /&gt;
	{&#039;Gold&#039;, &#039;&amp;amp;p&#039;},&lt;br /&gt;
	{&#039;Emerald&#039;, &#039;&amp;amp;q&#039;},&lt;br /&gt;
	{&#039;Diamond&#039;, &#039;&amp;amp;s&#039;},&lt;br /&gt;
	{&#039;Lapis&#039;, &#039;&amp;amp;t&#039;},&lt;br /&gt;
	{&#039;Amethyst&#039;, &#039;&amp;amp;u&#039;},&lt;br /&gt;
	{&#039;Resin&#039;, &#039;&amp;amp;v&#039;},&lt;br /&gt;
	{&#039;Amber&#039;, &#039;&amp;amp;6&#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, bodyPart in ipairs(bodyParts) do&lt;br /&gt;
    local items = bodyPart[1]&lt;br /&gt;
    local bodyPartName = bodyPart[2]&lt;br /&gt;
    &lt;br /&gt;
    for _, toolProps in ipairs(items) do&lt;br /&gt;
        local aliasName = toolProps[1]&lt;br /&gt;
        local damagedName&lt;br /&gt;
        if string.find(aliasName, &amp;quot;Horse Armor&amp;quot;) then&lt;br /&gt;
            damagedName = aliasName &lt;br /&gt;
        else&lt;br /&gt;
            damagedName = &#039;Damaged &#039; .. aliasName&lt;br /&gt;
        end     &lt;br /&gt;
        local text = &#039;/&amp;amp;7When &#039; .. bodyPartName .. &#039;:/&amp;amp;9+&#039; .. toolProps[2] .. &#039; Armor/&#039;&lt;br /&gt;
        if toolProps[3] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[3] .. &#039; Armor Toughness/&#039;&lt;br /&gt;
        end&lt;br /&gt;
        if toolProps[4] then&lt;br /&gt;
            text = text .. &#039;+&#039; .. toolProps[4] .. &#039; Knockback Resistance&#039;&lt;br /&gt;
        end&lt;br /&gt;
        aliases[aliasName] = { title = aliasName, name = aliasName, text = text }&lt;br /&gt;
        aliases[damagedName] = { title = aliasName, name = damagedName, text = text }&lt;br /&gt;
        if bodyPartName ~= &amp;quot;equipped&amp;quot; then&lt;br /&gt;
			for _, materialType in ipairs( trimMaterial ) do&lt;br /&gt;
	        	local trimName = materialType[1] .. &#039; Trim &#039; .. aliasName&lt;br /&gt;
				local trimText = &#039;&amp;amp;7Upgrade:/&amp;amp;#160;&#039; .. materialType[2] .. &#039;Armor Trim/&amp;amp;#160;&#039; .. materialType[1] .. &#039; Material/&#039;&lt;br /&gt;
				aliases[trimName] = { title = aliasName, name = trimName, text = trimText .. text }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Lists of item variants --&lt;br /&gt;
local itemVariants = {&lt;br /&gt;
	[&#039;Small Flower&#039;] = { &#039;Oxeye Daisy&#039;, &#039;Cornflower&#039;, &#039;Lily of the Valley&#039;, &#039;Wither Rose&#039;, &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039;, &#039;Azure Bluet&#039;, &#039;Allium&#039;, &#039;Blue Orchid&#039;, &#039;Poppy&#039;, &#039;Dandelion&#039;, &#039;Torchflower&#039;, &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Eyeblossom&#039;] = { &#039;Closed Eyeblossom&#039;, &#039;Open Eyeblossom&#039; },&lt;br /&gt;
	[&#039;Mushroom&#039;] = { &#039;Red Mushroom&#039;, &#039;Brown Mushroom&#039; },&lt;br /&gt;
	[&#039;Quartz Block&#039;] = { &#039;Block of Quartz&#039;, &#039;Chiseled Quartz Block&#039;, &#039;Quartz Pillar&#039; },&lt;br /&gt;
	[&#039;Red Sandstone&#039;] = { &#039;Red Sandstone&#039;, &#039;Cut Red Sandstone&#039;, &#039;Chiseled Red Sandstone&#039;, &#039;Smooth Red Sandstone&#039; },&lt;br /&gt;
	[&#039;Sandstone&#039;] = { &#039;Sandstone&#039;, &#039;Cut Sandstone&#039;, &#039;Chiseled Sandstone&#039;, &#039;Smooth Sandstone&#039; },&lt;br /&gt;
	[&#039;Stone Bricks&#039;] = { &#039;Stone Bricks&#039;, &#039;Mossy Stone Bricks&#039;, &#039;Cracked Stone Bricks&#039;, &#039;Chiseled Stone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Slab&#039;] = { &#039;Stone Slab&#039;, &#039;Cobblestone Slab&#039;, &#039;Mossy Cobblestone Slab&#039;, &#039;Smooth Stone Slab&#039;, &#039;Stone Brick Slab&#039;, &#039;Mossy Stone Brick Slab&#039;, &lt;br /&gt;
		&#039;Granite Slab&#039;, &#039;Polished Granite Slab&#039;, &#039;Diorite Slab&#039;, &#039;Polished Diorite Slab&#039;, &#039;Andesite Slab&#039;, &#039;Polished Andesite Slab&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Slab&#039;, &#039;Polished Deepslate Slab&#039;, &#039;Deepslate Brick Slab&#039;, &#039;Deepslate Tile Slab&#039;, &#039;Brick Slab&#039;, &#039;Mud Brick Slab&#039;, &#039;Resin Brick Slab&#039;,&lt;br /&gt;
		&#039;Sandstone Slab&#039;, &#039;Smooth Sandstone Slab&#039;, &#039;Cut Sandstone Slab&#039;, &#039;Red Sandstone Slab&#039;, &#039;Smooth Red Sandstone Slab&#039;, &#039;Cut Red Sandstone Slab&#039;, &#039;Prismarine Slab&#039;, &#039;Prismarine Brick Slab&#039;, &#039;Dark Prismarine Slab&#039;, &lt;br /&gt;
		&#039;Nether Brick Slab&#039;, &#039;Red Nether Brick Slab&#039;, &#039;Blackstone Slab&#039;, &#039;Polished Blackstone Slab&#039;, &#039;Polished Blackstone Brick Slab&#039;, &#039;End Stone Brick Slab&#039;, &#039;Purpur Slab&#039;, &#039;Quartz Slab&#039;, &#039;Smooth Quartz Slab&#039;, &#039;Petrified Oak Slab&#039; },&lt;br /&gt;
	[&#039;Stone Stairs&#039;] = { &#039;Stone Stairs&#039;, &#039;Cobblestone Stairs&#039;, &#039;Mossy Cobblestone Stairs&#039;, &#039;Stone Brick Stairs&#039;, &#039;Mossy Stone Brick Stairs&#039;, &lt;br /&gt;
		&#039;Granite Stairs&#039;, &#039;Polished Granite Stairs&#039;, &#039;Diorite Stairs&#039;, &#039;Polished Diorite Stairs&#039;, &#039;Andesite Stairs&#039;, &#039;Polished Andesite Stairs&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Stairs&#039;, &#039;Polished Deepslate Stairs&#039;, &#039;Deepslate Brick Stairs&#039;, &#039;Deepslate Tile Stairs&#039;, &#039;Brick Stairs&#039;, &#039;Mud Brick Stairs&#039;, &#039;Resin Brick Stairs&#039;, &lt;br /&gt;
		&#039;Sandstone Stairs&#039;, &#039;Smooth Sandstone Stairs&#039;, &#039;Red Sandstone Stairs&#039;, &#039;Smooth Red Sandstone Stairs&#039;, &#039;Prismarine Stairs&#039;, &#039;Prismarine Brick Stairs&#039;, &#039;Dark Prismarine Stairs&#039;, &lt;br /&gt;
		&#039;Nether Brick Stairs&#039;, &#039;Red Nether Brick Stairs&#039;, &#039;Blackstone Stairs&#039;, &#039;Polished Blackstone Stairs&#039;, &#039;Polished Blackstone Brick Stairs&#039;, &#039;End Stone Brick Stairs&#039;, &#039;Purpur Stairs&#039;, &#039;Quartz Stairs&#039;, &#039;Smooth Quartz Stairs&#039; },&lt;br /&gt;
	[&#039;Wall&#039;] = { &#039;Cobblestone Wall&#039;, &#039;Mossy Cobblestone Wall&#039;, &#039;Stone Brick Wall&#039;, &#039;Mossy Stone Brick Wall&#039;, &#039;Granite Wall&#039;, &#039;Diorite Wall&#039;, &#039;Andesite Wall&#039;, &lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;, &#039;Polished Deepslate Wall&#039;, &#039;Deepslate Brick Wall&#039;, &#039;Deepslate Tile Wall&#039;, &#039;Brick Wall&#039;, &#039;Mud Brick Wall&#039;, &#039;Resin Brick Wall&#039;, &#039;Sandstone Wall&#039;, &#039;Red Sandstone Wall&#039;, &#039;Prismarine Wall&#039;, &lt;br /&gt;
		&#039;Nether Brick Wall&#039;, &#039;Red Nether Brick Wall&#039;, &#039;Blackstone Wall&#039;, &#039;Polished Blackstone Wall&#039;, &#039;Polished Blackstone Brick Wall&#039;, &#039;End Stone Brick Wall&#039; },&lt;br /&gt;
	[&#039;Purpur Block&#039;] = { &#039;Purpur Block&#039;, &#039;Purpur Pillar&#039; },&lt;br /&gt;
	[&#039;Stone&#039;] = { &#039;Stone&#039;, &#039;Andesite&#039;, &#039;Granite&#039;, &#039;Diorite&#039;, &#039;Polished Andesite&#039;, &#039;Polished Granite&#039;, &#039;Polished Diorite&#039; },&lt;br /&gt;
	[&#039;Resin Block&#039;] = { &#039;Block of Resin&#039;, &#039;Resin Bricks&#039;, &#039;Chiseled Resin Bricks&#039; },&lt;br /&gt;
	[&#039;Tulip&#039;] = { &#039;Red Tulip&#039;, &#039;Orange Tulip&#039;, &#039;White Tulip&#039;, &#039;Pink Tulip&#039; },&lt;br /&gt;
	[&#039;Prismarine&#039;] = { &#039;Prismarine&#039;, &#039;Prismarine Bricks&#039;, &#039;Dark Prismarine&#039; },&lt;br /&gt;
	[&#039;Ore&#039;] = { &#039;Coal Ore&#039;, &#039;Iron Ore&#039;, &#039;Gold Ore&#039;, &#039;Lapis Lazuli Ore&#039;, &#039;Redstone Ore&#039;, &#039;Emerald Ore&#039;, &#039;Diamond Ore&#039;, &#039;Nether Quartz Ore&#039;, &#039;Nether Gold Ore&#039;, &#039;Deepslate Coal Ore&#039;, &lt;br /&gt;
		&#039;Deepslate Copper Ore&#039;, &#039;Deepslate Emerald Ore&#039;, &#039;Deepslate Iron Ore&#039;, &#039;Deepslate Gold Ore&#039;, &#039;Deepslate Lapis Lazuli Ore&#039;, &#039;Deepslate Redstone Ore&#039;, &#039;Deepslate Diamond Ore&#039;},&lt;br /&gt;
	[&#039;Dead Coral Block&#039;] = { &#039;Dead Tube Coral Block&#039;, &#039;Dead Brain Coral Block&#039;, &#039;Dead Bubble Coral Block&#039;, &#039;Dead Fire Coral Block&#039;, &#039;Dead Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Coral Block&#039;] = { &#039;Tube Coral Block&#039;, &#039;Brain Coral Block&#039;, &#039;Bubble Coral Block&#039;, &#039;Fire Coral Block&#039;, &#039;Horn Coral Block&#039; },&lt;br /&gt;
	[&#039;Dead Coral&#039;] = { &#039;Dead Tube Coral&#039;, &#039;Dead Brain Coral&#039;, &#039;Dead Bubble Coral&#039;, &#039;Dead Fire Coral&#039;, &#039;Dead Horn Coral&#039; },&lt;br /&gt;
	[&#039;Dead Coral Fan&#039;] = { &#039;Dead Tube Coral Fan&#039;, &#039;Dead Brain Coral Fan&#039;, &#039;Dead Bubble Coral Fan&#039;, &#039;Dead Fire Coral Fan&#039;, &#039;Dead Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Coral&#039;] = { &#039;Tube Coral&#039;, &#039;Brain Coral&#039;, &#039;Bubble Coral&#039;, &#039;Fire Coral&#039;, &#039;Horn Coral&#039; },&lt;br /&gt;
	[&#039;Coral Fan&#039;] = { &#039;Tube Coral Fan&#039;, &#039;Brain Coral Fan&#039;, &#039;Bubble Coral Fan&#039;, &#039;Fire Coral Fan&#039;, &#039;Horn Coral Fan&#039; },&lt;br /&gt;
	[&#039;Torch&#039;] = { &#039;Torch&#039;, &#039;Soul Torch&#039; },&lt;br /&gt;
	[&#039;Lantern&#039;] = { &#039;Lantern&#039;, &#039;Soul Lantern&#039; },&lt;br /&gt;
	[&#039;Fungus&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Fungi&#039;] = { &#039;Crimson Fungus&#039;, &#039;Warped Fungus&#039; },&lt;br /&gt;
	[&#039;Roots&#039;] = { &#039;Crimson Roots&#039;, &#039;Warped Roots&#039; },&lt;br /&gt;
	[&#039;Nylium&#039;] = { &#039;Crimson Nylium&#039;, &#039;Warped Nylium&#039; },&lt;br /&gt;
	[&#039;Soul Sand&#039;] = { &#039;Soul Sand&#039;, &#039;Soul Soil&#039; },&lt;br /&gt;
	[&#039;Campfire&#039;] = { &#039;Campfire&#039;, &#039;Soul Campfire&#039; },&lt;br /&gt;
	[&#039;Blackstone&#039;] = { &#039;Blackstone&#039;, &#039;Polished Blackstone&#039;, &#039;Chiseled Polished Blackstone&#039;, &#039;Polished Blackstone Bricks&#039;, &#039;Cracked Polished Blackstone Bricks&#039; },&lt;br /&gt;
	[&#039;Stone Button&#039;] = { &#039;Stone Button&#039;, &#039;Polished Blackstone Button&#039; },&lt;br /&gt;
	[&#039;Stone Pressure Plate&#039;] = { &#039;Stone Pressure Plate&#039;, &#039;Polished Blackstone Pressure Plate&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Copper --&lt;br /&gt;
local copperstuff = {&lt;br /&gt;
	&#039;Block of Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper&#039;,&lt;br /&gt;
	&#039;Cut Copper Stairs&#039;,&lt;br /&gt;
	&#039;Cut Copper Slab&#039;,&lt;br /&gt;
	&#039;Chiseled Copper&#039;,&lt;br /&gt;
	&#039;Copper Grate&#039;,&lt;br /&gt;
	&#039;Copper Bulb&#039;,&lt;br /&gt;
	&#039;Copper Door&#039;,&lt;br /&gt;
	&#039;Copper Trapdoor&#039;,&lt;br /&gt;
}&lt;br /&gt;
local coppervariants = { &#039;&#039;, &#039;Exposed &#039;, &#039;Weathered &#039;, &#039;Oxidized &#039; }&lt;br /&gt;
for _, copper in ipairs( copperstuff ) do&lt;br /&gt;
	itemVariants[&#039;Unwaxed &#039; .. copper] = {}&lt;br /&gt;
	itemVariants[&#039;Waxed &#039; .. copper] = {}&lt;br /&gt;
	for _, coppervariant in ipairs( coppervariants ) do&lt;br /&gt;
		local name = coppervariant .. copper&lt;br /&gt;
		if copper == &#039;Block of Copper&#039; and coppervariant ~= &#039;&#039; then&lt;br /&gt;
			name = coppervariant .. &#039;Copper&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( itemVariants[&#039;Unwaxed &#039; .. copper], name )&lt;br /&gt;
		table.insert( itemVariants[&#039;Waxed &#039; .. copper], &#039;Waxed &#039; .. name )&lt;br /&gt;
	end&lt;br /&gt;
	itemVariants[copper] = {}&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Unwaxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
	for _, copperitem in ipairs( itemVariants[&#039;Waxed &#039; .. copper] ) do&lt;br /&gt;
		table.insert( itemVariants[copper], copperitem )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for aliasName, aliasItems in pairs( itemVariants ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. aliasName] = aliasItems&lt;br /&gt;
	aliases[&#039;Matching &#039; .. aliasName] = aliasItems&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Discs --&lt;br /&gt;
local discs = { &lt;br /&gt;
	{ &#039;13&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Cat&#039;,                 &#039;C418&#039;,         &#039;cat&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Blocks&#039;,              &#039;C418&#039;,         &#039;blocks&#039;,    &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Chirp&#039;,               &#039;C418&#039;,         &#039;chirp&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Far&#039;,                 &#039;C418&#039;,         &#039;far&#039;,       &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mall&#039;,                &#039;C418&#039;,         &#039;mall&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Mellohi&#039;,             &#039;C418&#039;,         &#039;mellohi&#039;,   &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Stal&#039;,                &#039;C418&#039;,         &#039;stal&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Strad&#039;,               &#039;C418&#039;,         &#039;strad&#039;,     &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Ward&#039;,                &#039;C418&#039;,         &#039;ward&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;11&#039;,                  &#039;C418&#039;,         &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wait&#039;,                &#039;C418&#039;,         &#039;wait&#039;,      &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Otherside&#039;,           &#039;Lena Raine&#039;,   &#039;otherside&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Pigstep&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;5&#039;,                   &#039;Samuel Åberg&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Relic&#039;,               &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Precipice&#039;,           &#039;Aaron Cherof&#039;, &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Creator&#039;,             &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Creator (Music Box)&#039;, &#039;Lena Raine&#039;,   &#039;&#039;,          &#039;&amp;amp;e&#039; },&lt;br /&gt;
}&lt;br /&gt;
for _, disc in ipairs( discs ) do&lt;br /&gt;
    local rarityColor = disc[4]&lt;br /&gt;
	local name = &#039;Music Disc &#039; .. disc[1]&lt;br /&gt;
	local artist = disc[2]&lt;br /&gt;
	local trackname = disc[1]&lt;br /&gt;
	if disc[3] ~= &#039;&#039; then&lt;br /&gt;
		trackname = disc[3]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = rarityColor .. &#039;Music Disc&#039;, name = name, text = &#039;&amp;amp;7&#039; .. artist .. &#039; - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Disc Fragments --&lt;br /&gt;
local disc_fragments = { &lt;br /&gt;
	{ &#039;5&#039;,    },&lt;br /&gt;
}&lt;br /&gt;
for _, disc_fragment in ipairs( disc_fragments ) do&lt;br /&gt;
	local name = &#039;Disc Fragment &#039; .. disc_fragment[1]&lt;br /&gt;
	local trackname = disc_fragment[1]&lt;br /&gt;
	if disc_fragment[2] ~= nil then&lt;br /&gt;
		trackname = disc_fragment[2]&lt;br /&gt;
	end&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;eDisc Fragment&#039;, name = name, text = &#039;&amp;amp;7Music Disc - &#039; .. trackname }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Paintings --&lt;br /&gt;
local paintings = { &lt;br /&gt;
	{ &#039;Kebab med tre pepperoni&#039;,    &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;de_aztec&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Albanian&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Target Successfully Bombed&#039;, &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Paradisträd&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wasteland&#039;,                  &#039;Kristoffer Zetterstrand&#039;, &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Meditative&#039;,                 &#039;Sarah Boeving&#039;,           &#039;1x1&#039; },&lt;br /&gt;
	{ &#039;Wanderer&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Graham&#039;,                     &#039;Kristoffer Zetterstrand&#039;, &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;Prairie Ride&#039;,               &#039;Sarah Boeving&#039;,           &#039;1x2&#039; },&lt;br /&gt;
	{ &#039;The Pool&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Bonjour Monsieur Courbet&#039;,   &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;sunset_dense&#039;,               &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Seaside&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Creebet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;2x1&#039; },&lt;br /&gt;
	{ &#039;Match&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bust&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The Stage Is Set&#039;,           &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;The void&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Skull and Roses&#039;,            &#039;Kristoffer Zetterstrand&#039;, &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wither&#039;,                     &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Baroque&#039;,                    &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Humble&#039;,                     &#039;Sarah Boeving&#039;,           &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Bouquet&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cavebird&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Cotán&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Endboss&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Fern&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Owlemons&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Sunflowers&#039;,                 &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Tides&#039;,                      &#039;Kristoffer Zetterstrand&#039;, &#039;3x3&#039; },&lt;br /&gt;
	{ &#039;Backyard&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Pond&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;3x4&#039; },&lt;br /&gt;
	{ &#039;Fighters&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Changing&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Finding&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Lowmist&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Passage&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x2&#039; },&lt;br /&gt;
	{ &#039;Mortal Coil&#039;,                &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Kong&#039;,                       &#039;Kristoffer Zetterstrand&#039;, &#039;4x3&#039; },&lt;br /&gt;
	{ &#039;Pointer&#039;,                    &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Pigscene&#039;,                   &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Skull On Fire&#039;,              &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Unpacked&#039;,                   &#039;Sarah Boeving&#039;,           &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Orb&#039;,                        &#039;Kristoffer Zetterstrand&#039;, &#039;4x4&#039; },&lt;br /&gt;
	{ &#039;Earth&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Wind&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Fire&#039;,                       &#039;Mojang&#039;,                  &#039;2x2&#039; },&lt;br /&gt;
	{ &#039;Water&#039;,                      &#039;Mojang&#039;,                  &#039;2x2&#039; }&lt;br /&gt;
}&lt;br /&gt;
for _, painting in ipairs( paintings ) do&lt;br /&gt;
	local name = &#039;Painting &#039; .. painting[1]&lt;br /&gt;
	local artist = painting[2]&lt;br /&gt;
	local artwork = painting[1]&lt;br /&gt;
	local size = painting[3]&lt;br /&gt;
	aliases[name] = { title = &#039;Painting&#039;, name = &#039;Painting&#039;, text = &#039;&amp;amp;e&#039; .. artwork .. &#039;/&amp;amp;7&#039; .. artist .. &#039;/&#039; .. &#039;&amp;amp;f&#039; .. size }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Damaged items, note it skips tools, weapons, and armor as they are handled above to add the damage tooltip. --&lt;br /&gt;
-- Items with rarity (such as Mace and Elytra) are hard-coded in the module&#039;s beginning.&lt;br /&gt;
local damagedItems = {&lt;br /&gt;
	&#039;Bow&#039;,&lt;br /&gt;
	&#039;Brush&#039;,&lt;br /&gt;
	&#039;Carrot on a Stick&#039;,&lt;br /&gt;
	&#039;Crossbow&#039;,&lt;br /&gt;
	&#039;Fishing Rod&#039;,&lt;br /&gt;
	&#039;Flint and Steel&#039;,&lt;br /&gt;
	&#039;Shears&#039;,&lt;br /&gt;
	&#039;Shield&#039;&lt;br /&gt;
}&lt;br /&gt;
for _, item in ipairs( damagedItems ) do&lt;br /&gt;
	local name = &#039;Damaged &#039; .. item&lt;br /&gt;
	aliases[name] = { title = item, name = name }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Banners and colored items --&lt;br /&gt;
local patterns = {&lt;br /&gt;
	&#039;Base Dexter Canton&#039;,&lt;br /&gt;
	&#039;Base&#039;,&lt;br /&gt;
	&#039;Base Gradient&#039;,&lt;br /&gt;
	&#039;Base Indented&#039;,&lt;br /&gt;
	&#039;Base Sinister Canton&#039;,&lt;br /&gt;
	&#039;Bend&#039;,&lt;br /&gt;
	&#039;Bend Sinister&#039;,&lt;br /&gt;
	&#039;Bordure&#039;,&lt;br /&gt;
	&#039;Bordure Indented&#039;,&lt;br /&gt;
	&#039;Chevron&#039;,&lt;br /&gt;
	&#039;Chief Dexter Canton&#039;,&lt;br /&gt;
	&#039;Chief&#039;,&lt;br /&gt;
	&#039;Chief Indented&#039;,&lt;br /&gt;
	&#039;Chief Sinister Canton&#039;,&lt;br /&gt;
	&#039;Creeper Charge&#039;,&lt;br /&gt;
	&#039;Cross&#039;,&lt;br /&gt;
	&#039;Fess&#039;,&lt;br /&gt;
	&#039;Field Masoned&#039;,&lt;br /&gt;
	&#039;Flow&#039;,&lt;br /&gt;
	&#039;Flower Charge&#039;,&lt;br /&gt;
	&#039;Globe&#039;,&lt;br /&gt;
	&#039;Gradient&#039;,&lt;br /&gt;
	&#039;Guster&#039;,&lt;br /&gt;
	&#039;Inverted Chevron&#039;,&lt;br /&gt;
	&#039;Lozenge&#039;,&lt;br /&gt;
	&#039;Thing&#039;,&lt;br /&gt;
	&#039;Pale&#039;,&lt;br /&gt;
	&#039;Pale Dexter&#039;,&lt;br /&gt;
	&#039;Pale Sinister&#039;,&lt;br /&gt;
	&#039;Paly&#039;,&lt;br /&gt;
	&#039;Per Bend&#039;,&lt;br /&gt;
	&#039;Per Bend Inverted&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister&#039;,&lt;br /&gt;
	&#039;Per Bend Sinister Inverted&#039;,&lt;br /&gt;
	&#039;Per Fess&#039;,&lt;br /&gt;
	&#039;Per Fess Inverted&#039;,&lt;br /&gt;
	&#039;Per Pale&#039;,&lt;br /&gt;
	&#039;Per Pale Inverted&#039;,&lt;br /&gt;
	&#039;Piglin&#039;,&lt;br /&gt;
	&#039;Snout&#039;,&lt;br /&gt;
	&#039;Roundel&#039;,&lt;br /&gt;
	&#039;Saltire&#039;,&lt;br /&gt;
	&#039;Skull Charge&#039;&lt;br /&gt;
}&lt;br /&gt;
local colors = {&lt;br /&gt;
	&#039;White&#039;,&lt;br /&gt;
	&#039;Light Gray&#039;,&lt;br /&gt;
	&#039;Gray&#039;,&lt;br /&gt;
	&#039;Black&#039;,&lt;br /&gt;
	&#039;Brown&#039;,&lt;br /&gt;
	&#039;Red&#039;,&lt;br /&gt;
	&#039;Orange&#039;,&lt;br /&gt;
	&#039;Yellow&#039;,&lt;br /&gt;
	&#039;Lime&#039;,&lt;br /&gt;
	&#039;Green&#039;,&lt;br /&gt;
	&#039;Cyan&#039;,&lt;br /&gt;
	&#039;Light Blue&#039;,&lt;br /&gt;
	&#039;Blue&#039;,&lt;br /&gt;
	&#039;Purple&#039;,&lt;br /&gt;
	&#039;Magenta&#039;,&lt;br /&gt;
	&#039;Pink&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Firework Stars --&lt;br /&gt;
local fireworkStar = {}&lt;br /&gt;
for _, color in ipairs( colors ) do&lt;br /&gt;
	local name = color .. &#039; Firework Star&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;Firework Star&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color }&lt;br /&gt;
	table.insert( fireworkStar, aliases[name] )&lt;br /&gt;
	for _, pattern in ipairs( patterns ) do&lt;br /&gt;
		name = color .. &#039; &#039; .. pattern .. &#039; Banner&#039;&lt;br /&gt;
		aliases[name] = { title = &#039;Banner&#039;, name = name, text = &#039;&amp;amp;7&#039; .. color .. &#039; &#039; .. pattern }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Firework Star&#039;] = fireworkStar&lt;br /&gt;
aliases[&#039;Matching Firework Star&#039;] = fireworkStar&lt;br /&gt;
&lt;br /&gt;
-- Items that use the sixteen colors --&lt;br /&gt;
local coloredItems = {&lt;br /&gt;
	withWhite = {&lt;br /&gt;
		&#039;Balloon&#039;,&lt;br /&gt;
		&#039;Banner&#039;,&lt;br /&gt;
		&#039;Bed&#039;,&lt;br /&gt;
		&#039;Carpet&#039;,&lt;br /&gt;
		&#039;Concrete&#039;,&lt;br /&gt;
		&#039;Concrete Powder&#039;,&lt;br /&gt;
		&#039;Glazed Terracotta&#039;,&lt;br /&gt;
		&#039;Glow Stick&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass&#039;,&lt;br /&gt;
		&#039;Hardened $1 Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Shield&#039;,&lt;br /&gt;
		&#039;Shulker Box&#039;,&lt;br /&gt;
		&#039;Stained Glass&#039;,&lt;br /&gt;
		&#039;Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Wool&#039;,&lt;br /&gt;
&lt;br /&gt;
		&#039;$Dyed Bundle&#039;,&lt;br /&gt;
		&#039;$Dyed Candle&#039;,&lt;br /&gt;
		&#039;$Dyed Terracotta&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	noWhite = {&lt;br /&gt;
		&#039;$Dyed Wool&#039;,&lt;br /&gt;
		&#039;$Dyed Bed&#039;,&lt;br /&gt;
		&#039;$Dyed Carpet&#039;,&lt;br /&gt;
		&#039;$Colored Dye&#039;,&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local coloredBadItems = {&lt;br /&gt;
	[&#039;Light Gray Glow Stick&#039;] = 1,&lt;br /&gt;
	[&#039;Black Glow Stick&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for type, items in pairs( coloredItems ) do&lt;br /&gt;
	for _, item in ipairs( items ) do&lt;br /&gt;
		local coloredItemAliases = {}&lt;br /&gt;
		local defaultItemAliases&lt;br /&gt;
&lt;br /&gt;
		if item:find( &#039;%$[^1]&#039; ) then&lt;br /&gt;
			defaultItemAliases = {}&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type == &#039;noWhite&#039; then&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+&#039;, &#039;White&#039; )&lt;br /&gt;
			else&lt;br /&gt;
				itemName = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			end&lt;br /&gt;
			table.insert( defaultItemAliases, itemName )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, color in ipairs( colors ) do&lt;br /&gt;
			local itemName&lt;br /&gt;
			if type ~= &#039;noWhite&#039; or color ~= &#039;White&#039; then&lt;br /&gt;
				if item:find( &#039;%$1&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$1&#039;, color )&lt;br /&gt;
				elseif item:find( &#039;%$&#039; ) then&lt;br /&gt;
					itemName = item:gsub( &#039;%$%w+&#039;, color )&lt;br /&gt;
				else&lt;br /&gt;
					itemName = color .. &#039; &#039; .. item&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if not coloredBadItems[itemName] then&lt;br /&gt;
				if defaultItemAliases then&lt;br /&gt;
					table.insert( defaultItemAliases, itemName )&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				table.insert( coloredItemAliases, itemName )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if defaultItemAliases then&lt;br /&gt;
			local defaultItem = item:gsub( &#039;%$%w+ &#039;, &#039;&#039; )&lt;br /&gt;
			aliases[&#039;Any &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
			aliases[&#039;Matching &#039; .. defaultItem] = defaultItemAliases&lt;br /&gt;
		end&lt;br /&gt;
		item = item:gsub( &#039;%$1 &#039;, &#039;&#039; )&lt;br /&gt;
		item = item:gsub( &#039;%$&#039;, &#039;&#039; )&lt;br /&gt;
		aliases[&#039;Any &#039; .. item] = coloredItemAliases&lt;br /&gt;
		aliases[&#039;Matching &#039; .. item] = coloredItemAliases&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
-- list of all potions with no effects&lt;br /&gt;
local noEffects = {&lt;br /&gt;
	&#039;Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Potion&#039;,&lt;br /&gt;
	&#039;Thick Potion&#039;,&lt;br /&gt;
	&#039;Mundane Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Potion&#039;,&lt;br /&gt;
	&#039;Splash Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Splash Potion&#039;,&lt;br /&gt;
	&#039;Thick Splash Potion&#039;,&lt;br /&gt;
	&#039;Mundane Splash Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Splash Potion&#039;,&lt;br /&gt;
	&#039;Lingering Water Bottle&#039;,&lt;br /&gt;
	&#039;Awkward Lingering Potion&#039;,&lt;br /&gt;
	&#039;Thick Lingering Potion&#039;,&lt;br /&gt;
	&#039;Mundane Lingering Potion&#039;,&lt;br /&gt;
	&#039;Uncraftable Lingering Potion&#039;,&lt;br /&gt;
	&#039;Tipped Arrow&#039;,&lt;br /&gt;
	&#039;Arrow of Splashing&#039;,&lt;br /&gt;
	&#039;Uncraftable Tipped Arrow&#039;,&lt;br /&gt;
}&lt;br /&gt;
for _, name in ipairs(noEffects) do&lt;br /&gt;
	aliases[name] = { name = name, text = &#039;&amp;amp;7No Effects&#039; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- start these lists with the no effect items as names are not normal&lt;br /&gt;
local potionItems = {&lt;br /&gt;
	[&#039;Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Splash Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Splash Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Splash Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Splash Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Lingering Potion&#039;] = {&lt;br /&gt;
		aliases[&#039;Lingering Water Bottle&#039;],&lt;br /&gt;
		aliases[&#039;Awkward Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Thick Lingering Potion&#039;],&lt;br /&gt;
		aliases[&#039;Mundane Lingering Potion&#039;],&lt;br /&gt;
	},&lt;br /&gt;
	[&#039;Tipped Arrow&#039;] = {&lt;br /&gt;
		aliases[&#039;Arrow of Splashing&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
		aliases[&#039;Tipped Arrow&#039;],&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Potions --&lt;br /&gt;
local effects = {&lt;br /&gt;
	-- durations are in the order normal, extended, enhanced&lt;br /&gt;
	{name = &#039;Regeneration&#039;, effect = &#039;&amp;amp;9Regeneration&#039;, enhanced = &#039;II&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:22&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Swiftness&#039;, effect = &#039;&amp;amp;9Speed&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Fire Resistance&#039;, effect = &#039;&amp;amp;9Fire Resistance&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Poison&#039;, effect = &#039;&amp;amp;cPoison&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;0:45&#039;, &#039;1:30&#039;, &#039;0:21&#039; }, lingering = { &#039;0:11&#039;, &#039;0:22&#039;, &#039;0:05&#039; }, arrow = { &#039;0:05&#039;, &#039;0:11&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Healing&#039;, effect = &#039;&amp;amp;9Instant Health&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Night Vision&#039;,    effect = &#039;&amp;amp;9Night Vision&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Weakness&#039;,        effect = &#039;&amp;amp;cWeakness&#039;,        durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Strength&#039;, effect = &#039;&amp;amp;9Strength&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039;}, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Slowness&#039;, effect = &#039;&amp;amp;cSlowness&#039;, enhanced = &#039;IV&#039;, &lt;br /&gt;
		durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039;, &#039;0:20&#039;}, lingering = {&#039;0:22&#039;, &#039;1:00&#039;, &#039;0:05&#039;}, arrow = { &#039;0:11&#039;, &#039;0:30&#039;, &#039;0:02&#039; }}},&lt;br /&gt;
	{ name = &#039;Leaping&#039;, effect = &#039;&amp;amp;9Jump Boost&#039;, enhanced = &#039;II&#039;, &lt;br /&gt;
		durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039;, &#039;1:30&#039; }, lingering = {&#039;0:45&#039;, &#039;2:00&#039;, &#039;0:22&#039;}, arrow = { &#039;0:22&#039;, &#039;1:00&#039;, &#039;0:11&#039; }}},&lt;br /&gt;
	{ name = &#039;Harming&#039;, effect = &#039;&amp;amp;cInstant Damage&#039;, enhanced = &#039;II&#039; },&lt;br /&gt;
	{ name = &#039;Water Breathing&#039;, effect = &#039;&amp;amp;9Water Breathing&#039;, durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Invisibility&#039;,    effect = &#039;&amp;amp;9Invisibility&#039;,    durations = { normal = { &#039;3:00&#039;, &#039;8:00&#039; }, lingering = { &#039;0:45&#039;, &#039;2:00&#039; }, arrow = { &#039;0:22&#039;, &#039;1:00&#039; }}},&lt;br /&gt;
	{ name = &#039;Slow Falling&#039;,    effect = &#039;&amp;amp;9Slow Falling&#039;,    durations = { normal = { &#039;1:30&#039;, &#039;4:00&#039; }, lingering = { &#039;0:22&#039;, &#039;1:00&#039; }, arrow = { &#039;0:11&#039;, &#039;0:30&#039; }}},&lt;br /&gt;
	{ name = &#039;Luck&#039;,  effect = &#039;&amp;amp;9Luck&#039;,   durations = { normal = { &#039;5:00&#039; }, lingering = { &#039;1:15&#039; }, arrow = { &#039;0:37&#039; }}},&lt;br /&gt;
	{ name = &#039;Decay&#039;, effect = &#039;&amp;amp;cWither II&#039;, durations = { normal = { &#039;0:40&#039; }, lingering = { &#039;0:10&#039; }, arrow = { &#039;0:05&#039; }}},&lt;br /&gt;
	{ name = &#039;the Turtle Master&#039;, text = &#039;&amp;amp;cSlowness IV ($1)/&amp;amp;9Resistance III ($1)&#039;, enhanced = &#039;&amp;amp;cSlowness VI ($1)/&amp;amp;9Resistance IV ($1)&#039;,&lt;br /&gt;
		durations = { normal = { &#039;0:20&#039;, &#039;0:40&#039;, &#039;0:20&#039; }, lingering = { &#039;0:15&#039;, &#039;0:45&#039;, &#039;0:15&#039; }, arrow = {  &#039;0:07&#039;, &#039;0:22&#039;, &#039;0:07&#039; }}},&lt;br /&gt;
	{ name = &#039;Oozing&#039;,  effect = &#039;&amp;amp;cOozing&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Infestation&#039;,  effect = &#039;&amp;amp;cInfested&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Weaving&#039;,  effect = &#039;&amp;amp;cWeaving&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}},&lt;br /&gt;
	{ name = &#039;Wind Charging&#039;,  effect = &#039;&amp;amp;cWind Charged&#039;, durations = { normal = { &#039;3:00&#039; }, lingering = { &#039;0:45&#039; }, arrow = { &#039;0:22&#039; }}}&lt;br /&gt;
}&lt;br /&gt;
local types = {&lt;br /&gt;
	{name = &#039;Potion&#039;,           durations = &#039;normal&#039;,    text = &#039;Potion of &#039;},&lt;br /&gt;
	{name = &#039;Splash Potion&#039;,    durations = &#039;normal&#039;,    text = &#039;Splash Potion of &#039;},&lt;br /&gt;
	{name = &#039;Lingering Potion&#039;, durations = &#039;lingering&#039;, text = &#039;Lingering Potion of &#039;},&lt;br /&gt;
	{name = &#039;Tipped Arrow&#039;,     durations = &#039;arrow&#039;,     text = &#039;Arrow of &#039;},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for _, effect in ipairs(effects) do&lt;br /&gt;
	for _, type in ipairs(types) do&lt;br /&gt;
		-- form name, it will be reused&lt;br /&gt;
		local name =  type.text .. effect.name&lt;br /&gt;
		local potionName = {}&lt;br /&gt;
		if type.name == &#039;Tipped Arrow&#039; then&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		else&lt;br /&gt;
		potionName = type.text .. effect.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- if we have durations, add times&lt;br /&gt;
		if effect.durations then&lt;br /&gt;
			local durations = effect.durations[type.durations]&lt;br /&gt;
			&lt;br /&gt;
			-- turtle master is weird, so just do a fancy string replacement&lt;br /&gt;
			if effect.text then&lt;br /&gt;
				aliases[name] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[1] ) }&lt;br /&gt;
				aliases[name .. &#039; Extended&#039;] = { name = potionName, text = effect.text:gsub( &#039;%$1&#039;, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
				aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.enhanced:gsub( &#039;%$1&#039;, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
			else&lt;br /&gt;
				-- we always have normal&lt;br /&gt;
				aliases[name] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[1] ) }&lt;br /&gt;
			&lt;br /&gt;
				-- ensure we have extended&lt;br /&gt;
				if durations[2] then&lt;br /&gt;
					aliases[name .. &#039; Extended&#039;] = { name = potionName, text = string.format( &#039;%s (%s)&#039;, effect.effect, durations[2] ) .. &#039;/&amp;amp;8Extended&#039; }&lt;br /&gt;
					&lt;br /&gt;
					-- and enhanced&lt;br /&gt;
					if effect.enhanced then&lt;br /&gt;
						aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = string.format( &#039;%s %s (%s)&#039;, effect.effect, effect.enhanced, durations[3] ) .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- otherwise its just effect, currently every potion with no duration can be enhanced&lt;br /&gt;
			aliases[name] = { name = potionName, text = effect.effect}&lt;br /&gt;
			aliases[name .. &#039; Enhanced&#039;] = { name = potionName, text = effect.effect .. &#039; &#039; .. effect.enhanced .. &#039;/&amp;amp;8Enhanced&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- add the base potion to the any list&lt;br /&gt;
		table.insert(potionItems[type.name], aliases[name])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- build the any lists&lt;br /&gt;
for item, potionAliases in pairs( potionItems ) do&lt;br /&gt;
	aliases[&#039;Any &#039; .. item] = potionAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = potionAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Wood --&lt;br /&gt;
local woodTypes = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Oak&#039;,&lt;br /&gt;
	    &#039;Spruce&#039;,&lt;br /&gt;
	    &#039;Birch&#039;,&lt;br /&gt;
	    &#039;Jungle&#039;,&lt;br /&gt;
	    &#039;Acacia&#039;,&lt;br /&gt;
        &#039;Dark Oak&#039;,&lt;br /&gt;
        &#039;Mangrove&#039;,&lt;br /&gt;
        &#039;Cherry&#039;,&lt;br /&gt;
        &#039;Pale Oak&#039;,&lt;br /&gt;
        &#039;Bamboo&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Crimson&#039;,&lt;br /&gt;
        &#039;Warped&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {},&lt;br /&gt;
}&lt;br /&gt;
local woodTypeWorld = {}&lt;br /&gt;
for _, world in ipairs({&#039;overworld&#039;, &#039;nether&#039;}) do&lt;br /&gt;
	local woods = woodTypes[world]&lt;br /&gt;
	for _, type in ipairs(woods) do&lt;br /&gt;
		woodTypeWorld[type] = world&lt;br /&gt;
        table.insert(woodTypes.both, type)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
local woodItems = {&lt;br /&gt;
    overworld = {&lt;br /&gt;
        &#039;Log&#039;,&lt;br /&gt;
        &#039;Wood&#039;,&lt;br /&gt;
        &#039;Stripped $1 Log&#039;,&lt;br /&gt;
        &#039;Stripped $1 Wood&#039;,&lt;br /&gt;
        &#039;Boat&#039;,&lt;br /&gt;
        &#039;Boat with Chest&#039;,&lt;br /&gt;
        &#039;Sapling&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    nether = {&lt;br /&gt;
        &#039;Stem&#039;,&lt;br /&gt;
        &#039;Hyphae&#039;,&lt;br /&gt;
        &#039;Stripped $1 Stem&#039;,&lt;br /&gt;
        &#039;Stripped $1 Hyphae&#039;,&lt;br /&gt;
    },&lt;br /&gt;
    both = {&lt;br /&gt;
		-- Any/Matching X or Y&lt;br /&gt;
        &#039;${Log,Stem}&#039;,&lt;br /&gt;
        &#039;${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Wood,Hyphae}&#039;,&lt;br /&gt;
        &#039;Stripped $1 ${Log,Stem}&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Dimensional prefixes&lt;br /&gt;
        &#039;$world Planks&#039;,&lt;br /&gt;
        &#039;$world $wood Stairs&#039;,&lt;br /&gt;
        &#039;$world $wood Slab&#039;,&lt;br /&gt;
        &#039;$world $wood Fence&#039;,&lt;br /&gt;
        &#039;$world $wood Fence Gate&#039;,&lt;br /&gt;
        &#039;$world $wood Door&#039;,&lt;br /&gt;
        &#039;$world $wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$world $wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$world $wood Button&#039;,&lt;br /&gt;
        &#039;$world $wood Sign&#039;,&lt;br /&gt;
        &#039;$world $wood Hanging Sign&#039;,&lt;br /&gt;
&lt;br /&gt;
		-- Both dimensions&lt;br /&gt;
		-- Items with non-wood variants include $wood&lt;br /&gt;
        &#039;Planks&#039;,&lt;br /&gt;
        &#039;$wood Stairs&#039;,&lt;br /&gt;
        &#039;$wood Slab&#039;,&lt;br /&gt;
        &#039;$wood Fence&#039;,&lt;br /&gt;
        &#039;Fence Gate&#039;,&lt;br /&gt;
        &#039;$wood Door&#039;,&lt;br /&gt;
        &#039;$wood Trapdoor&#039;,&lt;br /&gt;
        &#039;$wood Pressure Plate&#039;,&lt;br /&gt;
        &#039;$wood Button&#039;,&lt;br /&gt;
        &#039;Sign&#039;,&lt;br /&gt;
        &#039;Hanging Sign&#039;,&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
local woodItemWorld = {}&lt;br /&gt;
for world, items in pairs(woodItems) do&lt;br /&gt;
    for _, item in ipairs(items) do&lt;br /&gt;
		-- expand $world (should only happen in &amp;quot;both&amp;quot;)&lt;br /&gt;
        if (item:find(&#039;%$world&#039;)) and world == &#039;both&#039; then&lt;br /&gt;
            item = item:gsub(&#039;%$world &#039;, &#039;&#039;)&lt;br /&gt;
            woodItemWorld[&#039;Overworld &#039; .. item] = &#039;overworld&#039;&lt;br /&gt;
			woodItemWorld[&#039;Nether &#039; .. item] = &#039;nether&#039;&lt;br /&gt;
		else&lt;br /&gt;
			woodItemWorld[item] = world&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local woodBadItems = {&lt;br /&gt;
	[&#039;Bamboo Sapling&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Bamboo Log&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Wood&#039;] = 1,&lt;br /&gt;
	[&#039;Stripped Bamboo Log&#039;] = 1,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local woodNameMapping = {&lt;br /&gt;
	[&#039;Mangrove Sapling&#039;] = &#039;Mangrove Propagule&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat&#039;] = &#039;Bamboo Raft&#039;,&lt;br /&gt;
	[&#039;Bamboo Boat with Chest&#039;] = &#039;Bamboo Raft with Chest&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for item, world in pairs(woodItemWorld) do&lt;br /&gt;
	local itemName = &#039;&#039;&lt;br /&gt;
	local woodAliases = {}&lt;br /&gt;
&lt;br /&gt;
	-- real &amp;quot;linkable&amp;quot; name&lt;br /&gt;
    local realItem = item:gsub(&#039;^Overworld &#039;, &#039;&#039;)&lt;br /&gt;
    realItem = realItem:gsub(&#039;^Nether &#039;, &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	for _, wood in ipairs(woodTypes[world]) do&lt;br /&gt;
		-- Parse ${,} (world-select) syntax&lt;br /&gt;
		local selector = (woodTypeWorld[wood] == &#039;overworld&#039;) and &amp;quot;%1&amp;quot; or &amp;quot;%2&amp;quot;&lt;br /&gt;
		itemName = realItem:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, selector)&lt;br /&gt;
&lt;br /&gt;
		if itemName:find(&#039;%$wood&#039;) then&lt;br /&gt;
			itemName = itemName:gsub(&#039;%$wood&#039;, wood)&lt;br /&gt;
		elseif itemName:find(&#039;%$1&#039;) then&lt;br /&gt;
			itemName = itemName:gsub( &#039;%$1&#039;, wood)&lt;br /&gt;
		else&lt;br /&gt;
			itemName = wood .. &#039; &#039; .. itemName&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- special handling&lt;br /&gt;
		if woodNameMapping[itemName] then&lt;br /&gt;
			itemName = woodNameMapping[itemName]&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if not woodBadItems[itemName] then&lt;br /&gt;
			table.insert(woodAliases, itemName)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Parse ${,} (world-select) syntax&lt;br /&gt;
	item = item:gsub(&amp;quot;%${(.-),(.-)}&amp;quot;, &amp;quot;%1 or %2&amp;quot;)&lt;br /&gt;
    item = item:gsub(&#039;%$wood&#039;, &#039;Wooden&#039;)&lt;br /&gt;
    item = item:gsub(&#039;%$1 &#039;, &#039;&#039;)&lt;br /&gt;
    aliases[&#039;Any &#039; .. item] = woodAliases&lt;br /&gt;
	aliases[&#039;Matching &#039; .. item] = woodAliases&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Bedrock Edition Items --&lt;br /&gt;
local editionItems = {&lt;br /&gt;
	BE = {&lt;br /&gt;
		&#039;Acacia Fence Gate&#039;,&lt;br /&gt;
		&#039;Andesite Wall&#039;,&lt;br /&gt;
		&#039;Birch Fence Gate&#039;,&lt;br /&gt;
		&#039;Black Bed&#039;,&lt;br /&gt;
		&#039;Black Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Blue Bed&#039;,&lt;br /&gt;
		&#039;Blue Ice&#039;,&lt;br /&gt;
		&#039;Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bow&#039;,&lt;br /&gt;
		&#039;Brick Wall&#039;,&lt;br /&gt;
		&#039;Brown Bed&#039;,&lt;br /&gt;
		&#039;Brown Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Bucket of Pufferfish&#039;,&lt;br /&gt;
		&#039;Bucket of Tropical Fish&#039;,&lt;br /&gt;
		&#039;Cat Spawn Egg&#039;,&lt;br /&gt;
		&#039;Chest&#039;,&lt;br /&gt;
		&#039;Cobbled Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Crimson Fence Gate&#039;,&lt;br /&gt;
		&#039;Crying Obsidian&#039;,&lt;br /&gt;
		&#039;Cyan Bed&#039;,&lt;br /&gt;
		&#039;Cyan Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Dark Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Deepslate Brick Wall&#039;,&lt;br /&gt;
		&#039;Deepslate Tile Wall&#039;,&lt;br /&gt;
		&#039;Desert Village Map&#039;,&lt;br /&gt;
		&#039;Diorite Wall&#039;,&lt;br /&gt;
		&#039;Enchanting Table&#039;,&lt;br /&gt;
		&#039;End Gateway&#039;,&lt;br /&gt;
		&#039;End Portal Frame&#039;,&lt;br /&gt;
		&#039;End Portal&#039;,&lt;br /&gt;
		&#039;End Rod&#039;,&lt;br /&gt;
		&#039;End Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Ender Chest&#039;,&lt;br /&gt;
		&#039;Glass Pane&#039;,&lt;br /&gt;
		&#039;Glowstone&#039;,&lt;br /&gt;
		&#039;Granite Wall&#039;,&lt;br /&gt;
		&#039;Gray Bed&#039;,&lt;br /&gt;
		&#039;Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Green Bed&#039;,&lt;br /&gt;
		&#039;Green Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Honey Block&#039;,&lt;br /&gt;
		&#039;Horn Coral Block&#039;,&lt;br /&gt;
		&#039;Iron Bars&#039;,&lt;br /&gt;
		&#039;Jack o\&#039;Lantern&#039;,&lt;br /&gt;
		&#039;Jungle Explorer Map&#039;,&lt;br /&gt;
		&#039;Jungle Fence Gate&#039;,&lt;br /&gt;
		&#039;Jungle Leaves&#039;,&lt;br /&gt;
		&#039;Lava&#039;,&lt;br /&gt;
		&#039;Leather Horse Armor&#039;,&lt;br /&gt;
		&#039;Light&#039;,&lt;br /&gt;
		&#039;Light Blue Bed&#039;,&lt;br /&gt;
		&#039;Light Blue Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Light Gray Bed&#039;,&lt;br /&gt;
		&#039;Light Gray Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Lime Bed&#039;,&lt;br /&gt;
		&#039;Lime Stained Glass Pane&#039;,&lt;br /&gt;
        &#039;Lodestone Compass&#039;,&lt;br /&gt;
        &#039;Magenta Bed&#039;,&lt;br /&gt;
		&#039;Magenta Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Magma Block&#039;,&lt;br /&gt;
		&#039;Map&#039;,&lt;br /&gt;
		&#039;Minecart with Command Block&#039;,&lt;br /&gt;
		&#039;Monster Spawner&#039;,&lt;br /&gt;
		&#039;Mossy Cobblestone Wall&#039;,&lt;br /&gt;
		&#039;Mossy Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Mud Brick Wall&#039;,&lt;br /&gt;
		&#039;Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Oak Fence Gate&#039;,&lt;br /&gt;
		&#039;Observer&#039;,&lt;br /&gt;
		&#039;Ocean Explorer Map&#039;,&lt;br /&gt;
		&#039;Ochre Froglight&#039;,&lt;br /&gt;
		&#039;Orange Bed&#039;,&lt;br /&gt;
		&#039;Orange Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Panda Spawn Egg&#039;,&lt;br /&gt;
		&#039;Pearlescent Froglight&#039;,&lt;br /&gt;
		&#039;Pink Bed&#039;,&lt;br /&gt;
		&#039;Pink Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Plains Village Map&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Wall&#039;,&lt;br /&gt;
		&#039;Polished Blackstone Brick Wall&#039;,&lt;br /&gt;
		&#039;Polished Deepslate Wall&#039;,&lt;br /&gt;
		&#039;Polished Tuff Wall&#039;,&lt;br /&gt;
		&#039;Prismarine Wall&#039;,&lt;br /&gt;
		&#039;Purple Bed&#039;,&lt;br /&gt;
		&#039;Purple Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Red Bed&#039;,&lt;br /&gt;
		&#039;Red Nether Brick Wall&#039;,&lt;br /&gt;
		&#039;Red Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Red Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Resin Brick Wall&#039;,&lt;br /&gt;
		&#039;Sandstone Wall&#039;,&lt;br /&gt;
		&#039;Savanna Village Map&#039;,&lt;br /&gt;
		&#039;Scaffolding&#039;,&lt;br /&gt;
		&#039;Sea Lantern&#039;,&lt;br /&gt;
		&#039;Shroomlight&#039;,&lt;br /&gt;
		&#039;Snowy Village Map&#039;,&lt;br /&gt;
		&#039;Spruce Fence Gate&#039;,&lt;br /&gt;
		&#039;Stone Brick Wall&#039;,&lt;br /&gt;
		&#039;Stonecutter&#039;,&lt;br /&gt;
		&#039;Structure Void&#039;,&lt;br /&gt;
		&#039;Swamp Explorer Map&#039;,&lt;br /&gt;
		&#039;Taiga Village Map&#039;,&lt;br /&gt;
		&#039;Trapped Chest&#039;,&lt;br /&gt;
		&#039;Trial Explorer Map&#039;,&lt;br /&gt;
		&#039;Tuff Wall&#039;,&lt;br /&gt;
		&#039;Tuff Brick Wall&#039;,&lt;br /&gt;
		&#039;Verdant Froglight&#039;,&lt;br /&gt;
		&#039;Wandering Trader Spawn Egg&#039;,&lt;br /&gt;
		&#039;Warped Fence Gate&#039;,&lt;br /&gt;
		&#039;White Bed&#039;,&lt;br /&gt;
		&#039;White Stained Glass Pane&#039;,&lt;br /&gt;
		&#039;Woodland Explorer Map&#039;,&lt;br /&gt;
		&#039;Yellow Bed&#039;,&lt;br /&gt;
		&#039;Yellow Stained Glass Pane&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	LCE = {&lt;br /&gt;
		&#039;Shrub&#039;&lt;br /&gt;
	},&lt;br /&gt;
	    SM = {&lt;br /&gt;
    	&#039;Compass&#039;,&lt;br /&gt;
    	&#039;Diamond Axe&#039;,&lt;br /&gt;
    	&#039;Diamond Hoe&#039;,&lt;br /&gt;
    	&#039;Diamond Pickaxe&#039;,&lt;br /&gt;
    	&#039;Diamond Shovel&#039;,&lt;br /&gt;
    	&#039;Diamond Sword&#039;,&lt;br /&gt;
    	&#039;Flint and Steel&#039;,&lt;br /&gt;
    	&#039;Potion of Invisibility&#039;,&lt;br /&gt;
    	&#039;Potion of Leaping&#039;,&lt;br /&gt;
    	&#039;Potion of Swiftness&#039;,&lt;br /&gt;
    	&#039;TNT&#039;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
for edition, items in pairs(editionItems) do&lt;br /&gt;
	for _, item in ipairs(items) do&lt;br /&gt;
		local name = item .. &#039; &#039; .. edition&lt;br /&gt;
		aliases[name] = { title = item, name = name }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Light blocks --&lt;br /&gt;
for level = 0, 15 do&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level] = { title = &amp;quot;&amp;amp;dLight&amp;quot;, name = &amp;quot;Light &amp;quot; .. level }&lt;br /&gt;
aliases[&amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot;] = { title = &amp;quot;Light&amp;quot;, name = &amp;quot;Light &amp;quot; .. level .. &amp;quot; BE&amp;quot; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Pottery Sherds --&lt;br /&gt;
local pottery_sherds = { &lt;br /&gt;
	{ &#039;Angler&#039; },&lt;br /&gt;
	{ &#039;Arms Up&#039; },&lt;br /&gt;
	{ &#039;Archer&#039; },&lt;br /&gt;
	{ &#039;Blade&#039; },&lt;br /&gt;
	{ &#039;Brewer&#039; },&lt;br /&gt;
	{ &#039;Burn&#039; },&lt;br /&gt;
	{ &#039;Danger&#039; },&lt;br /&gt;
	{ &#039;Explorer&#039; },&lt;br /&gt;
	{ &#039;Flow&#039; },&lt;br /&gt;
	{ &#039;Friend&#039; },&lt;br /&gt;
	{ &#039;Guster&#039; },&lt;br /&gt;
	{ &#039;Heart&#039; },&lt;br /&gt;
	{ &#039;Heartbreak&#039; },&lt;br /&gt;
	{ &#039;Howl&#039; },&lt;br /&gt;
	{ &#039;Miner&#039; },&lt;br /&gt;
	{ &#039;Mourner&#039; },&lt;br /&gt;
	{ &#039;Plenty&#039; },&lt;br /&gt;
	{ &#039;Prize&#039; },&lt;br /&gt;
	{ &#039;Scrape&#039; },&lt;br /&gt;
	{ &#039;Sheaf&#039; },&lt;br /&gt;
	{ &#039;Shelter&#039; },&lt;br /&gt;
	{ &#039;Skull&#039; },&lt;br /&gt;
	{ &#039;Snort&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local potterySherdAliases = {}&lt;br /&gt;
for _, pottery_sherd in ipairs(pottery_sherds) do&lt;br /&gt;
	local name = pottery_sherd[1] .. &#039; Pottery Sherd&#039;&lt;br /&gt;
	aliases[name] = { title = &#039;&amp;amp;e&#039; .. name , name = name }&lt;br /&gt;
	table.insert(potterySherdAliases, aliases[name])&lt;br /&gt;
end&lt;br /&gt;
table.insert(potterySherdAliases, &#039;Brick&#039;)&lt;br /&gt;
&lt;br /&gt;
aliases[&#039;Any Pottery Sherd&#039;] = potterySherdAliases&lt;br /&gt;
&lt;br /&gt;
-- Smithing Templates --&lt;br /&gt;
local smithing_templates = {&lt;br /&gt;
	{ &#039;Netherite Upgrade&#039;,    &#039;Diamond Equipment&#039;, &#039;Netherite Ingot&#039;,  &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Bolt Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Coast Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Dune Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Eye Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Flow Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Host Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Raiser Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Rib Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Sentry Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Shaper Armor Trim&#039;,    &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Silence Armor Trim&#039;,   &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;d&#039; },&lt;br /&gt;
	{ &#039;Snout Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Spire Armor Trim&#039;,     &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Tide Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Vex Armor Trim&#039;,       &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Ward Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;b&#039; },&lt;br /&gt;
	{ &#039;Wayfinder Armor Trim&#039;, &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
	{ &#039;Wild Armor Trim&#039;,      &#039;Armor&#039;,             &#039;Ingot &amp;amp; Crystals&#039;, &#039;&amp;amp;e&#039; },&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
local smithing_template_array = {}&lt;br /&gt;
local armor_trims_array = {}&lt;br /&gt;
for _,smithing_template in pairs(smithing_templates) do&lt;br /&gt;
    local rarityColor = smithing_template[4]&lt;br /&gt;
	local current_alias = {&lt;br /&gt;
		title = rarityColor .. smithing_template[1],&lt;br /&gt;
		name = smithing_template[1] .. &#039; Smithing Template&#039;,&lt;br /&gt;
		text = &#039;&amp;amp;7&#039; .. &#039;Smithing Template&#039; .. &#039;//Applies to:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[2] .. &#039;/&amp;amp;7Ingredients:/&amp;amp;#160;&amp;amp;9&#039; .. smithing_template[3],&lt;br /&gt;
	}&lt;br /&gt;
	aliases[smithing_template[1]] = current_alias&lt;br /&gt;
	aliases[smithing_template[1] .. &#039; Smithing Template&#039;] = current_alias&lt;br /&gt;
	table.insert(smithing_template_array,current_alias)&lt;br /&gt;
	if string.find(smithing_template[1],&#039; Armor Trim$&#039;) then&lt;br /&gt;
		table.insert(armor_trims_array,current_alias)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Matching Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Any Smithing Template&#039;] = smithing_template_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Matching Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
aliases[&#039;Any Armor Trim Smithing Template&#039;] = armor_trims_array&lt;br /&gt;
&lt;br /&gt;
--- Merge all separate slab collections into one &amp;quot;Any Slab&amp;quot; group&lt;br /&gt;
local slabs = {}&lt;br /&gt;
local trapdoors = {}&lt;br /&gt;
for groupName, entries in pairs(aliases) do&lt;br /&gt;
    if groupName:find(&#039;^Any&#039;) then&lt;br /&gt;
         if groupName:find(&#039;%Slab$&#039;) then&lt;br /&gt;
            for _, v in ipairs(entries) do&lt;br /&gt;
                table.insert(slabs, v)&lt;br /&gt;
            end&lt;br /&gt;
        else end&lt;br /&gt;
        if groupName:find(&#039;%Trapdoor$&#039;) then&lt;br /&gt;
           for _, v in ipairs(entries) do&lt;br /&gt;
               table.insert(trapdoors, v)&lt;br /&gt;
           end&lt;br /&gt;
       else end&lt;br /&gt;
    else end&lt;br /&gt;
end&lt;br /&gt;
aliases[&#039;Any Slab&#039;] = slabs&lt;br /&gt;
aliases[&#039;Any Trapdoor&#039;] = trapdoors&lt;br /&gt;
&lt;br /&gt;
return aliases&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:SpriteFile&amp;diff=13185</id>
		<title>Module:SpriteFile</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:SpriteFile&amp;diff=13185"/>
		<updated>2026-09-27T15:11:22Z</updated>

		<summary type="html">&lt;p&gt;Gutin: Created page with &amp;quot;local p = {}  function p.sprite( f ) 	local args = f 	if f == mw.getCurrentFrame() then 		args = require( &amp;#039;Module:ProcessArgs&amp;#039; ).merge( true ) 	else 		f = mw.getCurrentFrame() 	end 	 	-- Default settings 	local default = { 		scale = 1, 		size = 16, 		align = &amp;#039;text-top&amp;#039; 	} 	 	local id = mw.text.trim( tostring( args[1] or &amp;#039;&amp;#039; ) ) 	if not args.keepcase then 		id = mw.ustring.lower( id ):gsub( &amp;#039;[%s%+]&amp;#039;, &amp;#039;-&amp;#039; ) 	end 	 	local link = ( args.link or &amp;#039;&amp;#039; ) 	if mw.ustring.lower( link...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.sprite( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = require( &#039;Module:ProcessArgs&#039; ).merge( true )&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Default settings&lt;br /&gt;
	local default = {&lt;br /&gt;
		scale = 1,&lt;br /&gt;
		size = 16,&lt;br /&gt;
		align = &#039;text-top&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local id = mw.text.trim( tostring( args[1] or &#039;&#039; ) )&lt;br /&gt;
	if not args.keepcase then&lt;br /&gt;
		id = mw.ustring.lower( id ):gsub( &#039;[%s%+]&#039;, &#039;-&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local link = ( args.link or &#039;&#039; )&lt;br /&gt;
	if mw.ustring.lower( link ) == &#039;none&#039; then&lt;br /&gt;
		link = &#039;&#039;&lt;br /&gt;
	elseif link ~= &#039;&#039; then&lt;br /&gt;
		local linkPrefix = ( not link:find( &#039;//&#039; ) and args.linkprefix ) or &#039;&#039;&lt;br /&gt;
		link = linkPrefix .. link&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local scale = args.scale or default.scale&lt;br /&gt;
	local height = ( args.height or args.size or default.size ) * scale&lt;br /&gt;
	local width = ( args.width or args.size or default.size ) * scale&lt;br /&gt;
	local size = width .. &#039;x&#039; .. height .. &#039;px&#039;&lt;br /&gt;
	&lt;br /&gt;
	local styles = {}&lt;br /&gt;
	if height ~= default.size then&lt;br /&gt;
		styles[#styles + 1] = &#039;height:&#039; .. height .. &#039;px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if width ~= default.size then&lt;br /&gt;
		styles[#styles + 1] = &#039;width:&#039; .. width .. &#039;px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = args.name or &#039;&#039;&lt;br /&gt;
	if name == &#039;InvSprite&#039; then&lt;br /&gt;
		name = &#039;Invicon&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local extension = name == &#039;Dungeons2AchievementSprite&#039; and &#039;.jpg&#039; or name == &#039;&#039; and &#039;&#039; or &#039;.png&#039;&lt;br /&gt;
	local file = name .. &#039; &#039; .. id .. extension&lt;br /&gt;
	local altText = &#039;&#039;&lt;br /&gt;
	if link == &#039;&#039; then&lt;br /&gt;
		altText = file .. &#039;: Sprite image for &#039; .. id .. &#039; in Minecraft&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if id == &#039;&#039; then&lt;br /&gt;
		file = &#039;Grid Unknown.png&#039;&lt;br /&gt;
		altText = &#039;Unknown sprite image&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local sprite = mw.html.create( &#039;span&#039; ):addClass( &#039;sprite-file&#039; )&lt;br /&gt;
	local img = &#039;[[File:&#039; .. file .. &#039;|&#039; .. size .. &#039;|link=&#039; .. link .. &#039;|alt=&#039; .. altText .. &#039;|class=pixel-image|&#039; .. ( args.title or &#039;&#039; ) .. &#039;]]&#039;&lt;br /&gt;
	sprite:node( img )&lt;br /&gt;
	&lt;br /&gt;
	local align = args.align or default.align&lt;br /&gt;
	if align ~= default.align then&lt;br /&gt;
		styles[#styles + 1] = &#039;--vertical-align:&#039; .. align&lt;br /&gt;
	end&lt;br /&gt;
	styles[#styles + 1] = args.css&lt;br /&gt;
	&lt;br /&gt;
	sprite:cssText( table.concat( styles, &#039;;&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local root&lt;br /&gt;
	local spriteText&lt;br /&gt;
	if args.text then&lt;br /&gt;
		if not args[&#039;wrap&#039;] then&lt;br /&gt;
			root = mw.html.create( &#039;span&#039; ):addClass( &#039;nowrap&#039; )&lt;br /&gt;
		end&lt;br /&gt;
		spriteText = mw.html.create( &#039;span&#039; ):addClass( &#039;sprite-text&#039; ):wikitext( args.text )&lt;br /&gt;
		if args.title then&lt;br /&gt;
			spriteText:attr( &#039;title&#039;, args.title )&lt;br /&gt;
		end&lt;br /&gt;
		if link ~= &#039;&#039; then&lt;br /&gt;
			-- External link&lt;br /&gt;
			if link:find( &#039;//&#039; ) then&lt;br /&gt;
				spriteText = &#039;[&#039; .. link .. &#039; &#039; .. tostring( spriteText ) .. &#039;]&#039;&lt;br /&gt;
			else&lt;br /&gt;
				spriteText = &#039;[[&#039; .. link .. &#039;|&#039; .. tostring( spriteText ) .. &#039;]]&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not root then&lt;br /&gt;
		root = mw.html.create( &#039;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	root:node( sprite )&lt;br /&gt;
	if spriteText then&lt;br /&gt;
		root:node( spriteText )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( root )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.link( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = require( &#039;Module:ProcessArgs&#039; ).merge( true )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local link = args[1]&lt;br /&gt;
	if args[1] and not args.id then&lt;br /&gt;
		link = args[1]:match( &#039;^(.-)%+&#039; ) or args[1]&lt;br /&gt;
	end&lt;br /&gt;
	local text&lt;br /&gt;
	if not args.notext then&lt;br /&gt;
		text = args.text or args[2] or link&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args[1] = args.id or args[1]&lt;br /&gt;
	args.link = args.link or link&lt;br /&gt;
	args.text = text&lt;br /&gt;
	&lt;br /&gt;
	return p.sprite( args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:AnimateSprite&amp;diff=13184</id>
		<title>Module:AnimateSprite</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:AnimateSprite&amp;diff=13184"/>
		<updated>2026-09-27T14:54:52Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.animate( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local icons = {}&lt;br /&gt;
	local sprite = require( &#039;Module:SpriteFile&#039; ).sprite&lt;br /&gt;
	local name = args.name or &#039;InvSprite&#039;&lt;br /&gt;
	&lt;br /&gt;
	local function image( icon )&lt;br /&gt;
		args.name = name&lt;br /&gt;
		args[1] = icon&lt;br /&gt;
		args.size = args.size or 32&lt;br /&gt;
		args.align = args.align or &#039;middle&#039;&lt;br /&gt;
		args.keepcase = true&lt;br /&gt;
		return sprite(args) or &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for icon in mw.text.gsplit( args[1], &#039;%s*;%s*&#039; ) do&lt;br /&gt;
		icons[#icons+1] = &#039;&amp;lt;span&amp;gt;&#039; .. (#icon &amp;gt; 0 and image( icon ) or &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	icons[1] = icons[1]:gsub( &#039;^&amp;lt;span&amp;gt;&#039;, &#039;&amp;lt;span class=&amp;quot;animated-active&amp;quot;&amp;gt;&#039; )&lt;br /&gt;
	&lt;br /&gt;
	return &#039;&amp;lt;span class=&amp;quot;animated&amp;quot;&amp;gt;&#039; .. table.concat( icons ) .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=Module:UI&amp;diff=13183</id>
		<title>Module:UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=Module:UI&amp;diff=13183"/>
		<updated>2026-09-27T14:53:13Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local moduleSlot = require([[Module:Inventory slot]])&lt;br /&gt;
local slot = moduleSlot.slot&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function addSlot( args, item, prefix, class, default )&lt;br /&gt;
	local none, nostacksize&lt;br /&gt;
	prefix = prefix or &#039;&#039;&lt;br /&gt;
	if #prefix == 0 then&lt;br /&gt;
		none = &#039;none&#039;&lt;br /&gt;
		nostacksize = ((item == &#039;&#039; or nil) and &#039;&#039;) or (args and args[item] and args[item]:gsub( &#039;[,%d]&#039;, &#039;&#039; ) or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return slot{&lt;br /&gt;
		nostacksize or args[item], mod = args.Mod, link = none or args[prefix .. &#039;link&#039;],&lt;br /&gt;
		title = none or args[prefix .. &#039;title&#039;], class = class, default = default,&lt;br /&gt;
		parsed = args.parsed&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function experience_class(exp_value)&lt;br /&gt;
	local MINMAX = {&lt;br /&gt;
	  {-32768, 2},&lt;br /&gt;
	  {3, 6},&lt;br /&gt;
	  {7, 16},&lt;br /&gt;
	  {17, 36},&lt;br /&gt;
	  {37, 72},&lt;br /&gt;
	  {73, 148},&lt;br /&gt;
	  {149, 306},&lt;br /&gt;
	  {307, 616},&lt;br /&gt;
	  {617, 1236},&lt;br /&gt;
	  {1237, 2476},&lt;br /&gt;
	  {2477, 32767}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local EXP_IMGS = {&lt;br /&gt;
		&amp;quot;xp-2&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-6&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-16&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-36&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-72&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-148&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-306&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-616&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-1236&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-2476&amp;quot;,&lt;br /&gt;
		&amp;quot;xp-32767&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local n = assert( tonumber(exp_value), &amp;quot;Module:UI: Experience value is not a number (&amp;quot; .. exp_value .. &amp;quot;)&amp;quot; )&lt;br /&gt;
	&lt;br /&gt;
	local idx, exp = 2, tonumber( exp_value )&lt;br /&gt;
	if exp &amp;lt;= MINMAX[#MINMAX][2] then&lt;br /&gt;
	  for i = 1, #MINMAX do&lt;br /&gt;
		if MINMAX[i][1] &amp;lt; exp and MINMAX[i][2] &amp;gt;= exp then&lt;br /&gt;
		  idx = i&lt;br /&gt;
		  break&lt;br /&gt;
		end&lt;br /&gt;
	  end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( EXP_IMGS[idx] )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Crafting table&lt;br /&gt;
function p.craftingTable( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Crafting_Table pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local input = body:tag( &#039;span&#039; ):addClass( &#039;mcui-input&#039; )&lt;br /&gt;
	for num = 1, 3 do&lt;br /&gt;
		local row = input:tag( &#039;span&#039; ):addClass( &#039;mcui-row&#039; )&lt;br /&gt;
		for _, letter in ipairs{ &#039;A&#039;, &#039;B&#039;, &#039;C&#039; } do&lt;br /&gt;
			row:wikitext( addSlot( args, letter .. num, letter .. num ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local shapeless = args.shapeless or &#039;&#039;&lt;br /&gt;
	local fixed = args.fixed or &#039;&#039;&lt;br /&gt;
	if shapeless ~= &#039;&#039; or fixed ~= &#039;&#039; then&lt;br /&gt;
		local icon = body:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-icons&#039; )&lt;br /&gt;
			:tag( &#039;span&#039; )&lt;br /&gt;
				:tag( &#039;br&#039; )&lt;br /&gt;
			:done()&lt;br /&gt;
		if shapeless ~= &#039;&#039; then&lt;br /&gt;
			icon:addClass( &#039;mcui-shapeless&#039; )&lt;br /&gt;
				:attr( &#039;title&#039;,&lt;br /&gt;
					&#039;This recipe is shapeless; the inputs may be placed in any arrangement in the crafting grid.&#039;&lt;br /&gt;
				)&lt;br /&gt;
		elseif fixed ~= &#039;&#039; then&lt;br /&gt;
			local notFixed = args.notfixed or &#039;&#039;&lt;br /&gt;
			local exceptFixed = &#039;&#039;&lt;br /&gt;
			if notFixed ~= &#039;&#039; then&lt;br /&gt;
				exceptFixed = &#039;; except for &#039; .. notFixed .. &#039;, which can go anywhere&#039;&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			icon:addClass( &#039;mcui-fixed&#039; )&lt;br /&gt;
				:attr( &#039;title&#039;,&lt;br /&gt;
					&#039;This recipe is fixed; the input arrangement may not be moved or mirrored in the crafting grid&#039; .. exceptFixed .. &#039;.&#039;&lt;br /&gt;
				)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Furnace&lt;br /&gt;
function p.furnace( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Furnace pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local input = body:tag( &#039;span&#039; ):addClass( &#039;mcui-input&#039; )&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Input&#039;, &#039;I&#039; ) )&lt;br /&gt;
	local fuel = input:tag( &#039;span&#039; ):addClass( &#039;mcui-fuel&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	local burning = args.Input or &#039;&#039; ~= &#039;&#039; and args.Fuel or &#039;&#039; ~= &#039;&#039;&lt;br /&gt;
	if not burning then&lt;br /&gt;
		fuel:addClass( &#039;mcui-inactive&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Fuel&#039;, &#039;F&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	if not burning or ( args.Output or &#039;&#039; ) == &#039;&#039; then&lt;br /&gt;
		arrow:addClass( &#039;mcui-inactive&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
			&lt;br /&gt;
	args.Experience = args.Experience or &#039;&#039;&lt;br /&gt;
	if args.Experience ~= &#039;&#039; then&lt;br /&gt;
		-- Converts commas to dots, removes all spaces and splits the arguments with semicolon.&lt;br /&gt;
		local split = mw.text.split(string.gsub(args.Experience, &#039;[ ,]&#039;, {[&#039; &#039;] = &#039;&#039;, [&#039;,&#039;] = &#039;.&#039;}), &#039;;&#039;, true)&lt;br /&gt;
		local animated = body:tag(&#039;span&#039;)&lt;br /&gt;
				:attr(&#039;title&#039;, &#039;XP reward. If there is a fractional part, it means the recipe has a chance equal to the fractional part of rewarding an additional XP point.&#039;)&lt;br /&gt;
				:addClass(&#039;animated mcui-experience&#039;)&lt;br /&gt;
		local isNotFirst = true&lt;br /&gt;
		for i, v in ipairs(split) do&lt;br /&gt;
			local xp = tonumber(v)&lt;br /&gt;
			assert(xp, &#039;Module:UI: &amp;quot;&#039; .. v .. &#039;&amp;quot; is not a valid number&#039;)&lt;br /&gt;
			local xpWrapper = animated:tag(&#039;span&#039;)&lt;br /&gt;
					:addClass(isNotFirst and &#039;animated-active&#039; or nil)&lt;br /&gt;
			xpWrapper:tag(&#039;span&#039;)&lt;br /&gt;
					:addClass(experience_class(xp) .. &#039; mcui-experience-orb&#039;)&lt;br /&gt;
			xpWrapper:tag(&#039;span&#039;)&lt;br /&gt;
					:addClass(&#039;mcui-experience-text&#039;)&lt;br /&gt;
					:wikitext((&#039;&amp;amp;nbsp;&#039; and xp &amp;gt; 72 or &#039;&#039;) .. xp)&lt;br /&gt;
			isNotFirst = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Brewing Stand&lt;br /&gt;
function p.brewingStand( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Brewing_Stand pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local input = body:tag( &#039;span&#039; ):addClass( &#039;mcui-input&#039; )&lt;br /&gt;
	input:tag( &#039;span&#039; ):addClass( &#039;mcui-bubbling&#039; ):tag( &#039;br&#039; )&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Input&#039;, &#039;I&#039; ) )&lt;br /&gt;
	input:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; ):tag( &#039;br&#039; )&lt;br /&gt;
	if ( args.Input or &#039;&#039; ) == &#039;&#039; or&lt;br /&gt;
		( ( args.Output1 or &#039;&#039; ) == &#039;&#039; and ( args.Output2 or &#039;&#039; ) == &#039;&#039; and ( args.Output3 or &#039;&#039; ) == &#039;&#039; )&lt;br /&gt;
	then&lt;br /&gt;
		input:addClass( &#039;mcui-inactive&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-paths&#039; )&lt;br /&gt;
			:tag( &#039;br&#039; )&lt;br /&gt;
	&lt;br /&gt;
	if ( ( args.Base1 or &#039;&#039; ) ~= &#039;&#039; or ( args.Base2 or &#039;&#039; ) ~= &#039;&#039; or ( args.Base3 or &#039;&#039; ) ~= &#039;&#039; ) then&lt;br /&gt;
		local base = body:tag( &#039;span&#039; ):addClass( &#039;mcui-base&#039; )&lt;br /&gt;
		local arrows = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrowDown&#039; )&lt;br /&gt;
		for i = 1, 3 do&lt;br /&gt;
			base:wikitext( addSlot( args, &#039;Base&#039; .. i, &#039;B&#039; .. i, &#039;mcui-base&#039; .. i ) )&lt;br /&gt;
			arrows:tag( &#039;span&#039; ):addClass( &#039;mcui-arrowDown&#039; .. i ):tag( &#039;br&#039; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local output = body:tag( &#039;span&#039; ):addClass( &#039;mcui-output&#039; )&lt;br /&gt;
	for i = 1, 3 do&lt;br /&gt;
		output:wikitext( addSlot( args, &#039;Output&#039; .. i, &#039;O&#039; .. i, &#039;mcui-output&#039; .. i ) )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Stonecutter&lt;br /&gt;
function p.stonecutter( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Stonecutter pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local input = body:tag( &#039;span&#039; ):addClass( &#039;mcui-input&#039; )&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Input&#039;, &#039;I&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-stonecutterArrow&#039; )&lt;br /&gt;
	arrow:wikitext( addSlot( args, &#039;Output&#039;, &#039;&#039;, &#039;invslot-plain mcui-stonecutterSprite&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Loom&lt;br /&gt;
function p.loom( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Loom pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local tapestry = body:tag( &#039;span&#039; ):addClass( &#039;mcui-tapestry&#039; )&lt;br /&gt;
	if args.Banner and #args.Banner&amp;gt;0 then&lt;br /&gt;
		tapestry:wikitext( addSlot( args, &#039;Banner&#039;, &#039;B&#039;, &#039;mcui-inputBanner&#039; ) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.Dye and #args.Dye&amp;gt;0 then&lt;br /&gt;
		tapestry:wikitext( addSlot( args, &#039;Dye&#039;, &#039;D&#039;, &#039;mcui-inputDye&#039; ) )&lt;br /&gt;
	end&lt;br /&gt;
	if args.Pattern and #args.Pattern&amp;gt;0 then&lt;br /&gt;
		tapestry:wikitext( addSlot( args, &#039;Pattern&#039;, &#039;P&#039;, &#039;mcui-inputPattern&#039; ) )&lt;br /&gt;
	end&lt;br /&gt;
	tapestry:tag( &#039;span&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-loomArrow&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local bannerSprite&lt;br /&gt;
	if args.Sprite and #args.Sprite &amp;gt; 0 then&lt;br /&gt;
		local animate = require( [[Module:AnimateSprite]] ).animate&lt;br /&gt;
		bannerSprite = animate{&lt;br /&gt;
			args.Sprite,&lt;br /&gt;
			name = &#039;SlotSprite&#039;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		bannerSprite = &#039;&amp;lt;br&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	arrow&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-bannerSprite&#039; )&lt;br /&gt;
			:wikitext( bannerSprite )&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Grindstone&lt;br /&gt;
function p.grindstone( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Grindstone pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local grindstone = body:tag( &#039;span&#039; ):addClass( &#039;mcui-grindstone&#039; )&lt;br /&gt;
	grindstone:wikitext( addSlot( args, &#039;Input1&#039;, &#039;I1&#039;, &#039;mcui-input1&#039; ) )&lt;br /&gt;
	grindstone:wikitext( addSlot( args, &#039;Input2&#039;, &#039;I2&#039;, &#039;mcui-input2&#039; ) )&lt;br /&gt;
		&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; )&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Smithing Table&lt;br /&gt;
function p.smithing(f) &lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Smithing_Table pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local smithingTable = body:tag( &#039;span&#039; ):addClass( &#039;mcui-smithingTable&#039; )&lt;br /&gt;
	smithingTable:wikitext( addSlot( args, &#039;Input1&#039;, &#039;I1&#039;, &#039;mcui-input1&#039; ) )&lt;br /&gt;
	smithingTable:wikitext( addSlot( args, &#039;Input2&#039;, &#039;I2&#039;, &#039;mcui-input2&#039; ) )&lt;br /&gt;
	smithingTable:wikitext( addSlot( args, &#039;Input3&#039;, &#039;I3&#039;, &#039;mcui-input3&#039; ) )&lt;br /&gt;
		&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; )&lt;br /&gt;
	arrow:cssText([[display: inline-block;&lt;br /&gt;
					width: 44px;&lt;br /&gt;
					height: 30px;&lt;br /&gt;
					margin: 3px 18px;&lt;br /&gt;
					vertical-align: top;]])&lt;br /&gt;
	&lt;br /&gt;
	if args.crossed then&lt;br /&gt;
		arrow:addClass(&#039;mcui-inactive&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Anvil&lt;br /&gt;
function p.anvil(f) &lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Anvil pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local hammer = body:tag( &#039;span&#039; ):addClass(&#039;mcui-hammer&#039;)&lt;br /&gt;
	hammer:cssText([[display: block;&lt;br /&gt;
					 width: 60px;&lt;br /&gt;
					 height: 60px;]])&lt;br /&gt;
	&lt;br /&gt;
	local inputbox = body:tag( &#039;span&#039; ):addClass(&#039;mcui-Anvil-inputbox mcui-input&#039;)&lt;br /&gt;
	local itemName = mw.text.trim(args.title or &#039;&#039;)&lt;br /&gt;
	if itemName ~= &#039;&#039; then&lt;br /&gt;
		-- Manual title override&lt;br /&gt;
		itemName = itemName:gsub(&#039;;&#039;, &#039;,,&#039;)&lt;br /&gt;
	elseif args.Input1 and #args.Input1 &amp;gt; 0 then&lt;br /&gt;
		-- Extract the item names from the first input slot.&lt;br /&gt;
		-- The name for each item either&lt;br /&gt;
		-- 1) the overridden title (in square brackets) or&lt;br /&gt;
		-- 2) the item name without &amp;quot;Damaged&amp;quot; prefix.&lt;br /&gt;
		itemName = {}&lt;br /&gt;
		if args.parsed then&lt;br /&gt;
			-- pre-parsed slot parameters, args.Input1 is a table&lt;br /&gt;
			for _, slot in ipairs(args.Input1) do&lt;br /&gt;
				if slot[1] then&lt;br /&gt;
					error(&amp;quot;Slot subframes are not supported by the anvil UI&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(itemName, slot.title or slot.name:gsub(moduleSlot.i18n.prefixes.damaged .. &#039; &#039;, &#039;&#039;))&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			for _, slot in ipairs(moduleSlot.splitOnUnenclosedSemicolons(args.Input1)) do&lt;br /&gt;
				local slotTitle = slot:match(&#039;%[([%w%s]-)%][%w%s]+&#039;)&lt;br /&gt;
				if not slotTitle then&lt;br /&gt;
					slotTitle = slot:gsub(moduleSlot.i18n.prefixes.damaged .. &#039; &#039;, &#039;&#039;)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(itemName, slotTitle)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if itemName ~= &#039;&#039; then&lt;br /&gt;
		itemName = require( [[Module:AnimateText]] ).animate{ itemName }:gsub( &#039;class=&amp;quot;animated&amp;quot;&#039;, &#039;class=&amp;quot;mcui-Anvil-inputtext animated&amp;quot;&#039; )&lt;br /&gt;
	else&lt;br /&gt;
		inputbox:addClass( &#039;mcui-inactive&#039; )&lt;br /&gt;
		itemName = &#039;&amp;lt;br&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	inputbox:wikitext( ( itemName ) )&lt;br /&gt;
	&lt;br /&gt;
	local anvilA = body:tag( &#039;span&#039; ):addClass( &#039;mcui-anvil&#039; ):css(&#039;margin-left&#039;, &#039;18px&#039;)&lt;br /&gt;
	anvilA:wikitext( addSlot( args, &#039;Input1&#039;, &#039;I1&#039;, &#039;mcui-input1&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local plus = body:tag( &#039;span&#039; ):addClass( &#039;mcui-plus&#039; )&lt;br /&gt;
	plus:cssText([[display: inline-block;&lt;br /&gt;
				   width: 26px;&lt;br /&gt;
				   height: 26px;&lt;br /&gt;
				   margin: 6px 18px;&lt;br /&gt;
				   vertical-align: top;]])&lt;br /&gt;
	&lt;br /&gt;
	local anvilB = body:tag( &#039;span&#039; ):addClass( &#039;mcui-anvil&#039; )&lt;br /&gt;
	anvilB:wikitext( addSlot( args, &#039;Input2&#039;, &#039;I2&#039;, &#039;mcui-input2&#039; ) )&lt;br /&gt;
		&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; )&lt;br /&gt;
    arrow:cssText([[display: inline-block;&lt;br /&gt;
					width: 44px;&lt;br /&gt;
					height: 30px;&lt;br /&gt;
					margin: 4px 18px;&lt;br /&gt;
					vertical-align: top;]])&lt;br /&gt;
	&lt;br /&gt;
	if args.crossed then&lt;br /&gt;
		arrow:addClass(&#039;mcui-inactive&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:css( &#039;margin-right&#039;, &#039;18px&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	if args.cost then&lt;br /&gt;
		local cost = body:tag(&#039;span&#039;):addClass(&#039;mcui-Anvil-cost&#039;)&lt;br /&gt;
		if args.expensive then&lt;br /&gt;
			cost:addClass(&#039;mcui-Anvil-cost-expensive&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			cost:addClass(&#039;mcui-Anvil-cost-normal&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if args.cost == &#039;expensive&#039; then&lt;br /&gt;
			cost:wikitext(&#039;Too expensive&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			cost:wikitext(&#039;Enchantment Cost: &#039; .. args.cost)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local wrapper = mw.html.create( &#039;div&#039; )&lt;br /&gt;
	wrapper:wikitext( require( [[Module:TSLoader]] ).call( &amp;quot;Anvil/styles.css&amp;quot; ) )&lt;br /&gt;
	return tostring( wrapper:node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.legacySmithing(f) &lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Smithing_Table pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local smithingA = body:tag( &#039;span&#039; ):addClass( &#039;mcui-smithingTable&#039; )&lt;br /&gt;
	smithingA:wikitext( addSlot( args, &#039;Input1&#039;, &#039;I1&#039;, &#039;mcui-input1&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local plus = body:tag( &#039;span&#039; ):addClass( &#039;mcui-plus&#039; )&lt;br /&gt;
	plus:cssText([[display: inline-block;&lt;br /&gt;
				   width: 26px;&lt;br /&gt;
				   height: 26px;&lt;br /&gt;
				   margin: 6px 18px;&lt;br /&gt;
				   vertical-align: top;]])&lt;br /&gt;
	&lt;br /&gt;
	local smithingB = body:tag( &#039;span&#039; ):addClass( &#039;mcui-smithingTable&#039; )	&lt;br /&gt;
	smithingB:wikitext( addSlot( args, &#039;Input2&#039;, &#039;I2&#039;, &#039;mcui-input2 invslot-default-smithing&#039; ) )&lt;br /&gt;
		&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; )&lt;br /&gt;
	arrow:cssText([[display: inline-block;&lt;br /&gt;
					width: 44px;&lt;br /&gt;
					height: 30px;&lt;br /&gt;
					margin: 4px 18px;&lt;br /&gt;
					vertical-align: top;]])&lt;br /&gt;
	&lt;br /&gt;
	if args.crossed then&lt;br /&gt;
		arrow:addClass(&#039;mcui-inactive&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot&#039; ) )&lt;br /&gt;
&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cartography( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		f = mw.getCurrentFrame()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local body = mw.html.create( &#039;span&#039; ):addClass( &#039;mcui mcui-Cartography_Table pixel-image&#039; )&lt;br /&gt;
	&lt;br /&gt;
	local input = body:tag( &#039;span&#039; ):addClass( &#039;mcui-input&#039; )&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Input1&#039;, &#039;I1&#039; ) )&lt;br /&gt;
	local plus = input:tag( &#039;span&#039; ):addClass( &#039;mcui-plus&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	input:wikitext( addSlot( args, &#039;Input2&#039;, &#039;I2&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	local arrow = body:tag( &#039;span&#039; ):addClass( &#039;mcui-arrow&#039; ):tag( &#039;br&#039; ):done()&lt;br /&gt;
	&lt;br /&gt;
	body&lt;br /&gt;
		:tag( &#039;span&#039; )&lt;br /&gt;
			:addClass( &#039;mcui-output&#039; )&lt;br /&gt;
			:wikitext( addSlot( args, &#039;Output&#039;, &#039;O&#039;, &#039;invslot-large&#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( mw.html.create( &#039;div&#039; ):node( body ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Stonecutter.gif&amp;diff=13182</id>
		<title>File:Invicon Stonecutter.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Stonecutter.gif&amp;diff=13182"/>
		<updated>2026-09-27T14:50:05Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Prismarine_Slab.gif&amp;diff=13098</id>
		<title>File:Invicon Prismarine Slab.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Prismarine_Slab.gif&amp;diff=13098"/>
		<updated>2026-09-25T20:04:34Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Sulfur_Brick_Slab.webp&amp;diff=13097</id>
		<title>File:Invicon Sulfur Brick Slab.webp</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Sulfur_Brick_Slab.webp&amp;diff=13097"/>
		<updated>2026-09-25T20:04:31Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Polished_Blackstone_Brick_Slab.png&amp;diff=13096</id>
		<title>File:Invicon Polished Blackstone Brick Slab.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Polished_Blackstone_Brick_Slab.png&amp;diff=13096"/>
		<updated>2026-09-25T20:04:28Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
	<entry>
		<id>https://wiki.horizonsend.net/index.php?title=File:Invicon_Mossy_Stone_Brick_Slab.png&amp;diff=13095</id>
		<title>File:Invicon Mossy Stone Brick Slab.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.horizonsend.net/index.php?title=File:Invicon_Mossy_Stone_Brick_Slab.png&amp;diff=13095"/>
		<updated>2026-09-25T20:04:25Z</updated>

		<summary type="html">&lt;p&gt;Gutin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gutin</name></author>
	</entry>
</feed>