tutorial:items
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
tutorial:items [2020/06/09 23:41] – formatting changes draylar | tutorial:items [2024/04/15 01:24] – solidblock | ||
---|---|---|---|
Line 3: | Line 3: | ||
==== Introduction ==== | ==== Introduction ==== | ||
- | Adding a basic item is one of the first steps in modding. 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 object, which is used to set item properties such as the inventory category, | + | First, create an instance of ''< |
- | <code java [enable_line_numbers=" | + | |
+ | <yarncode | ||
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 | + | |
+ | | ||
+ | // for versions since 1.20.5 | ||
+ | public static final class_1792 CUSTOM_ITEM = new class_1792(new class_1792.class_1793()); | ||
[...] | [...] | ||
} | } | ||
- | </code> | + | </yarncode> |
- | You'll use the vanilla registry system for registering new content. The basic syntax is '' | + | |
- | <code java [enable_line_numbers=" | + | You'll use the vanilla registry system for registering new content. The basic syntax is '' |
+ | |||
+ | <yarncode | ||
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 | + | public static final class_1792 CUSTOM_ITEM |
- | + | ||
@Override | @Override | ||
- | public void onInitialize() | + | public void onInitialize() { |
- | | + | |
- | | + | } |
- | } | + | |
} | } | ||
- | </code> | + | </yarncode> |
- | Your new item has now been added to Minecraft. Run the `runClient` gradle | + | Your new item has now been added to Minecraft. Run the run config '' |
{{: | {{: | ||
+ | |||
+ | For simplicity, you can simplify your code as following: | ||
+ | < | ||
+ | public class ExampleMod implements ModInitializer { | ||
+ | |||
+ | // an instance of our new item | ||
+ | public static final class_1792 CUSTOM_ITEM = | ||
+ | class_2378.method_10230(class_7923.field_41178, | ||
+ | new class_1792(new class_1792.class_1793())); | ||
+ | |||
+ | @Override | ||
+ | public void onInitialize() { | ||
+ | } | ||
+ | } | ||
+ | </ | ||
==== Adding Item textures ==== | ==== Adding Item textures ==== | ||
- | 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: .../ |
Our example texture can be found [[https:// | Our example texture can be found [[https:// | ||
Line 44: | Line 65: | ||
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 73: | ||
" | " | ||
" | " | ||
- | " | + | " |
} | } | ||
} | } | ||
Line 65: | Line 86: | ||
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=" | + | <yarncode |
- | public class FabricItem | + | public class CustomItem |
- | public | + | public |
super(settings); | super(settings); | ||
} | } | ||
} | } | ||
- | </code> | + | </yarncode> |
- | 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 use it: |
- | <code java [enable_line_numbers=" | + | <yarncode |
- | public class FabricItem | + | public class CustomItem |
- | public | + | public |
super(settings); | super(settings); | ||
} | } | ||
- | | + | |
@Override | @Override | ||
- | public | + | public |
- | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, 1.0F, 1.0F); | + | playerEntity.method_5783(class_3417.field_14983, 1.0F, 1.0F); |
- | return | + | return |
} | } | ||
} | } | ||
- | </code> | + | </yarncode> |
- | Replace the old Item object with an instance of your new item class: | + | Replace the old <yarn class_1792> |
- | <code java [enable_line_numbers=" | + | <yarncode |
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 | + | public static final CustomItem CUSTOM_ITEM |
[...] | [...] | ||
} | } | ||
- | </code> | + | </yarncode> |
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? ==== | ==== What if I want to change the stack size of my item? ==== | ||
- | For this you would use '' | + | For this you would use '' |
- | <code java [enable_line_numbers=" | + | <yarncode |
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 | + | public static final CustomItem CUSTOM_ITEM |
[...] | [...] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Make your item become fuel, or compostable ==== | ||
+ | |||
+ | If you want to make it a fuel so that it can be used in a furnace, you can use '' | ||
+ | <code java> | ||
+ | public class ExampleMod implements ModInitializer { | ||
+ | [...] | ||
+ | | ||
+ | @Override | ||
+ | public void onInitialize() { | ||
+ | [...] | ||
+ | FuelRegistry.INSTANCE.add(CUSTOM_ITEM, | ||
+ | } | ||
} | } | ||
</ | </ | ||
+ | |||
+ | Similarly, you can use a '' | ||
==== Next Steps ==== | ==== Next Steps ==== | ||
[[tutorial: | [[tutorial: |
tutorial/items.txt · Last modified: 2024/04/20 08:05 by ryhon