tutorial:items
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:items [2019/05/20 15:36] – attempt at making language more tutorial-like part 1 draylar | tutorial:items [2020/11/02 07:32] – [Registering an Item] fix formatting leocth2 | ||
---|---|---|---|
Line 3: | Line 3: | ||
==== Introduction ==== | ==== Introduction ==== | ||
- | One of the first things you'll want to do with Fabric is adding a new item. | + | Adding a basic item is one of the first steps in modding. You're going to need to create an '' |
- | + | ||
- | 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. | + | |
- | | + | |
==== Registering an Item ==== | ==== Registering an Item ==== | ||
- | 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 '' |
- | + | <code java [enable_line_numbers=" | |
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | | + | |
- | // an instance of our new item | + | |
- | public static final Item FABRIC_ITEM = new Item(new Item.Settings().itemGroup(ItemGroup.MISC)); | + | |
- | [...] | + | |
- | } | + | |
- | To register | + | // an instance of our new item |
+ | public | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | You'll use the vanilla | ||
+ | <code java [enable_line_numbers=" | ||
+ | public class ExampleMod implements ModInitializer { | ||
- | public class ExampleMod implements ModInitializer | + | |
- | { | + | public static final Item FABRIC_ITEM = new Item(new |
- | | + | |
- | public static final Item FABRIC_ITEM = new Item(new | + | |
| | ||
- | | + | |
- | public void onInitialize() | + | public void onInitialize() { |
- | | + | Registry.register(Registry.ITEM, |
- | Registry.register(Registry.ITEM, | + | } |
- | } | + | } |
- | } | + | </ |
- | + | Your new item has now been added to Minecraft. Run the '' | |
- | + | ||
- | Your new item has now been added to Minecraft. Run the `runClient` gradle task to see it in action. | + | |
{{: | {{: | ||
Line 40: | Line 34: | ||
==== Adding Item textures ==== | ==== Adding Item textures ==== | ||
- | You' | + | Registering a texture for an item requires an item model .json file and a texture image. |
- | Registering a texture for an item requires an item model .json file and a texture | + | Item model: .../ |
+ | Item texture: | ||
- | Item model: .../resources/assets/ | + | Our example texture can be found [[https://i.imgur.com/CqLSMEQ.png|here]]. |
- | Item texture: .../resources/ | + | |
- | Note that wikitut is your modid. Our example | + | If you registered |
- | If you registered your item properly in the first step, your game will also complain about a missing texture file in a fashion similar to this: | + | |
- | + | ||
- | | + | |
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. | ||
- | As for the actual contents of your item json file, a basic template is as follows: | + | A basic item model template is: |
- | + | <code JavaScript> | |
- | { | + | { |
- | " | + | " |
- | " | + | " |
- | " | + | " |
- | } | + | |
} | } | ||
- | | + | } |
- | The parent of your item changes how it's rendered in the hand and comes in useful for things like block items in the inventory. textures/ | + | </ |
+ | The parent of your item changes how it's rendered in the hand and comes in useful for things like block items in the inventory. " | ||
- | If you set everything up correctly, you should be met with a textured | + | Final textured |
{{: | {{: | ||
Line 71: | Line 63: | ||
==== Creating an Item class ==== | ==== Creating an Item class ==== | ||
- | To add additonal | + | To add additional |
+ | <code java [enable_line_numbers=" | ||
+ | public | ||
- | public class FabricItem extends Item | + | |
- | { | + | super(settings); |
- | | + | } |
- | | + | } |
- | super(settings); | + | </ |
- | } | + | |
- | } | + | |
- | We'll make it play a sound on use by overriding | + | A practical use-case for a custom item class would be making the item play a sound when you right click with it: |
+ | <code java [enable_line_numbers=" | ||
+ | public class FabricItem extends | ||
- | public class FabricItem extends Item | + | |
- | { | + | super(settings); |
- | | + | } |
- | | + | |
- | super(settings); | + | |
- | } | + | |
| | ||
- | | + | |
- | public TypedActionResult< | + | public TypedActionResult< |
- | | + | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, |
- | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | + | return TypedActionResult.success(playerEntity.getStackInHand(hand)); |
- | return | + | } |
- | } | + | } |
- | } | + | </ |
- | Finally, in our mod initializer, | + | Replace the old Item object |
- | + | <code java [enable_line_numbers=" | |
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | | + | |
- | // an instance of our new item | + | |
- | public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().itemGroup(ItemGroup.MISC)); | + | |
- | [...] | + | |
- | } | + | |
+ | // an instance of our new item | ||
+ | public static final FabricItem FABRIC_ITEM = new FabricItem(new FabricItemSettings().group(ItemGroup.MISC)); | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
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 '' | ||
+ | <code java [enable_line_numbers=" | ||
+ | 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 FabricItemSettings().group(ItemGroup.MISC).maxCount(16)); | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | ==== Next Steps ==== | ||
+ | [[tutorial: |
tutorial/items.txt · Last modified: 2024/04/20 08:05 by ryhon