User Tools

Site Tools


tutorial:items

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
tutorial:items [2019/05/30 11:49] – [Introduction] Explain the use of placeholders jamieswhiteshirttutorial:items [2019/08/03 22:28] – Added “next steps” fudge
Line 3: Line 3:
 ==== Introduction ==== ==== Introduction ====
  
-One of the first things you'll want to do with Fabric is adding a new item. You're going to need to create an ''Item'' object, register it, and give it a texture. To add additional behavior to the item you will need a custom Item class. In this tutorial the “wikitut” namespace and the “example_item” name are used as placeholderswhich should be replaced by the appropriate values for your mod and item.+Adding a basic item is one of the first steps in modding. You're going to need to create an ''Item'' object, register it, and give it a texture. To add additional behavior to the item you will need a custom Item class. In this tutorial and all future ones, the “tutorial” namespace is used as a placeholder. If you have a separate modidfeel free to use it instead.
 ==== Registering an Item ==== ==== Registering an Item ====
  
Line 11: Line 11:
 { {
     // an instance of our new item     // an instance of our new item
-    public static final Item FABRIC_ITEM = new Item(new Item.Settings().itemGroup(ItemGroup.MISC));+    public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC));
     [...]     [...]
 } }
 </code> </code>
-To register an ''Item'', you can call register on the static Registry object. This takes in a registry type, Identifier, and an instance of what you're registering. This can be called anywhere as long as it occurs during initialization.+You'll use the vanilla registry system for registering new content. The basic syntax is ''Registry#register(Registry Type, Identifier, Content)''. Registry types are stored as static fields in the ''Registry'' object, and the identifier is what labels your content. Content is an instance of whatever you're adding. This can be called anywhere as long as it occurs during initialization.
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
 public class ExampleMod implements ModInitializer public class ExampleMod implements ModInitializer
 { {
     // an instance of our new item     // an instance of our new item
-    public static final Item FABRIC_ITEM = new Item(new Item.Settings().itemGroup(ItemGroup.MISC));+    public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC));
              
     @Override     @Override
     public void onInitialize()     public void onInitialize()
     {     {
-        Registry.register(Registry.ITEM, new Identifier("wikitut", "fabric_item"), FABRIC_ITEM);+        Registry.register(Registry.ITEM, new Identifier("tutorial", "fabric_item"), FABRIC_ITEM);
     }      } 
 } }
Line 37: Line 37:
 Registering a texture for an item requires an item model .json file and a texture image. You're going to need to add these to your resource directory. The direct path of each is: Registering a texture for an item requires an item model .json file and a texture image. You're going to need to add these to your resource directory. The direct path of each is:
  
-    Item model: .../resources/assets/wikitut/models/item/fabric_item.json +    Item model: .../resources/assets/tutorial/models/item/fabric_item.json 
-    Item texture: .../resources/assets/wikitut/textures/item/fabric_item.png+    Item texture: .../resources/assets/tutorial/textures/item/fabric_item.png
  
-Note that wikitut is your modid. Our example texture can be found [[https://i.imgur.com/CqLSMEQ.png|here]].+Our example texture can be found [[https://i.imgur.com/CqLSMEQ.png|here]].
  
 If you registered your item properly in the first step, your game will complain about a missing texture file in a fashion similar to this: If you registered your item properly in the first step, your game will complain about a missing texture file in a fashion similar to this:
  
-    [Server-Worker-1/WARN]: Unable to load model: 'wikitut:fabric_item#inventory' referenced from: wikitut:fabric_item#inventory: java.io.FileNotFoundException: wikitut:models/item/fabric_item.json+    [Server-Worker-1/WARN]: Unable to load model: 'tutorial:fabric_item#inventory' referenced from: tutorial:fabric_item#inventory: java.io.FileNotFoundException: tutorial:models/item/fabric_item.json
 It conveniently tells you exactly where it expects your asset[s] to be found-- when in doubt, check the log. It conveniently tells you exactly where it expects your asset[s] to be found-- when in doubt, check the log.
  
Line 52: Line 52:
   "parent": "item/generated",   "parent": "item/generated",
   "textures": {   "textures": {
-    "layer0": "wikitut:item/fabric_item"+    "layer0": "tutorial:item/fabric_item"
   }   }
 } }
Line 75: Line 75:
 </code> </code>
  
-An example application would be making the item play a sound when you click with it:+A practical use-case for a custom item class would be making the item play a sound when you click with it:
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
 public class FabricItem extends Item public class FabricItem extends Item
Line 93: Line 93:
 </code> </code>
  
-Replace the old Item object with an instance of your new Item:+Replace the old Item object with an instance of your new item class:
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
 public class ExampleMod implements ModInitializer public class ExampleMod implements ModInitializer
 { {
     // an instance of our new item     // an instance of our new item
-    public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().itemGroup(ItemGroup.MISC));+    public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().group(ItemGroup.MISC));
     [...]     [...]
 } }
 </code> </code>
 If you did everything correctly, using the item should now play a sound. If you did everything correctly, using the item should now play a sound.
 +
 +==== Next Steps ====
 +[[tutorial:itemgroup|Add your item to your own ItemGroup]].
tutorial/items.txt · Last modified: 2022/12/18 04:09 by m4x