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/30 11:49] – [Introduction] Explain the use of placeholders jamieswhiteshirt | tutorial:items [2020/12/20 11:42] – Fixed some mistakes and changed some things ytg1234 | ||
---|---|---|---|
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 '' | + | Adding a basic item is one of the first steps in modding. You're going to need to create an '' |
==== 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 | + | 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=" | <code java [enable_line_numbers=" | ||
- | 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 | + | public static final Item FABRIC_ITEM = new Item(new |
[...] | [...] | ||
} | } | ||
</ | </ | ||
- | To register an '' | + | You'll use the vanilla registry system for registering new content. The basic syntax is '' |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | 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 | + | public static final Item FABRIC_ITEM = new Item(new |
| | ||
@Override | @Override | ||
- | 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 `runClient` gradle | + | Your new item has now been added to Minecraft. Run the '' |
{{: | {{: | ||
Line 37: | Line 36: | ||
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: .../ | + | Item model: .../ |
- | Item texture: .../ | + | Item texture: .../ |
- | Note that wikitut is your modid. | + | Our example texture can be found [[https:// |
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/ | + | [Server-Worker-1/ |
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 51: | ||
" | " | ||
" | " | ||
- | " | + | " |
} | } | ||
} | } | ||
Line 66: | Line 65: | ||
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=" | <code java [enable_line_numbers=" | ||
- | public class FabricItem extends Item | + | public class FabricItem extends Item { |
- | { | + | |
- | public FabricItem(Settings settings) | + | public FabricItem(Settings settings) { |
- | | + | |
super(settings); | super(settings); | ||
} | } | ||
Line 75: | Line 73: | ||
</ | </ | ||
- | An example application | + | A practical use-case for a custom item class would be making the item play a sound when you use it: |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | 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< | + | public TypedActionResult< |
- | | + | |
playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | ||
- | return | + | return TypedActionResult.success(playerEntity.getStackInHand(hand)); |
} | } | ||
} | } | ||
</ | </ | ||
- | 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=" | <code java [enable_line_numbers=" | ||
- | 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 | + | public static final FabricItem FABRIC_ITEM = new FabricItem(new |
[...] | [...] | ||
} | } | ||
</ | </ | ||
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/15 01:24 by solidblock