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 revision Previous revision
Next revision
Previous revision
tutorial:items [2019/06/17 19:04]
draylar modid refactoring
tutorial:items [2019/08/13 14:48] (current)
i509vcb Add section showing how to set maximum stack size on custom item
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
Line 40: Line 40:
     Item texture: .../​resources/​assets/​tutorial/​textures/​item/​fabric_item.png     Item texture: .../​resources/​assets/​tutorial/​textures/​item/​fabric_item.png
  
-Note that tutorial 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:
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.
 +
 +==== What if I want to change the stack size of my item? ====
 +
 +For this you would use ''​maxCount(int size)''​ inside ItemSettings to specify the max stack size. Note that if your item is damageable you cannot specify a maximum stack size or the game will throw a RuntimeException.
 +<code java [enable_line_numbers="​true"​]>​
 +public class ExampleMod implements ModInitializer
 +{
 +    // an instance of our new item, where the maximum stack size is 16
 +    public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().group(ItemGroup.MISC).maxCount(16));​
 +    [...]
 +}
 +</​code>​
 +==== Next Steps ====
 +[[tutorial:​itemgroup|Add your item to your own ItemGroup]].
tutorial/items.1560798271.txt.gz · Last modified: 2019/06/17 19:04 by draylar