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 [2020/06/09 23:41] – formatting changes draylar | tutorial:items [2022/12/11 21:24] – Remove item group haykam | ||
---|---|---|---|
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' | + | First, create an instance of <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 Item FABRIC_ITEM | + | public static final class_1792 CUSTOM_ITEM |
[...] | [...] | ||
} | } | ||
- | </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 FabricItemSettings())); | ||
+ | |||
+ | @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 62: | ||
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 70: | ||
" | " | ||
" | " | ||
- | " | + | " |
} | } | ||
} | } | ||
Line 65: | Line 83: | ||
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