Difference between revisions of "Datageneration/Tags"

From Forge Community Wiki
(added {{Under construction}})
(Update to 1.17)
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<span style="color: rgb(220, 221, 222); --darkreader-inline-color:#d3cfc9;" andale="" mono="" wt",="" "andale="" mono",="" "lucida="" console",="" sans="" typewriter",="" "dejavu="" "bitstream="" vera="" "liberation="" "nimbus="" l",="" monaco,="" "courier="" new",="" courier,="" monospace;="" font-size:="" 13.6px;="" font-style:="" normal;="" font-variant-ligatures:="" font-variant-caps:="" font-weight:="" 400;="" letter-spacing:="" orphans:="" 2;="" text-align:="" start;="" text-indent:="" 0px;="" text-transform:="" none;="" white-space:="" pre-wrap;="" widows:="" word-spacing:="" -webkit-text-stroke-width:="" background-color:="" rgb(47,="" 49,="" 54);="" text-decoration-style:="" initial;="" text-decoration-color:="" display:="" inline="" !important;="" float:="" none;"="" data-darkreader-inline-color="">{{Under construction}}</span>
+
{{Under construction}}
  
 
+
Tags can be generated by extending the <code>ItemTagsProvider</code> for Items or <code>BlockTagsProvider</code> for Blocks. For Custom Objects you would need to expand <code>TagsProvider</code> and give it the Object you want tags for. For the registration of you Tags you need to override the <code>TagsProvider#addTags</code> method.
<style data-mw-deduplicate="TemplateStyles:r2197">.mw-parser-output .mw-tpl-construction{display:flex;align-items:center;width:75%;margin:auto;border-radius:0.2em;background:rgb(27,32,35);box-shadow:0 0 0.2em #999999;overflow:auto}.mw-parser-output .mw-tpl-construction-title{color:#FFFFFF;font-size:120%;font-weight:bold;padding:0.25em 1em}.mw-parser-output .mw-tpl-construction-title-icon{float:left;opacity:0.8;margin:1em}.mw-parser-output .mw-tpl-construction-content{padding:0.5em 1em 0.5em 1em;color:#FFFFFF}</style><style class="darkreader darkreader--sync" media="screen"></style><img alt="" src="/images/d/dc/Under_construction.svg" class="mw-tpl-construction-title-icon" width="60" height="60">This page is under construction.This page is incomplete, and needs more work. Feel free to edit and improve this page!
 
 
 
 
 
 
 
Tags can be generated by extending the <code>ItemTagsProvider</code> for Items or <code>BlockTagsProvider</code> for Blocks. For Custom Objects you would need to expand <code>TagsProvider</code> and give it the Object you want tags for. For the registration of you Tags you need to override the <code>TagsProvider#registerTags</code> method.
 
  
  
 
{{Colored box|title=Information|content=You can still use <code>TagsProvider</code> for Items and Blocks but you would need to implement a lot of stuff that is already done in <code>ItemTagsProvider</code> and <code>BlockTagsProvider</code>}}
 
{{Colored box|title=Information|content=You can still use <code>TagsProvider</code> for Items and Blocks but you would need to implement a lot of stuff that is already done in <code>ItemTagsProvider</code> and <code>BlockTagsProvider</code>}}
 
 
<style data-mw-deduplicate="TemplateStyles:r2068">.mw-parser-output .mw-tpl-colorbox{box-sizing:border-box;margin:0.5em 0.5em 1em 0.5em;border-radius:0.2em;background:rgb(27,32,35);box-shadow:0 0 0.2em #999999}.mw-parser-output .mw-tpl-colorbox-title{background:rgb(0,71,127);color:#FFFFFF;border-radius:0.2em 0.2em 0 0;padding:0.5em 1em 0.5em 1em}.mw-parser-output .mw-tpl-colorbox-title-icon{opacity:0.8}.mw-parser-output .mw-tpl-colorbox-title-corner{float:right;font-size:0.7em}.mw-parser-output .mw-tpl-colorbox-content{padding:0.5em 1em 0.5em 1em;color:#FFFFFF}</style><style class="darkreader darkreader--sync" media="screen"></style><strong style="">Information</strong>You can still use <code>TagsProvider</code> for Items and Blocks but you would need to implement a lot of stuff that is already done in <code>ItemTagsProvider</code> and <code>BlockTagsProvider</code>
 
 
 
  
 
==Items/Blocks==
 
==Items/Blocks==
First you should make a <code>ITag.INamedTag</code>(NamedTag) with <code>ItemTags#makeWrapperTag</code> for Items or <code>BlockTags#makeWrapperTag</code> for blocks, this will take the name of you Tag, see [[Tags#Conventions]]
+
First you should make a <code>Tag$Named</code> with <code>ItemTags#bind</code> for Items or <code>BlockTags#bind</code> for blocks, this will take the name of you Tag, see [[Tags#Conventions]]
 
+
for more info. After you have the <code>Tag$Named</code> you can start with the actual creation of the Tag, you would first call <code>TagsProvider#tag</code> which takes the tag as an argument, this returns a <code>TagsProvider$TagAppender</code>. Now you can with <code>TagsProvider$TagAppender#add</code> add one or more Items/Blocks or other Tags to your own Tags.  
 
 
for more info. After you have the <code>NamedTag</code> you can start with the actual creation of the Tag, you would first call <code>TagsProvider#getOrCreateBuilder</code> which takes the NamedTag as an Argument, this returns a <code>TagsProvider.Builder</code>. Now you can with <code>TagsProvider.Builder#add</code> add one or more Items/Blocks or other Tags to your own Tags.  
 
  
 
Example for an Item Tag:
 
Example for an Item Tag:
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
ITag.INamedTag<Item> copperTag = ItemTags.makeWrapperTag("forge:ore/copper");
+
Tag.Named<Item> copperTag = ItemTags.bind("forge:ore/copper");
getOrCreateBuilder(copperTag).add(Init.COPPER_ORE_ITEM.get());
+
tag(copperTag).add(Init.COPPER_ORE_ITEM.get());
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 32: Line 20:
 
==Custom Type for Tags==
 
==Custom Type for Tags==
 
TBD
 
TBD
 +
 +
 +
[[Category:Data Generation]]

Revision as of 23:04, 31 July 2021

This page is under construction.

This page is incomplete, and needs more work. Feel free to edit and improve this page!

Tags can be generated by extending the ItemTagsProvider for Items or BlockTagsProvider for Blocks. For Custom Objects you would need to expand TagsProvider and give it the Object you want tags for. For the registration of you Tags you need to override the TagsProvider#addTags method.


Information

You can still use TagsProvider for Items and Blocks but you would need to implement a lot of stuff that is already done in ItemTagsProvider and BlockTagsProvider

Items/Blocks

First you should make a Tag$Named with ItemTags#bind for Items or BlockTags#bind for blocks, this will take the name of you Tag, see Tags#Conventions for more info. After you have the Tag$Named you can start with the actual creation of the Tag, you would first call TagsProvider#tag which takes the tag as an argument, this returns a TagsProvider$TagAppender. Now you can with TagsProvider$TagAppender#add add one or more Items/Blocks or other Tags to your own Tags.

Example for an Item Tag:

Tag.Named<Item> copperTag = ItemTags.bind("forge:ore/copper");
tag(copperTag).add(Init.COPPER_ORE_ITEM.get());


Custom Type for Tags

TBD