User Tools

Site Tools


tutorial:shield

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
tutorial:shield [2024/09/29 19:20] cringestar_boitutorial:shield [2024/09/29 19:35] (current) – updated with 1.21 guide and past guides cringestar_boi
Line 115: Line 115:
 </file> </file>
  
-Lastly, as a [[tags|conventional tag]], create a ''shield.json'' file in ''resources/data/c/tags/item/tools/shield.json'' and add your shield to it:+Then, as a [[tags|conventional tag]], create a ''shield.json'' file in ''resources/data/c/tags/item/tools/shield.json'' and add your shield to it:
 <code javascript resources/data/c/tags/items/shields.json> <code javascript resources/data/c/tags/items/shields.json>
 +{
 +  "replace": false,
 +  "values": [
 +    "tutorial:netherite_shield"
 +  ]
 +}
 +</code>
 +
 +Lastly, to make it enchantable, create a ''durability.json'' file in ''resources/data/minecraft/tags/item/enchantable/durability.json'' and add your shield to it:
 +<code javascript resources/data/minecraft/tags/item/enchantable/durability.json>
 { {
   "replace": false,   "replace": false,
Line 140: Line 150:
     public static final Item NETHERITE_BANNER_SHIELD = register(new FabricBannerShieldItem(new FabricItemSettings().maxDamage(2500), 10, 13, Items.NETHERITE_INGOT), "netherite_banner_shield");     public static final Item NETHERITE_BANNER_SHIELD = register(new FabricBannerShieldItem(new FabricItemSettings().maxDamage(2500), 10, 13, Items.NETHERITE_INGOT), "netherite_banner_shield");
 </code> </code>
 +If you want to add your shield to a [[itemgroup|item groups]], for example, the "Combat" group, use:  
 + 
 +<yarncode java ExampleMod>  
 +public class ExampleMod implements ModInitializer {  
 +    @Override  
 +    public void onInitialize() {  
 +        ItemGroupEvents.modifyEntriesEvent(ItemGroups.COMBAT).register(entries -> {  
 +            // ...  
 +            entries.add(NETHERITE_BANNER_SHIELD);  
 +        });  
 +    }  
 +}  
 +</yarncode>
  
 Now the item is created, we need to set up its rendering. For these steps, we are going to be working in our client mod initializer, which should already be set up for you in the fabric example mod. Now the item is created, we need to set up its rendering. For these steps, we are going to be working in our client mod initializer, which should already be set up for you in the fabric example mod.
Line 147: Line 170:
 @Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
-    public static final EntityModelLayer NETHERITE_BANNER_SHIELD_MODEL_LAYER = new EntityModelLayer(new Identifier("tutorial", "netherite_banner_shield"),"main");+    public static final EntityModelLayer NETHERITE_BANNER_SHIELD_MODEL_LAYER = new EntityModelLayer(Identifier.of("tutorial", "netherite_banner_shield"),"main");
  
     @Override     @Override
Line 162: Line 185:
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
  
-    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(new Identifier("tutorial", "netherite_shield"),"main");+    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(Identifier.of("tutorial", "netherite_shield"),"main");
  
     @Override     @Override
Line 176: Line 199:
 @Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
-    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(new Identifier("tutorial", "netherite_shield"), "main");+    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(Identifier.of("tutorial", "netherite_shield"), "main");
          
     public static ShieldEntityModel modelNetheriteShield;     public static ShieldEntityModel modelNetheriteShield;
Line 192: Line 215:
 @Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
-    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(new Identifier("tutorial", "netherite_shield"),"main");+    public static final EntityModelLayer NETHERITE_SHIELD_MODEL_LAYER = new EntityModelLayer(Identifier.of("tutorial", "netherite_shield"),"main");
          
     public static ShieldEntityModel modelNetheriteShield;     public static ShieldEntityModel modelNetheriteShield;
Line 213: Line 236:
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
  
- public static final EntityModelLayer netherite_banner_shield_model_layer = new EntityModelLayer(new Identifier("tutorial", "netherite_banner_shield"), "main");+ public static final EntityModelLayer netherite_banner_shield_model_layer = new EntityModelLayer(Identifier.of("tutorial", "netherite_banner_shield"), "main");
  
  public static ShieldEntityModel modelNetheriteShield;  public static ShieldEntityModel modelNetheriteShield;
  
- public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, new Identifier("tutorial", "entity/netherite_banner_shield_base")); + public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, Identifier.of("tutorial", "entity/netherite_banner_shield_base")); 
- public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE_NO_PATTERN = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, new Identifier("tutorial", "entity/netherite_banner_shield_base_nopattern"));+ public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE_NO_PATTERN = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, Identifier.of("tutorial", "entity/netherite_banner_shield_base_nopattern"));
  
  @Override  @Override
Line 236: Line 259:
 @Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
