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/02/17 23:07] – added texture section draylar | tutorial:items [2019/08/13 14:48] – Add section showing how to set maximum stack size on custom item i509vcb | ||
---|---|---|---|
Line 3: | Line 3: | ||
==== Introduction ==== | ==== Introduction ==== | ||
- | One of the first things you'll want to do with Fabric is registering | + | Adding a basic item is one of the first steps in modding. You're going to need to create an '' |
+ | ==== Registering an Item ==== | ||
- | You're going to need to create an Item object, | + | First, |
- | + | <code java [enable_line_numbers=" | |
- | ==== Creating an Item ==== | + | public class ExampleMod implements ModInitializer |
- | + | { | |
- | To create your first item, create a new class that overrides | + | // an instance of our new item |
- | + | public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC)); | |
- | public class FabricItem extends Item | + | [...] |
- | { | + | } |
- | public | + | </ |
+ | You' | ||
+ | <code java [enable_line_numbers=" | ||
+ | public class ExampleMod implements ModInitializer | ||
+ | { | ||
+ | // an instance of our new item | ||
+ | public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC)); | ||
+ | |||
+ | @Override | ||
+ | public | ||
{ | { | ||
- | | + | |
- | } | + | } |
- | } | + | } |
+ | </ | ||
+ | Your new item has now been added to Minecraft. Run the `runClient` gradle task to see it in action. | ||
- | Your super() call will require an Item.Settings object. This is used to set properties such as the creative inventory category, durability, and stack count. We're just going to tell our item to go in the Misc section: | + | {{: |
- | super(new Item.Settings().itemGroup(ItemGroup.MISC)); | + | ==== Adding |
- | + | ||
- | ==== Registering an Item ==== | + | |
- | Just like most additions you make in Fabric, you'll need to register | + | 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: |
- | First, we'll create an instance of our item at the top of our main class. It's useful to keep an instance so you can reference and access it later from different classes: | + | Item model: .../ |
+ | Item texture: .../ | ||
- | public class ExampleMod implements ModInitializer | + | Our example texture can be found [[https://i.imgur.com/CqLSMEQ.png|here]]. |
- | { | + | |
- | | + | |
- | public static FabricItem fabricItem = new FabricItem(); | + | |
- | [...] | + | |
- | } | + | |
+ | 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: | ||
- | Second, register your item in your onInitialize method. You can also register | + | [Server-Worker-1/ |
+ | It conveniently tells you exactly where it expects | ||
- | public class ExampleMod implements ModInitializer | + | A basic item model template is: |
- | { | + | <code JavaScript> |
- | // an instance of our new item | + | { |
- | public static FabricItem fabricItem = new FabricItem(); | + | " |
- | @Override | + | " |
- | public void onInitialize() | + | " |
- | | + | |
- | Registry.register(Registry.ITEM, | + | |
- | } | + | |
} | } | ||
+ | } | ||
+ | </ | ||
+ | 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. " | ||
+ | Final textured result: | ||
- | At this point, if you start your Minecraft game, you will see your new item. Pretty easy! | + | {{: |
- | {{: | + | ==== Creating an Item class ==== |
- | ==== Adding | + | 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=" | ||
+ | public class FabricItem extends | ||
+ | { | ||
+ | public FabricItem(Settings settings) | ||
+ | { | ||
+ | super(settings); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | You're probably annoyed with the black & purple missing texture, so we'll fix that now. | + | A practical use-case for a custom |
- | + | <code java [enable_line_numbers=" | |
- | Registering | + | public class FabricItem extends Item |
- | + | { | |
- | Item model: // | + | |
- | + | { | |
- | Item texture: // | + | |
- | + | ||
- | Note that my-mod is your modid. 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 to put your item model file, so this is good for when you can't figure it out yourself. | + | |
- | + | ||
- | As for the actual contents of your item json file, a basic template is as follows: | + | |
- | + | ||
- | { | + | |
- | | + | |
- | | + | |
- | " | + | |
} | } | ||
- | } | + | |
- | + | | |
- | 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/ | + | |
+ | { | ||
+ | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | ||
+ | return new TypedActionResult<> | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | If you set everything | + | Replace the old Item object with an instance of your new item class: |
+ | <code java [enable_line_numbers=" | ||
+ | public class ExampleMod implements ModInitializer | ||
+ | { | ||
+ | // an instance of our new item | ||
+ | public static final FabricItem FABRIC_ITEM = new FabricItem(new Item.Settings().group(ItemGroup.MISC)); | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | If you did everything correctly, | ||
- | {{: | + | ==== 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 Item.Settings().group(ItemGroup.MISC).maxCount(16)); | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | ==== Next Steps ==== | ||
+ | [[tutorial: |
tutorial/items.txt · Last modified: 2024/04/20 08:05 by ryhon