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 revisionBoth sides next revision
tutorial:items [2019/08/13 14:48] – Add section showing how to set maximum stack size on custom item i509vcbtutorial:items [2020/06/09 23:41] – formatting changes draylar
Line 8: Line 8:
 First, create an instance of Item. We'll store it at the top of our initializer class. The constructor takes in an Item.Settings object, which is used to set item properties such as the inventory category, durability, and stack count.  First, create an instance of Item. We'll store it at the top of our initializer class. The constructor takes in an Item.Settings object, which is used to set item properties such as the inventory category, durability, and stack count. 
 <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().group(ItemGroup.MISC));     public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC));
Line 17: Line 17:
 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. 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().group(ItemGroup.MISC));     public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC));
Line 66: Line 66:
 To add additional behavior to the item you will need to create an Item class. The default constructor requires an Item.Settings object. To add additional behavior to the item you will need to create an Item class. The default constructor requires an Item.Settings object.
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
-public class FabricItem extends Item +public class FabricItem extends Item { 
-+ 
-    public FabricItem(Settings settings) +    public FabricItem(Settings settings) {
-    {+
         super(settings);         super(settings);
     }     }
Line 77: Line 76:
 A practical use-case for a custom item class 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 { 
-+ 
-    public FabricItem(Settings settings) +    public FabricItem(Settings settings) {
-    {+
         super(settings);         super(settings);
     }     }
              
     @Override     @Override
-    public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand) +    public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand) {
-    {+
         playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, 1.0F, 1.0F);         playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, 1.0F, 1.0F);
         return new TypedActionResult<>(ActionResult.SUCCESS, playerEntity.getStackInHand(hand));         return new TypedActionResult<>(ActionResult.SUCCESS, playerEntity.getStackInHand(hand));
Line 95: Line 92:
 Replace the old Item object with an instance of your new item class: 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().group(ItemGroup.MISC));     public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().group(ItemGroup.MISC));
Line 108: Line 105:
 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. 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"]> <code java [enable_line_numbers="true"]>
-public class ExampleMod implements ModInitializer +public class ExampleMod implements ModInitializer { 
-{+
     // an instance of our new item, where the maximum stack size is 16     // 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));     public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().group(ItemGroup.MISC).maxCount(16));
tutorial/items.txt · Last modified: 2024/04/15 01:24 by solidblock