Changes

25,843 bytes added ,  22:18, 18 April 2023
m
Line 2: Line 2:     
== Declaring Your Own Groupings ==
 
== Declaring Your Own Groupings ==
Tags are declared in your mod’s [https://mcforge.readthedocs.io/en/latest/utilities/tags/datapacks.md datapack]. For example, <code><nowiki>/data/modid/tags/blocks/foo/tagname.json</nowiki></code> will declare a <code><nowiki>Tag<Block></nowiki></code> with ID <code><nowiki>modid:foo/tagname</nowiki></code>. Similarly, you may append to or override tags declared in other domains, such as Vanilla, by declaring your own JSONs. For example, to add your own mod’s saplings to the Vanilla sapling tag, you would specify it in <code><nowiki>/data/minecraft/tags/blocks/saplings.json</nowiki></code>, and Vanilla will merge everything into one tag at reload, if the <code><nowiki>replace</nowiki></code> option is false. If <code><nowiki>replace</nowiki></code> is true, then all entries before the json specifying <code><nowiki>replace</nowiki></code> will be removed. See the [https://minecraft.gamepedia.com/Tag#JSON_format Vanilla wiki] for a description of the base syntax.
+
Tags are declared in your mod’s [https://mcforge.readthedocs.io/en/latest/utilities/tags/datapacks.md datapack]. For example, a <code><nowiki>TagKey<Block></nowiki></code> with a given identifier of  <code><nowiki>modid:foo/tagname</nowiki></code> will reference a tag at <code><nowiki>/data/<modid>/tags/blocks/foo/tagname.json</nowiki></code>. Tags for <code><nowiki>Block</nowiki></code>s, <code><nowiki>Item</nowiki></code>s, <code><nowiki>EntityType</nowiki></code>s, <code><nowiki>Fluid</nowiki></code>s, and <code><nowiki>GameEvent</nowiki></code>s use the plural forms for their folder location while all other registries use the singular version (<code><nowiki>EntityType</nowiki></code> uses the folder <code><nowiki>entity_types</nowiki></code> while <code><nowiki>Potion</nowiki></code> would use the folder <code><nowiki>potion</nowiki></code>). Similarly, you may append to or override tags declared in other domains, such as Vanilla, by declaring your own JSONs. For example, to add your own mod’s saplings to the Vanilla sapling tag, you would specify it in <code><nowiki>/data/minecraft/tags/blocks/saplings.json</nowiki></code>, and Vanilla will merge everything into one tag at reload, if the <code><nowiki>replace</nowiki></code> option is false. If <code><nowiki>replace</nowiki></code> is true, then all entries before the json specifying <code><nowiki>replace</nowiki></code> will be removed.
   −
Forge provides two extensions on the Vanilla syntax: * You may declare an <code><nowiki>optional</nowiki></code> array of the same format as the <code><nowiki>values</nowiki></code> array, but any values listed here that are not present will not cause the tag loading to error. This is useful to provide integration for mods that may or may not be present at runtime.  
+
Values listed that are not present will cause the tag to error unless the value is listed using an <code><nowiki>id</nowiki></code> string and <code><nowiki>required</nowiki></code> boolean set to false, as in the following example:
* You may declare a <code><nowiki>remove</nowiki></code> array of the same format as the <code><nowiki>values</nowiki></code> array. Any values listed here will be removed from the tag. This acts as a finer grained version of the Vanilla <code><nowiki>replace</nowiki></code> option.
+
 
 +
<syntaxhighlight lang="json">
 +
{
 +
  "replace": false,
 +
  "values": [
 +
    "minecraft:gold_ingot",
 +
    "mymod:my_ingot",
 +
    {
 +
      "id": "othermod:ingot_other",
 +
      "required": false
 +
    }
 +
  ]
 +
}
 +
</syntaxhighlight>
 +
 
 +
See the [https://minecraft.gamepedia.com/Tag#JSON_format Vanilla wiki] for a description of the base syntax.
 +
 
 +
 
 +
There is also a Forge extension on the Vanilla syntax.
 +
You may declare a <code><nowiki>remove</nowiki></code> array of the same format as the <code><nowiki>values</nowiki></code> array. Any values listed here will be removed from the tag. This acts as a finer grained version of the Vanilla <code><nowiki>replace</nowiki></code> option.
    
==Using Tags In Code==
 
==Using Tags In Code==
Block, Item, and Fluid tags are automatically sent from the server to any remote clients on login and reload. Function tags are not synced.
+
Tags for all registries are automatically sent from the server to any remote clients on login and reload. <code><nowiki>Block</nowiki></code>s, <code><nowiki>Item</nowiki></code>s, <code><nowiki>EntityType</nowiki></code>s, <code><nowiki>Fluid</nowiki></code>s, and <code><nowiki>GameEvent</nowiki></code>s are special cased as they have <code><nowiki>Holder</nowiki></code>s allowing for available tags to be accessible through the object itself.
 +
 
 +
Tags wrappers can be created using <code><nowiki>TagKey#create</nowiki></code> where the registry the tag should belong to and the tag name are supplied. Some vanilla defined helpers are also available to create wrappers via <code><nowiki>*Tags#create</nowiki></code> where <code><nowiki>*</nowiki></code> refers to the name of the registry object. Forge wrapped registries can create a tag using <code><nowiki>ITagManager</nowiki></code> via <code><nowiki>IForgeRegistry#tags</nowiki></code>. <code><nowiki>TagKey</nowiki></code>s can then be obtained via <code><nowiki>ITagManager#createTagKey</nowiki></code>.
 +
 
 +
Forge wrapped registry objects can grab their associated holder using <code><nowiki>IForgeRegistry#getHolder</nowiki></code>. Additionally, other streamlined operations can be performed using <code><nowiki>ITagManager</nowiki></code>. Non-Forge registry objects use either <code><nowiki>Registry#getHolder</nowiki></code> or <code><nowiki>Registry#getHolderOrThrow</nowiki></code> to get the current holder.
   −
<code><nowiki>BlockTags.getCollection()</nowiki></code> and <code><nowiki>ItemTags.getCollection()</nowiki></code> will retrieve the current <code><nowiki>TagCollection</nowiki></code>, from which you can retrieve a <code><nowiki>Tag</nowiki></code> object by its ID. With a <code><nowiki>Tag</nowiki></code> object in hand, membership can be tested with <code><nowiki>tag.contains(thing)</nowiki></code>, or all the objects in the tag queried with <code><nowiki>tag.getAllElements()</nowiki></code>.
+
They then can compare if the registry object has a tag using <code><nowiki>Holder#is</nowiki></code>. Tag-holding registry objects contain a method called <code><nowiki>#is</nowiki></code> in either their registry object or state-aware class to check whether the object belongs to a certain tag.
    
As an example:  
 
As an example:  
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
ResourceLocation myTagId = new ResourceLocation("mymod", "myitemgroup");
+
public static final TagKey<Item> myItemTag = ItemTags.create(new ResourceLocation("mymod", "myitemgroup"));
Item unknownItem = stack.getItem();
+
 
boolean isInGroup = ItemTags.getCollection().getOrCreateTag(myTagId).contains(unknownItem);
+
public static final TagKey<Potion> myPotionTag = ForgeRegistries.POTIONS.tags().createTagKey(new ResourceLocation("mymod", "mypotiongroup"));
// alternatively, can use getTag and perform a null check
+
 
</syntaxhighlight>
+
public static final TagKey<VillagerType> myVillagerTypeTag = TagKey.create(Registry.VILLAGER_TYPE, new ResourceLocation("mymod", "myvillagertypegroup"));
   −
{{Colored box|title=tip|content=The <code><nowiki>TagCollection</nowiki></code> returned by <code><nowiki>getCollection()</nowiki></code> (and the <code><nowiki>Tag</nowiki></code>s within it) may expire if a reload happens, so you should always query the collection anew every time you need it. The static <code><nowiki>Tag</nowiki></code> fields in <code><nowiki>BlockTags</nowiki></code> and <code><nowiki>ItemTags</nowiki></code> avoid this by introducing a wrapper that handles this expiring. Alternatively, a resource reload listener can be used to refresh any cached tags.}}
+
// In some method where stack is an ItemStack
 +
boolean isInItemGroup = stack.is(myItemTag);
   −
== Conventions ==
+
// In some method where potion is a Potion
 +
boolean isInPotionGroup = ForgeRegistries.POTIONS.tags().getTag(myPotionTag).contains(potion);
   −
There are several conventions that will help facilitate compatibility in the ecosystem:
+
// In some method where villagerTypeKey is a ResourceKey<VillagerType>
  * If there is a Vanilla tag that fits your block or item, add it to that tag. See the [https://minecraft.gamepedia.com/Tag#List_of_tags list of Vanilla tags].
+
boolean isInVillagerTypeGroup = Registry.VILLAGER_TYPE.getHolder(villagerTypeKey).map(holder -> holder.is(myVillagerTypeTag)).orElse(false);
  * If there is a Forge tag that fits your block or item, add it to that tag. The list of tags declared by Forge can be seen on [https://github.com/MinecraftForge/MinecraftForge/tree/1.16.x/src/generated/resources/data/forge/tags GitHub].  
+
</syntaxhighlight>
  * If there is a group of something you feel should be shared by the community, consider PR-ing it to Forge instead of making your own tag
  −
  * Tag naming conventions should follow Vanilla conventions. In particular, item and block groupings are plural instead of singular. E.g. <code><nowiki>minecraft:logs</nowiki></code>, <code><nowiki>minecraft:saplings</nowiki></code>.  
  −
  * Item tags should be sorted into subdirectories according to the type of item, e.g. <code><nowiki>forge:ingots/iron</nowiki></code>, <code><nowiki>forge:nuggets/brass</nowiki></code>, etc.
      
== Migration from OreDictionary ==
 
== Migration from OreDictionary ==
Line 41: Line 63:  
Tags are directly supported by Vanilla, see the respective Vanilla wiki pages for [https://minecraft.gamepedia.com/Recipe#JSON_format recipes] and [https://minecraft.gamepedia.com/Advancements advancements] for usage details.
 
Tags are directly supported by Vanilla, see the respective Vanilla wiki pages for [https://minecraft.gamepedia.com/Recipe#JSON_format recipes] and [https://minecraft.gamepedia.com/Advancements advancements] for usage details.
    +
== Conventions ==
 +
 +
There are several conventions that will help facilitate compatibility in the ecosystem:
 +
  * If there is a Vanilla tag that fits your block or item, add it to that tag. See the [https://minecraft.gamepedia.com/Tag#List_of_tags list of Vanilla tags].
 +
  * If there is a Forge tag that fits your block or item, add it to that tag. The list of tags declared by Forge can be seen on [https://github.com/MinecraftForge/MinecraftForge/tree/1.18.x/src/generated/resources/data/forge/tags GitHub].
 +
  * If there is a group of something you feel should be shared by the community, consider PR-ing it to Forge instead of making your own tag
 +
  * Tag naming conventions should follow Vanilla conventions. In particular, item and block groupings are plural instead of singular. E.g. <code><nowiki>minecraft:logs</nowiki></code>, <code><nowiki>minecraft:saplings</nowiki></code>.
 +
  * Item tags should be sorted into subdirectories according to the type of item, e.g. <code><nowiki>forge:ingots/iron</nowiki></code>, <code><nowiki>forge:nuggets/brass</nowiki></code>, etc.
 +
 +
=== Forge Tags ===
 +
 +
This is a list of all [https://github.com/MinecraftForge/MinecraftForge/tree/1.18.x/src/generated/resources/data/forge/tags tags] using the <code>forge</code> namespace that are currently defined by Forge along those that are commonly used by other mods. These can all be found within the [https://github.com/MinecraftForge/MinecraftForge/blob/1.18.x/src/main/java/net/minecraftforge/common/Tags.java <code>Tags</code>] class.
 +
 +
{{Tip/Important|Tags that are not officially defined within the Forge codebase will have <code>*</code> as a suffix. To use those outside the Forge codebase, an <code>IOptionalNamedTag</code> must be created using <code>*Tags#createOptional</code> where the asterisk can be replaced by its associated class name.}}
 +
 +
==== Blocks ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:barrels</code> || None || Barrels
 +
|-
 +
| <code>forge:barrels/wooden</code> || <code>forge:barrels</code> || Wooden barrels
 +
|-
 +
| <code>forge:chests</code> || None || Chests
 +
|-
 +
| <code>forge:chests/ender</code> || <code>forge:chests</code> || Ender chests
 +
|-
 +
| <code>forge:chests/trapped</code> || <code>forge:chests</code> || Trapped chests
 +
|-
 +
| <code>forge:chests/wooden</code> || <code>forge:chests</code> || Wooden chests
 +
|-
 +
| <code>forge:cobblestone</code> || None || Cobblestones
 +
|-
 +
| <code>forge:cobblestone/normal</code> || <code>forge:cobblestone</code> || Normal cobblestones
 +
|-
 +
| <code>forge:cobblestone/infested</code> || <code>forge:cobblestone</code> || Infested cobblestones
 +
|-
 +
| <code>forge:cobblestone/mossy</code> || <code>forge:cobblestone</code> || Mossy cobblestones
 +
|-
 +
| <code>forge:cobblestone/deepslate</code> || <code>forge:cobblestone</code> || Deepslate cobblestones
 +
|-
 +
| <code>forge:end_stones</code> || None || End stones
 +
|-
 +
| <code>forge:enderman_place_on_blacklist</code> || None || Blocks that an enderman cannot place its held block on
 +
|-
 +
| <code>forge:fence_gates</code> || None || Fence gates
 +
|-
 +
| <code>forge:fence_gates/wooden</code> || <code>forge:fence_gates</code> || Wooden fence gates
 +
|-
 +
| <code>forge:fences</code> || None || Fences
 +
|-
 +
| <code>forge:fences/nether_brick</code> || <code>forge:fences</code> || Nether brick fences
 +
|-
 +
| <code>forge:fences/wooden</code> || <code>forge:fences</code> || Wooden fences
 +
|-
 +
| <code>forge:glass</code> || None || Glass
 +
|-
 +
| <code>forge:glass/black</code> || None || Black glass
 +
|-
 +
| <code>forge:glass/blue</code> || None || Blue glass
 +
|-
 +
| <code>forge:glass/brown</code> || None || Brown glass
 +
|-
 +
| <code>forge:glass/colorless</code> || <code>forge:glass</code> || Normal glass
 +
|-
 +
| <code>forge:glass/cyan</code> || None || Cyan glass
 +
|-
 +
| <code>forge:glass/gray</code> || None || Gray glass
 +
|-
 +
| <code>forge:glass/green</code> || None || Green glass
 +
|-
 +
| <code>forge:glass/light_blue</code> || None || Light blue glass
 +
|-
 +
| <code>forge:glass/light_gray</code> || None || Light gray glass
 +
|-
 +
| <code>forge:glass/lime</code> || None || Lime glass
 +
|-
 +
| <code>forge:glass/magenta</code> || None || Magenta glass
 +
|-
 +
| <code>forge:glass/orange</code> || None || Orange glass
 +
|-
 +
| <code>forge:glass/pink</code> || None || Pink glass
 +
|-
 +
| <code>forge:glass/purple</code> || None || Purple glass
 +
|-
 +
| <code>forge:glass/red</code> || None || Red glass
 +
|-
 +
| <code>forge:glass/silica</code> || None || Sand-based glass with minor ingredient variation
 +
|-
 +
| <code>forge:glass/tinted</code> || <code>forge:glass</code> || Tinted glass
 +
|-
 +
| <code>forge:glass/white</code> || None || White glass
 +
|-
 +
| <code>forge:glass/yellow</code> || None || Yellow glass
 +
|-
 +
| <code>forge:glass_panes</code> || None || Glass panes
 +
|-
 +
| <code>forge:glass_panes/black</code> || None || Black glass panes
 +
|-
 +
| <code>forge:glass_panes/blue</code> || None || Blue glass panes
 +
|-
 +
| <code>forge:glass_panes/brown</code> || None || Brown glass panes
 +
|-
 +
| <code>forge:glass_panes/colorless</code> || <code>forge:glass_panes</code> || Normal glass panes
 +
|-
 +
| <code>forge:glass_panes/cyan</code> || None || Cyan glass panes
 +
|-
 +
| <code>forge:glass_panes/gray</code> || None || Gray glass panes
 +
|-
 +
| <code>forge:glass_panes/green</code> || None || Green glass panes
 +
|-
 +
| <code>forge:glass_panes/light_blue</code> || None || Light blue glass panes
 +
|-
 +
| <code>forge:glass_panes/light_gray</code> || None || Light gray glass panes
 +
|-
 +
| <code>forge:glass_panes/lime</code> || None || Lime glass panes
 +
|-
 +
| <code>forge:glass_panes/magenta</code> || None || Magenta glass panes
 +
|-
 +
| <code>forge:glass_panes/orange</code> || None || Orange glass panes
 +
|-
 +
| <code>forge:glass_panes/pink</code> || None || Pink glass panes
 +
|-
 +
| <code>forge:glass_panes/purple</code> || None || Purple glass panes
 +
|-
 +
| <code>forge:glass_panes/red</code> || None || Red glass panes
 +
|-
 +
| <code>forge:glass_panes/white</code> || None || White glass panes
 +
|-
 +
| <code>forge:glass_panes/yellow</code> || None || Yellow glass panes
 +
|-
 +
| <code>forge:gravel</code> || None || Gravel
 +
|-
 +
| <code>forge:netherrack</code> || None || Netherrack
 +
|-
 +
| <code>forge:obsidian</code> || None || Obsidian
 +
|-
 +
| <code>forge:ore_bearing_ground/deepslate</code> || None || Blocks replaced by deepslate ores during world generation
 +
|-
 +
| <code>forge:ore_bearing_ground/netherrack</code> || None || Blocks replaced by netherrack ores during world generation
 +
|-
 +
| <code>forge:ore_bearing_ground/stone</code> || None || Blocks replaced by stone ores during world generation
 +
|-
 +
| <code>forge:ore_rates/dense</code> || None || Ores which produce numerous resources on average
 +
|-
 +
| <code>forge:ore_rates/singular</code> || None || Ores which produce a single resource on average
 +
|-
 +
| <code>forge:ore_rates/sparse</code> || None || Ores which produce less than a single resource on average
 +
|-
 +
| <code>forge:ores</code> || None || Ores
 +
|-
 +
| <code>forge:ores/coal</code> || <code>forge:ores</code> || Coal ores
 +
|-
 +
| <code>forge:ores/copper</code> || <code>forge:ores</code> || Copper ores
 +
|-
 +
| <code>forge:ores/diamond</code> || <code>forge:ores</code> || Diamond ores
 +
|-
 +
| <code>forge:ores/emerald</code> || <code>forge:ores</code> || Emerald ores
 +
|-
 +
| <code>forge:ores/gold</code> || <code>forge:ores</code> || Gold ores
 +
|-
 +
| <code>forge:ores/lapis</code> || <code>forge:ores</code> || Lapis ores
 +
|-
 +
| <code>forge:ores/netherite_scrap</code> || <code>forge:ores</code> || Netherite scrap ores
 +
|-
 +
| <code>forge:ores/quartz</code> || <code>forge:ores</code> || Quartz ores
 +
|-
 +
| <code>forge:ores/redstone</code> || <code>forge:ores</code> || Redstone ores
 +
|-
 +
| <code>forge:ores_in_ground/deepslate</code> || None || Ores which can be found in deepslate
 +
|-
 +
| <code>forge:ores_in_ground/netherrack</code> || None || Ores which can be found in netherrack
 +
|-
 +
| <code>forge:ores_in_ground/stone</code> || None || Ores which can be found in stone
 +
|-
 +
| <code>forge:sand</code> || None || Sand
 +
|-
 +
| <code>forge:sand/colorless</code> || <code>forge:sand</code> || Normal sand
 +
|-
 +
| <code>forge:sand/red</code> || <code>forge:sand</code> || Red sand
 +
|-
 +
| <code>forge:sandstone</code> || None || Sandstone
 +
|-
 +
| <code>forge:stained_glass</code> || <code>forge:glass</code> || Stained glass
 +
|-
 +
| <code>forge:stained_glass_panes</code> || <code>forge:glass_panes</code> || Stained glass planes
 +
|-
 +
| <code>forge:stone</code> || None || Stones
 +
|-
 +
| <code>forge:storage_blocks</code> || None || Storage blocks
 +
|-
 +
| <code>forge:storage_blocks/amethyst</code> || <code>forge:storage_blocks</code> || Amethyst blocks
 +
|-
 +
| <code>forge:storage_blocks/coal</code> || <code>forge:storage_blocks</code> || Coal blocks
 +
|-
 +
| <code>forge:storage_blocks/copper</code> || <code>forge:storage_blocks</code> || Copper blocks
 +
|-
 +
| <code>forge:storage_blocks/diamond</code> || <code>forge:storage_blocks</code> || Diamond blocks
 +
|-
 +
| <code>forge:storage_blocks/emerald</code> || <code>forge:storage_blocks</code> || Emerald blocks
 +
|-
 +
| <code>forge:storage_blocks/gold</code> || <code>forge:storage_blocks</code> || Gold blocks
 +
|-
 +
| <code>forge:storage_blocks/iron</code> || <code>forge:storage_blocks</code> || Iron blocks
 +
|-
 +
| <code>forge:storage_blocks/lapis</code> || <code>forge:storage_blocks</code> || Lapis blocks
 +
|-
 +
| <code>forge:storage_blocks/netherite</code> || <code>forge:storage_blocks</code> || Netherite blocks
 +
|-
 +
| <code>forge:storage_blocks/quartz</code> || <code>forge:storage_blocks</code> || Quartz blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_copper</code> || <code>forge:storage_blocks</code> || Raw copper blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_gold</code> || <code>forge:storage_blocks</code> || Raw gold blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_iron</code> || <code>forge:storage_blocks</code> || Raw iron blocks
 +
|-
 +
| <code>forge:storage_blocks/redstone</code> || <code>forge:storage_blocks</code> || Redstone blocks
 +
|-
 +
| <code>forge:needs_wood_tool</code> || None || Blocks which need a wooden tool to be mined efficiently
 +
|-
 +
| <code>forge:needs_gold_tool</code> || None || Blocks which need a gold tool to be mined efficiently
 +
|-
 +
| <code>forge:needs_netherite_tool</code> || None || Blocks which need a netherite tool to be mined efficiently
 +
|}
 +
 +
==== Items ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:barrels</code> || None || Barrels
 +
|-
 +
| <code>forge:barrels/wooden</code> || <code>forge:barrels</code> || Wooden barrels
 +
|-
 +
| <code>forge:bones</code> || None || Bones
 +
|-
 +
| <code>forge:bookshelves</code> || None || Bookshelves
 +
|-
 +
| <code>forge:chests</code> || None || Chests
 +
|-
 +
| <code>forge:chests/ender</code> || <code>forge:chests</code> || Ender chests
 +
|-
 +
| <code>forge:chests/trapped</code> || <code>forge:chests</code> || Trapped chests
 +
|-
 +
| <code>forge:chests/wooden</code> || <code>forge:chests</code> || Wooden chests
 +
|-
 +
| <code>forge:cobblestone</code> || None || Cobblestones
 +
|-
 +
| <code>forge:cobblestone/normal</code> || <code>forge:cobblestone</code> || Normal cobblestones
 +
|-
 +
| <code>forge:cobblestone/infested</code> || <code>forge:cobblestone</code> || Infested cobblestones
 +
|-
 +
| <code>forge:cobblestone/mossy</code> || <code>forge:cobblestone</code> || Mossy cobblestones
 +
|-
 +
| <code>forge:cobblestone/deepslate</code> || <code>forge:cobblestone</code> || Deepslate cobblestones
 +
|-
 +
| <code>forge:crops</code> || None || Crops
 +
|-
 +
| <code>forge:crops/beetroot</code> || <code>forge:crops</code> || Beetroot crops
 +
|-
 +
| <code>forge:crops/carrot</code> || <code>forge:crops</code> || Carrot crops
 +
|-
 +
| <code>forge:crops/nether_wart</code> || <code>forge:crops</code> || Nether wart crops
 +
|-
 +
| <code>forge:crops/potato</code> || <code>forge:crops</code>  || Potato crops
 +
|-
 +
| <code>forge:crops/wheat</code> || <code>forge:crops</code> || Wheat crops
 +
|-
 +
| <code>forge:dusts</code> || None || Dusts
 +
|-
 +
| <code>forge:dusts/prismarine</code> || <code>forge:dusts</code> || Prismarine dusts
 +
|-
 +
| <code>forge:dusts/redstone</code> || <code>forge:dusts</code> || Redstone dusts
 +
|-
 +
| <code>forge:dusts/glowstone</code> || <code>forge:dusts</code> || Glowstone dusts
 +
|-
 +
| <code>forge:dyes</code> || None || Dyes
 +
|-
 +
| <code>forge:dyes/black</code> || <code>forge:dyes</code> || Black dyes
 +
|-
 +
| <code>forge:dyes/blue</code> || <code>forge:dyes</code> || Blue dyes
 +
|-
 +
| <code>forge:dyes/brown</code> || <code>forge:dyes</code> || Brown dyes
 +
|-
 +
| <code>forge:dyes/cyan</code> || <code>forge:dyes</code> || Cyan dyes
 +
|-
 +
| <code>forge:dyes/gray</code> || <code>forge:dyes</code> || Gray dyes
 +
|-
 +
| <code>forge:dyes/green</code> || <code>forge:dyes</code> || Green dyes
 +
|-
 +
| <code>forge:dyes/light_blue</code> || <code>forge:dyes</code>  || Light blue dyes
 +
|-
 +
| <code>forge:dyes/light_gray</code> || <code>forge:dyes</code> || Light green dyes
 +
|-
 +
| <code>forge:dyes/lime</code> || <code>forge:dyes</code>  || Lime dyes
 +
|-
 +
| <code>forge:dyes/magenta</code> || <code>forge:dyes</code> || Magenta dyes
 +
|-
 +
| <code>forge:dyes/orange</code> || <code>forge:dyes</code> || Orange dyes
 +
|-
 +
| <code>forge:dyes/pink</code> || <code>forge:dyes</code> || Pink dyes
 +
|-
 +
| <code>forge:dyes/purple</code> || <code>forge:dyes</code> || Purple dyes
 +
|-
 +
| <code>forge:dyes/red</code> || <code>forge:dyes</code> || Red dyes
 +
|-
 +
| <code>forge:dyes/white</code> || <code>forge:dyes</code> || White dyes
 +
|-
 +
| <code>forge:dyes/yellow</code> || <code>forge:dyes</code> || Yellow dyes
 +
|-
 +
| <code>forge:eggs</code> || None || Eggs
 +
|-
 +
| <code>forge:enchanting_fuels</code> || None || Enchantment table fuels
 +
|-
 +
| <code>forge:end_stones</code> || None || End stones
 +
|-
 +
| <code>forge:ender_pearls</code> || None || Ender pearls
 +
|-
 +
| <code>forge:feathers</code> || None || Feathers
 +
|-
 +
| <code>forge:fence_gates</code> || None || Fence gates
 +
|-
 +
| <code>forge:fence_gates/wooden</code> || <code>forge:fence_gates</code> || Wooden fence gates
 +
|-
 +
| <code>forge:fences</code> || None || Fences
 +
|-
 +
| <code>forge:fences/nether_brick</code> || <code>forge:fences</code> || Nether brick fences
 +
|-
 +
| <code>forge:fences/wooden</code> || <code>forge:fences</code> || Wooden fences
 +
|-
 +
| <code>forge:gems</code> || None || Gems
 +
|-
 +
| <code>forge:gems/amethyst</code> || <code>forge:gems</code> || Amethyst gems
 +
|-
 +
| <code>forge:gems/diamond</code> || <code>forge:gems</code> || Diamond gems
 +
|-
 +
| <code>forge:gems/emerald</code> || <code>forge:gems</code> || Emerald gems
 +
|-
 +
| <code>forge:gems/lapis</code> || <code>forge:gems</code> <code>forge:enchanting_fuels</code> || Lapis gems
 +
|-
 +
| <code>forge:gems/prismarine</code> || <code>forge:gems</code> || Prismarine gems
 +
|-
 +
| <code>forge:gems/quartz</code> || <code>forge:gems</code> || Quartz gems
 +
|-
 +
| <code>forge:glass</code> || None || Glass
 +
|-
 +
| <code>forge:glass/black</code> || None || Black glass
 +
|-
 +
| <code>forge:glass/blue</code> || None || Blue glass
 +
|-
 +
| <code>forge:glass/brown</code> || None || Brown glass
 +
|-
 +
| <code>forge:glass/colorless</code> || <code>forge:glass</code> || Normal glass
 +
|-
 +
| <code>forge:glass/cyan</code> || None || Cyan glass
 +
|-
 +
| <code>forge:glass/gray</code> || None || Gray glass
 +
|-
 +
| <code>forge:glass/green</code> || None || Green glass
 +
|-
 +
| <code>forge:glass/light_blue</code> || None || Light blue glass
 +
|-
 +
| <code>forge:glass/light_gray</code> || None || Light gray glass
 +
|-
 +
| <code>forge:glass/lime</code> || None || Lime glass
 +
|-
 +
| <code>forge:glass/magenta</code> || None || Magenta glass
 +
|-
 +
| <code>forge:glass/orange</code> || None || Orange glass
 +
|-
 +
| <code>forge:glass/pink</code> || None || Pink glass
 +
|-
 +
| <code>forge:glass/purple</code> || None || Purple glass
 +
|-
 +
| <code>forge:glass/red</code> || None || Red glass
 +
|-
 +
| <code>forge:glass/silica</code> || None || Sand-based glass with minor ingredient variation
 +
|-
 +
| <code>forge:glass/tinted</code> || <code>forge:glass</code> || Tinted glass
 +
|-
 +
| <code>forge:glass/white</code> || None || White glass
 +
|-
 +
| <code>forge:glass/yellow</code> || None || Yellow glass
 +
|-
 +
| <code>forge:glass_panes</code> || None || Glass panes
 +
|-
 +
| <code>forge:glass_panes/black</code> || None || Black glass panes
 +
|-
 +
| <code>forge:glass_panes/blue</code> || None || Blue glass panes
 +
|-
 +
| <code>forge:glass_panes/brown</code> || None || Brown glass panes
 +
|-
 +
| <code>forge:glass_panes/colorless</code> || <code>forge:glass_panes</code> || Normal glass panes
 +
|-
 +
| <code>forge:glass_panes/cyan</code> || None || Cyan glass panes
 +
|-
 +
| <code>forge:glass_panes/gray</code> || None || Gray glass panes
 +
|-
 +
| <code>forge:glass_panes/green</code> || None || Green glass panes
 +
|-
 +
| <code>forge:glass_panes/light_blue</code> || None || Light blue glass panes
 +
|-
 +
| <code>forge:glass_panes/light_gray</code> || None || Light gray glass panes
 +
|-
 +
| <code>forge:glass_panes/lime</code> || None || Lime glass panes
 +
|-
 +
| <code>forge:glass_panes/magenta</code> || None || Magenta glass panes
 +
|-
 +
| <code>forge:glass_panes/orange</code> || None || Orange glass panes
 +
|-
 +
| <code>forge:glass_panes/pink</code> || None || Pink glass panes
 +
|-
 +
| <code>forge:glass_panes/purple</code> || None || Purple glass panes
 +
|-
 +
| <code>forge:glass_panes/red</code> || None || Red glass panes
 +
|-
 +
| <code>forge:glass_panes/white</code> || None || White glass panes
 +
|-
 +
| <code>forge:glass_panes/yellow</code> || None || Yellow glass panes
 +
|-
 +
| <code>forge:gravel</code> || None || Gravel
 +
|-
 +
| <code>forge:gunpowder</code> || None || Gunpowder
 +
|-
 +
| <code>forge:heads</code> || None || Heads
 +
|-
 +
| <code>forge:ingots</code> || None || Ingots
 +
|-
 +
| <code>forge:ingots/brick</code> || <code>forge:ingots</code> || Brick ingots
 +
|-
 +
| <code>forge:ingots/copper</code> || <code>forge:ingots</code> || Copper ingots
 +
|-
 +
| <code>forge:ingots/gold</code> || <code>forge:ingots</code> || Gold ingots
 +
|-
 +
| <code>forge:ingots/iron</code> || <code>forge:ingots</code> || Iron ingots
 +
|-
 +
| <code>forge:ingots/netherite</code> || <code>forge:ingots</code> || Netherite ingots
 +
|-
 +
| <code>forge:ingots/nether_brick</code> || <code>forge:ingots</code> || Nether brick ingots
 +
|-
 +
| <code>forge:leather</code> || None || Leather
 +
|-
 +
| <code>forge:mushrooms</code> || None || Mushrooms
 +
|-
 +
| <code>forge:nether_stars</code> || None || Nether stars
 +
|-
 +
| <code>forge:netherrack</code> || None || Netherrack
 +
|-
 +
| <code>forge:nuggets</code> || None || Nuggets
 +
|-
 +
| <code>forge:nuggets/gold</code> || <code>forge:nuggets</code> || Gold nuggets
 +
|-
 +
| <code>forge:nuggets/iron</code> || <code>forge:nuggets</code> || Iron nuggets
 +
|-
 +
| <code>forge:obsidian</code> || None || Obsidian
 +
|-
 +
| <code>forge:ore_bearing_ground/deepslate</code> || None || Blocks replaced by deepslate ores during world generation
 +
|-
 +
| <code>forge:ore_bearing_ground/netherrack</code> || None || Blocks replaced by netherrack ores during world generation
 +
|-
 +
| <code>forge:ore_bearing_ground/stone</code> || None || Blocks replaced by stone ores during world generation
 +
|-
 +
| <code>forge:ore_rates/dense</code> || None || Ores which produce numerous resources on average
 +
|-
 +
| <code>forge:ore_rates/singular</code> || None || Ores which produce a single resource on average
 +
|-
 +
| <code>forge:ore_rates/sparse</code> || None || Ores which produce less than a single resource on average
 +
|-
 +
| <code>forge:ores</code> || None || Ores
 +
|-
 +
| <code>forge:ores/coal</code> || <code>forge:ores</code> || Coal ores
 +
|-
 +
| <code>forge:ores/copper</code> || <code>forge:ores</code> || Copper ores
 +
|-
 +
| <code>forge:ores/diamond</code> || <code>forge:ores</code> || Diamond ores
 +
|-
 +
| <code>forge:ores/emerald</code> || <code>forge:ores</code> || Emerald ores
 +
|-
 +
| <code>forge:ores/gold</code> || <code>forge:ores</code> || Gold ores
 +
|-
 +
| <code>forge:ores/lapis</code> || <code>forge:ores</code> || Lapis ores
 +
|-
 +
| <code>forge:ores/netherite_scrap</code> || <code>forge:ores</code> || Netherite scrap ores
 +
|-
 +
| <code>forge:ores/quartz</code> || <code>forge:ores</code> || Quartz ores
 +
|-
 +
| <code>forge:ores/redstone</code> || <code>forge:ores</code> || Redstone ores
 +
|-
 +
| <code>forge:ores_in_ground/deepslate</code> || None || Ores which can be found in deepslate
 +
|-
 +
| <code>forge:ores_in_ground/netherrack</code> || None || Ores which can be found in netherrack
 +
|-
 +
| <code>forge:ores_in_ground/stone</code> || None || Ores which can be found in stone
 +
|-
 +
| <code>forge:raw_materials</code> || None || Raw materials
 +
|-
 +
| <code>forge:raw_materials/copper</code> || <code>forge:raw_materials</code> || Copper raw materials
 +
|-
 +
| <code>forge:raw_materials/gold</code> || <code>forge:raw_materials</code> || Gold raw materials
 +
|-
 +
| <code>forge:raw_materials/iron</code> || <code>forge:raw_materials</code> || Iron raw materials
 +
|-
 +
| <code>forge:rods</code> || None || Rods
 +
|-
 +
| <code>forge:rods/blaze</code> || <code>forge:rods</code> || Blaze rods
 +
|-
 +
| <code>forge:rods/wooden</code> || <code>forge:rods</code> || Wooden rods
 +
|-
 +
| <code>forge:sand</code> || None || Sand
 +
|-
 +
| <code>forge:sand/colorless</code> || <code>forge:sand</code> || Normal sand
 +
|-
 +
| <code>forge:sand/red</code> || <code>forge:sand</code> || Red sand
 +
|-
 +
| <code>forge:sandstone</code> || None || Sandstone
 +
|-
 +
| <code>forge:seeds</code> || None || Seeds
 +
|-
 +
| <code>forge:seeds/beetroot</code> || <code>forge:seeds</code> || Beetroot seeds
 +
|-
 +
| <code>forge:seeds/melon</code> || <code>forge:seeds</code> || Melon seeds
 +
|-
 +
| <code>forge:seeds/pumpkin</code> || <code>forge:seeds</code> || Pumpkin seeds
 +
|-
 +
| <code>forge:seeds/wheat</code> || <code>forge:seeds</code> || Wheat seeds
 +
|-
 +
| <code>forge:shears</code> || None || Shears
 +
|-
 +
| <code>forge:slimeballs</code> || None || Slimeballs
 +
|-
 +
| <code>forge:stained_glass</code> || <code>forge:glass</code> || Stained glass
 +
|-
 +
| <code>forge:stained_glass_panes</code> || <code>forge:glass_panes</code> || Stained glass planes
 +
|-
 +
| <code>forge:stone</code> || None || Stones
 +
|-
 +
| <code>forge:storage_blocks</code> || None || Storage blocks
 +
|-
 +
| <code>forge:storage_blocks/amethyst</code> || <code>forge:storage_blocks</code> || Amethyst blocks
 +
|-
 +
| <code>forge:storage_blocks/coal</code> || <code>forge:storage_blocks</code> || Coal blocks
 +
|-
 +
| <code>forge:storage_blocks/copper</code> || <code>forge:storage_blocks</code> || Copper blocks
 +
|-
 +
| <code>forge:storage_blocks/diamond</code> || <code>forge:storage_blocks</code> || Diamond blocks
 +
|-
 +
| <code>forge:storage_blocks/emerald</code> || <code>forge:storage_blocks</code> || Emerald blocks
 +
|-
 +
| <code>forge:storage_blocks/gold</code> || <code>forge:storage_blocks</code> || Gold blocks
 +
|-
 +
| <code>forge:storage_blocks/iron</code> || <code>forge:storage_blocks</code> || Iron blocks
 +
|-
 +
| <code>forge:storage_blocks/lapis</code> || <code>forge:storage_blocks</code> || Lapis blocks
 +
|-
 +
| <code>forge:storage_blocks/netherite</code> || <code>forge:storage_blocks</code> || Netherite blocks
 +
|-
 +
| <code>forge:storage_blocks/quartz</code> || <code>forge:storage_blocks</code> || Quartz blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_copper</code> || <code>forge:storage_blocks</code> || Raw copper blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_gold</code> || <code>forge:storage_blocks</code> || Raw gold blocks
 +
|-
 +
| <code>forge:storage_blocks/raw_iron</code> || <code>forge:storage_blocks</code> || Raw iron blocks
 +
|-
 +
| <code>forge:storage_blocks/redstone</code> || <code>forge:storage_blocks</code> || Redstone blocks
 +
|-
 +
| <code>forge:string</code> || None || String
 +
|}
 +
 +
==== Fluids ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:milk</code> || None || Milk
 +
|}
 +
 +
==== Entity Types ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:bosses</code> || None || Mobs that are designed as bosses (boss bar appears and difficult to fight)
 +
|}
    
[[Category:Resources and Data]]
 
[[Category:Resources and Data]]
 +
 +
=== Community Tags ===
 +
 +
This is a list of all tags in the Forge namespace that are not part of Forge but agreed on by the modding community as the standard.
 +
 +
==== Blocks ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:relocation_not_supported</code> || None || Immovable blocks [''from modded sources other than Pistons'']
 +
|-
 +
| <code>forge:storage_blocks/honeycombs</code> || <code>forge:storage_blocks</code> || Honeycomb blocks
 +
|-
 +
| <code>forge:storage_blocks/wax</code> || <code>forge:storage_blocks</code> || Wax blocks
 +
|}
 +
 +
==== Items ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:buckets/honey</code> || None || Buckets holding honey fluids
 +
|-
 +
| <code>forge:concrete</code> || None || Concrete
 +
|-
 +
| <code>forge:concrete_powder</code> || None || Concrete Powder
 +
|-
 +
| <code>forge:honeycombs</code> || None || Honeycombs
 +
|-
 +
| <code>forge:honey_bottles</code> || None || Honey bottles
 +
|-
 +
| <code>forge:glazed_terracotta</code> || None || Glazed Terracotta
 +
|-
 +
| <code>forge:pollen</code> || None || Pollen
 +
|-
 +
| <code>forge:shulker_boxes</code> || None || Shulker Boxes
 +
|-
 +
| <code>forge:storage_blocks/honeycombs</code> || <code>forge:storage_blocks</code> || Honeycomb blocks
 +
|-
 +
| <code>forge:storage_blocks/wax</code> || <code>forge:storage_blocks</code> || Wax blocks
 +
|-
 +
| <code>forge:wax</code> || None || Wax
 +
|}
 +
 +
==== Fluids ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:honey</code> || None || Honey
 +
|}
 +
 +
==== Entity Types ====
 +
 +
{| class="wikitable"
 +
|-
 +
! Name !! Super Tag(s) !! Contains
 +
|-
 +
| <code>forge:slimes</code> || None || Slime-like mobs
 +
|}
2

edits