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:11] – link to example texture draylar | tutorial:items [2022/12/11 21:24] – Remove item group haykam | ||
---|---|---|---|
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 ''< |
- | You're going to need to create | + | ==== Registering |
- | ==== Creating | + | First, create |
- | To create your first item, create a new class that overrides Item. We'll name our item class ' | + | < |
+ | public | ||
- | | + | // an instance of our new item |
- | { | + | |
- | public | + | [...] |
- | { | + | } |
- | | + | </ |
+ | |||
+ | You'll use the vanilla registry system for registering new content. The basic syntax is ''< | ||
+ | |||
+ | < | ||
+ | public class ExampleMod implements ModInitializer | ||
+ | |||
+ | // an instance of our new item | ||
+ | public | ||
+ | |||
+ | | ||
+ | public void onInitialize() | ||
+ | | ||
} | } | ||
- | | + | } |
+ | </ | ||
+ | Your new item has now been added to Minecraft. Run the run config ``Minecraft Client`` or '' | ||
- | 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)); | + | For simplicity, you can simplify your code as following: |
- | + | < | |
- | ==== Registering an Item ==== | + | public class ExampleMod implements ModInitializer { |
- | Just like most additions you make in Fabric, you'll need to register your new item to the Registry. You can call the registry with //Registry.register.// The first argument is the registry type, such as Registry.ITEM or Registry.BLOCK. The second argument is the name of your addition-- remember to append it with your namespace! In most cases, the last argument is an instance of what you are registering. | + | // an instance of our new item |
+ | public static final class_1792 CUSTOM_ITEM = | ||
+ | class_2378.method_10230(class_7923.field_41178, new class_2960(" | ||
+ | new class_1792(new FabricItemSettings())); | ||
- | 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: | + | @Override |
+ | public void onInitialize() { | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | public class ExampleMod implements ModInitializer | + | ==== Adding Item textures ==== |
- | { | + | |
- | // an instance of our new item | + | |
- | public static FabricItem fabricItem | + | |
- | [...] | + | |
- | } | + | |
+ | 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: | ||
- | Second, register your item in your onInitialize method. You can also register your item in any other class, as long as it's called during initialization. | + | Item model: .../ |
+ | Item texture: .../ | ||
- | public class ExampleMod implements ModInitializer | + | 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: |
- | public static FabricItem fabricItem = new FabricItem(); | + | |
- | @Override | + | [Server-Worker-1/WARN]: Unable to load model: ' |
- | public void onInitialize() | + | It conveniently tells you exactly where it expects your asset[s] to be found-- when in doubt, check the log. |
- | | + | |
- | Registry.register(Registry.ITEM, | + | 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. " | ||
+ | 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. |
+ | < | ||
+ | public class CustomItem extends class_1792 { | ||
- | You're probably annoyed with the black & purple missing texture, so we'll fix that now. | + | public CustomItem(class_1793 settings) { |
+ | super(settings); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | Registering a texture | + | A practical use-case |
+ | < | ||
+ | public class CustomItem extends class_1792 { | ||
- | | + | |
- | | + | super(settings); |
+ | | ||
- | Note that my-mod is your modid. Our example texture can be found [[https://i.imgur.com/CqLSMEQ.png|here]]. | + | @Override |
+ | public class_1271< | ||
+ | playerEntity.method_5783(class_3417.field_14983, | ||
+ | return class_1271.method_22427(playerEntity.method_5998(hand)); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | If you registered | + | Replace the old <yarn class_1792> |
+ | < | ||
+ | public class ExampleMod implements ModInitializer { | ||
- | | + | // an instance of our new item |
- | + | | |
- | 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. | + | |
+ | } | ||
+ | </ | ||
+ | If you did everything correctly, using the item should now play a sound. | ||
- | As for the actual contents | + | ==== What if I want to change |
- | { | + | For this you would use ''< |
- | " | + | < |
- | " | + | public class ExampleMod implements ModInitializer { |
- | " | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | 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/ | + | |
- | If you set everything up correctly, you should be met with a textured | + | // An instance of our new item, where the maximum stack size is 16 |
+ | public static final CustomItem CUSTOM_ITEM = new CustomItem(new FabricItemSettings().method_7889(16)); | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
- | {{: | + | ==== 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 ==== | ||
+ | [[tutorial: |
tutorial/items.txt · Last modified: 2024/04/20 08:05 by ryhon