- public static final EntityModelLayer netherite_banner_shield_model_layer = new EntityModelLayer(new Identifier("tutorial", "netherite_banner_shield"),"main");+ public static final EntityModelLayer netherite_banner_shield_model_layer = new EntityModelLayer(Identifier.of("tutorial", "netherite_banner_shield"),"main");
  
  public static ShieldEntityModel modelNetheriteShield;  public static ShieldEntityModel modelNetheriteShield;
  
- public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, new Identifier("tutorial", "entity/netherite_banner_shield_base")); + public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, Identifier.of("tutorial", "entity/netherite_banner_shield_base")); 
- public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE_NO_PATTERN = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, new Identifier("tutorial", "entity/netherite_banner_shield_base_nopattern"));+ public static final SpriteIdentifier NETHERITE_BANNER_SHIELD_BASE_NO_PATTERN = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, Identifier.of("tutorial", "entity/netherite_banner_shield_base_nopattern"));
  
  @Override  @Override
Line 278: Line 301:
 </code> </code>
  
-Next, inside ''resources/assets/tutorial/models/item/'', create a ''netherite_banner_shield.json'' file and put this inside it:+Next, inside ''resources/assets/tutorial/models/item/'', create a ''netherite_banner_shield.json'' file and put this inside it:
 <code javascript resources/assets/tutorial/models/item/etherite_banner_shield.json> <code javascript resources/assets/tutorial/models/item/etherite_banner_shield.json>
 { {
Line 299: Line 321:
   "parent":"fabricshieldlib:item/fabric_banner_shield_blocking",   "parent":"fabricshieldlib:item/fabric_banner_shield_blocking",
   "textures":{   "textures":{
-    "shield":"tutorial:item/netherite_shield"+    "shield":"tutorial:item/netherite_banner_shield"
   }   }
 } }
Line 308: Line 330:
 Then, you will move both of these textures into ''resources/assets/<modid>/textures/entity''. Then, you will move both of these textures into ''resources/assets/<modid>/textures/entity''.
  
-Lastly, create a ''shields.json'' file in ''resources/data/c/tags/items/shields.json'' and add your shield to it:+Next, create a ''shields.json'' file in ''resources/data/c/tags/items/shields.json'' and add your shield to it:
 <code javascript resources/data/c/tags/items/shields.json> <code javascript resources/data/c/tags/items/shields.json>
 +{
 +  "replace": false,
 +  "values": [
 +    "tutorial:netherite_banner_shield"
 +  ]
 +}
 +</code>
 +
 +Finally create a ''durability.json'' file in ''resources/data/minecraft/tags/item/enchantable/durability.json'' and add your shield to it:
 +<code javascript resources/data/minecraft/tags/item/enchantable/durability.json>
 { {
   "replace": false,   "replace": false,
Line 346: Line 378:
 ===== Changes for 1.20.6 ===== ===== Changes for 1.20.6 =====
 If you are working in 1.20.6, first change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\ If you are working in 1.20.6, first change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\
-**gradle.properties** + 
-<code java>+<file properties gradle.properties>
 mod_menu_version=10.0.0-beta.1 mod_menu_version=10.0.0-beta.1
 midnightlib_version=1.5.5-fabric midnightlib_version=1.5.5-fabric
-</code>+</file>
  
 Next, change all instances of ''Identifier.of'' to ''new Identifier''; these are when you are registering your item, creating your ''EntityModelLayer'', and creating your ''SpriteIdentifiers''. Next, change all instances of ''Identifier.of'' to ''new Identifier''; these are when you are registering your item, creating your ''EntityModelLayer'', and creating your ''SpriteIdentifiers''.
Line 360: Line 392:
 ===== Changes for 1.20.4 ===== ===== Changes for 1.20.4 =====
 If you are working in 1.20.4, **follow the changes for 1.20.6 first**, then change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\ If you are working in 1.20.4, **follow the changes for 1.20.6 first**, then change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\
 +
 **gradle.properties** **gradle.properties**
-<code java>+<file properties gradle.properties>
 midnightlib_version=1.5.2-fabric midnightlib_version=1.5.2-fabric
 mod_menu_version=9.0.0-pre.1 mod_menu_version=9.0.0-pre.1
-</code>+</file>
  
 Additionally, **remove the** ''durability.json'' **file** completely. Additionally, **remove the** ''durability.json'' **file** completely.
Line 370: Line 403:
 ===== Changes for 1.19 ===== ===== Changes for 1.19 =====
 If you are working in 1.19, **follow the changes for 1.20.6 and 1.20.4 first**, then change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\ If you are working in 1.19, **follow the changes for 1.20.6 and 1.20.4 first**, then change the FabricShieldLib and FAPI versions accordingly and change your other dependencies to these versions:\\
 +
 **gradle.properties** **gradle.properties**
-<code java>+<file properties gradle.properties>
 midnightlib_version=1.0.0-fabric midnightlib_version=1.0.0-fabric
 mod_menu_version=4.2.0-beta.2 mod_menu_version=4.2.0-beta.2
-</code>+</file>
tutorial/shield.1727637622.txt.gz · Last modified: 2024/09/29 19:20 by cringestar_boi