diff --git a/.vitepress/sidebars/develop.ts b/.vitepress/sidebars/develop.ts index a43128da1..076dc93f6 100644 --- a/.vitepress/sidebars/develop.ts +++ b/.vitepress/sidebars/develop.ts @@ -1,4 +1,4 @@ -import { Fabric } from "../types"; +import {Fabric} from "../types"; export default [ { @@ -92,6 +92,10 @@ export default [ text: "develop.items.potions", link: "/develop/items/potions", }, + { + text: "develop.items.spawn-egg", + link: "/develop/items/spawn-egg", + } ], }, { @@ -240,6 +244,10 @@ export default [ text: "develop.dataGeneration.blockModels", link: "/develop/data-generation/block-models", }, + { + text: "develop.dataGeneration.itemModels", + link: "/develop/data-generation/item-models", + }, ], }, { diff --git a/develop/data-generation/block-models.md b/develop/data-generation/block-models.md index 1c614f097..74ac48329 100644 --- a/develop/data-generation/block-models.md +++ b/develop/data-generation/block-models.md @@ -180,12 +180,12 @@ The `BlockStateSupplier` contains all blockstate variants, their rotation, and o First, we create a new `VariantsBlockStateSupplier` using `VariantsBlockStateSupplier.create()`. Then we create a new `BlockStateVariantMap` that contains parameters for all variants of the block, in this case `FACING` and `SINGLE`, and pass it into the `VariantsBlockStateSupplier`. -Specify which model and which transformations (uvlock, rotation) is used when using `.register()`. +Specify which model and which transformations (uvlock, rotation) are used when using `.register()`. For example: -- On the first line, the block is facing north, and is single => we use the model with no rotation. -- On the fourth line, the block is facing west, and is single => we rotate the model on the Y axis by 270°. -- On the sixth line, the block is facing east, but isn't single => it looks like a normal oak log => we don't have to rotate it. +- On the first line, the block is facing north, and is single ⇒ we use the model with no rotation. +- On the fourth line, the block is facing west, and is single ⇒ we rotate the model on the Y axis by 270°. +- On the sixth line, the block is facing east, but it isn't single ⇒ it looks like a normal oak log ⇒ we don't have to rotate it. ### Custom Datagen Method {#custom-datagen-method} diff --git a/develop/data-generation/item-models.md b/develop/data-generation/item-models.md new file mode 100644 index 000000000..619c0daa5 --- /dev/null +++ b/develop/data-generation/item-models.md @@ -0,0 +1,252 @@ +--- +title: Item Model Generation +description: A guide to generating item models via datagen. +authors: + - Fellteros + - VatinMc + - skycatminepokie +--- + +:::info PREREQUISITES +Make sure you've completed the [datagen setup](./setup) and created your [first item](../items/first-item). +::: + +## Setup {#setup} + +First, we will need to create our ModelProvider. Create a class that `extends FabricModelProvider`. Implement both abstract methods: `generateBlockStateModels` and `generateItemModels`. +Lastly, create a constructor matching super. + +@[code lang=java transcludeWith=:::datagen-model:provider](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Register this class in your `DataGeneratorEntrypoint` within the `onInitializeDataGenerator` method. + +## Generated Files {#generated-files} + +Generating item models results in creating two separate JSON files: + +1. **Item model**. File responsible for defining the textures, rotation and overall looks of the item. It's generated in the `generated/assets/modid/models/item` directory. +2. **Item model definition**. File defining which model should be used depending on various criteria such as components, interactions and more. It's generated in the `generated/assets/modid/items` directory. + +## Item Models {#item-models} + +This section covers the most used and basic methods used for generating item models. + +```java +@Override +public void generateItemModels(ItemModelGenerator itemModelGenerator) { +} +``` + +For item models, we will be using the `generateItemModels` method. Its parameter `ItemModelGenerator itemModelGenerator` is responsible for generating the item models and also contains methods for doing so. + +### Simple Item Models {#simple-item-models} + +@[code lang=java transcludeWith=:::datagen-model:generated](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Simple item models are the default ones, which most Minecraft items use. Their parent model is the `GENERATED` Model. They use their 2D texture, which is then rendered as 3D in-game. An example would be boats, candles or dyes. + +_**assets/modid/models/item/ruby.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/ruby.json) + +Since we're using only one variant no matter the circumstances, we reference only the `ruby.json` item model file. + +_**assets/modid/items/ruby.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby.json) + +:::tip +Search for `generated.json` file to see the exact rotation, scaling and positioning of the model. +::: + +Ruby + +### Handheld Item Models {#handheld-item-models} + +@[code lang=java transcludeWith=:::datagen-model:handheld](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +This type of item model is generally used by tools and weapons (axes, swords, trident). They are rotated and positioned a little differently from the simple models to look more natural in hand. Other than that, they look exactly the same as the simple ones. + +_**assets/modid/models/item/guidite_axe.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/guidite_axe.json) + +Guidite Axe + +### Spawn Eggs {#spawn-eggs} + +@[code lang=java transcludeWith=:::datagen-model:spawn-egg](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Since spawn eggs use a template model, we can use the `registerSpawnEgg()` method of the `ItemModelGenerator` instance, to assign the colors and link the model to the `SpawnEggItem`. After running datagen, it should look like this: + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/custom_spawn_egg.json) + +::: info +Minecraft uses signed 32-bit Integers to store ARGB color values. Java is able to convert RGB hexadecimal color values like shown above. + +If you don't want to worry about the conversion, you can use tools like [Spawn Egg Color Picker](https://vatinmc.github.io/spawn-egg-color-picker/). +::: + +### Dyeable Items {#dyeable-items} + +@[code lang=java transcludeWith=:::datagen-model:dyeable](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +The `ItemModelGenerator` also provides a method for generating models for dyeable items. Here you have to pass in a default decimal color value the item uses when it isn't dyed. (default value for leather is `-6265536`) +It generates a simple item model JSON and an item model definition file specifying the tint color. + +![Dyeing leather gloves](/assets/develop/data-generation/item-model/leather_gloves_dyeing.png) + +_**assets/modid/items/leather_gloves.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/leather_gloves.json) + +:::warning IMPORTANT +You have to add your item to the `ItemTags.DYEABLE` Tag so you can dye it in your inventory! +::: + +Leather Gloves + +### Conditional Item Models {#conditional-item-models} + +@[code lang=java transcludeWith=:::datagen-model:condition](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Next, we'll look into generating item models that change their visual based when a specific boolean is true; in this case, the second parameter `BooleanProperty`. Here are some of them: + +| Property | Description | +|------------------------|--------------------------------------------------------------------------------| +| `KeybindDownProperty` | True when a specified key is pressed. | +| `UsingItemProperty` | True when the item is being used (e.g. when blocking with a shield). | +| `BrokenProperty` | True when the item has 0 durability (e.g. elytra changes texture when broken). | +| `HasComponentProperty` | True when the item has a certain component. | + +Of course, this isn't all of them. There is plenty more that will almost certainly cover your needs. + +The third and fourth parameters are the models used when the property is true or false respectively. + +Flashlight turning on and off + +_**assets/modid/items/flashlight.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/flashlight.json) + +Flashlight + +:::warning IMPORTANT +When obtaining `Identifier`s for the `ItemModels.basic()`, always use `itemModelGenerator.upload()` or any other method using it, otherwise your item model files won't generate, only item model definitions! +::: + +### Composite Item Models {#composite-item-models} + +@[code lang=java transcludeWith=:::datagen-model:composite](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +These item models are composed of one or more textures layered on top of each other. There aren't any vanilla methods for this, you have to use `ItemModelGenerator`'s `output` field and then `accept()` for it to work. +Here's the item model definition JSON: + +_**assets/modid/items/enhanced_hoe.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/enhanced_hoe.json) + +Enhanced Hoe + +### Select Item Models {#select-item-models} + +@[code lang=java transcludeWith=:::datagen-model:select](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Renders an item model based on the value of a specific property. These are some of them: + +| Property | Description | +|-----------------------------|----------------------------------------------------------------------------------------------------| +| `ContextDimensionProperty` | Renders an item model based on the dimension in which the player is (Overworld, Nether, End). | +| `MainHandProperty` | Renders an item model when the item is equipped in player's main hand. | +| `DisplayContextProperty` | Renders an item model based on the position in which the item is (`ground`, `fixed`, `head`, ...). | +| `ContextEntityTypeProperty` | Renders an item model based on the entity holding the item. | + +In this example, the item changes texture when traveling between dimensions; green in Overworld, red in the Nether and black in the End. + +![Dimensional crystal changing texture based on dimension](/assets/develop/data-generation/item-model/crystal.png) + +_**assets/modid/items/dimensional_crystal.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/dimensional_crystal.json) + +Dimensional Crystal + +### Range Dispatch Item Models {#range-dispatch-item-models} + +@[code lang=java transcludeWith=:::datagen-model:range-dispatch](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Renders an item model based on the value of a numeric property. Take in an item and list of variants paired with a value. There are quite a few, here are some examples: + +| Property | Description | +|-----------------------|------------------------------------------------------------------------------| +| `CooldownProperty` | Renders an item model based on item's remaining cooldown. | +| `CountPropery` | Renders an item model based on stack size. | +| `UseDurationProperty` | Renders an item model based on how long the item is being used. | +| `DamageProperty` | Renders an item model based on attack damage (`minecraft:damage` component). | + +This example uses the `CountProperty`, changing the texture from one knife up to three based on the stack size. + +:::tip +Some other examples of range dispatch item models are the compass, bow or brush. +::: + +![Throwing knives changing texture based on count](/assets/develop/data-generation/item-model/throwing_knives_example.png) + +_**assets/modid/items/throwing_knives.json**_ + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/throwing_knives.json) + +Throwing Knives + +## Custom Item Models {#custom-item-models} + +:::info +All fields and methods for this part of the tutorial are declared in a static inner class called `CustomItemModelGenerator`. +::: + +Generating item models isn't limited to only vanilla methods; you can, of course, create your own. In this section, we will be creating a custom model for a balloon item. + +### Parent Item Model {#parent-item-model} + +First, let's create a parent item model that defines how does the item look in-game. We want the balloon to look the same as simple item models, but scaled up. That's pretty straight-forward; we set the parent to be the `item/generated` model, and then override the scaling. +Put this JSON file in the `resources/assets/mod_id/models/item` folder. + +**_models/item/scaled2x.json_** + +@[code](@/reference/latest/src/main/resources/assets/fabric-docs-reference/models/item/scaled2x.json) + +This will make the model twice as big as the normal ones. Feel free to experiment with the values until you get the desired output. + +Balloon + +### Custom Model {#custom-model} + +Next, we need to create an instance of the `Model` class. It will represent the actual [parent item model](#parent-item-model) inside our mod. + +@[code lang=java transcludeWith=:::datagen-model-custom:item-model](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +The `item()` method creates a new `Model` instance, pointing to the `scaled2x.json` file inside the `resources/assets/mod_id/models/item` folder. + +TextureKey `LAYER0` represents the `#layer0` texture variable, which will then be replaced by an identifier pointing to a texture. + +### Custom Datagen Method {#custom-datagen-method} + +The last step is creating a custom method, which will be called in the `generateItemModels()` method and will be responsible for generating our item models. + +@[code lang=java transcludeWith=:::datagen-model-custom:item-datagen-method](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +Let's go over what the parameters are for: + +1. `Item item`: The item, for which we are generating the models (in this case `ModItems.BALLOON`). +2. `ItemModelGenerator generator`: the same that get passed into the `generateItemModels()` method. Used for its fields. + +First, we get the `Identifier` of the item with `BALLOON.upload()`, passing in a `TextureMap` and the `modelCollector` from our `generator` parameter. +Then, we'll use another of its fields, the `output` (which essentially works as a consumer), and use the `accept()` method, so that the models are actually generated. + +And that's all! Now, we only need to call our method in the `generateItemModels()` method. + +@[code lang=java transcludeWith=:::datagen-model-custom:balloon](@/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java) + +## Sources and Links {#sources-and-links} + +You can view the example tests in [Fabric API](https://github.com/FabricMC/fabric/blob/1.21.4/fabric-data-generation-api-v1/src/), this documentation's [Reference Mod](https://github.com/FabricMC/fabric-docs/tree/main/reference) and the [Minecraft Wiki](https://minecraft.wiki/) for more information. diff --git a/develop/data-generation/setup.md b/develop/data-generation/setup.md index b051dc40b..eadc15bac 100644 --- a/develop/data-generation/setup.md +++ b/develop/data-generation/setup.md @@ -84,3 +84,4 @@ Now that datagen is set up, we need to add **providers**. These are what generat - [Recipes](./recipes) - [Tags](./tags) - [Translations](./translations) +- [Item Models](./item-models.md) diff --git a/develop/items/spawn-egg.md b/develop/items/spawn-egg.md new file mode 100644 index 000000000..131f4accc --- /dev/null +++ b/develop/items/spawn-egg.md @@ -0,0 +1,104 @@ +--- +title: Spawn Egg Item +description: Learn how to register a spawn egg item, and configure its colors. +authors: + - Fellteros + - VatinMc + - skycatminepokie + +--- + +::: info PREREQUISITES +Visit [Creating Your First Item](./first-item) to understand the references made here. If this is your first item, you must complete the steps listed there. +::: + +Spawn eggs are items that are used to spawn the corresponding mob. When creating spawn eggs, the following questions need to be answered: + +- Which `MobEntity` should be spawned? +- What colors should the shell and dots be? +- What should your spawn egg item be named? + +## Simplify Registering Spawn Egg Items {#simplify-registering-spawn-egg-items} + +When registering spawn egg items, an `EntityType` is needed. + +Create a method that accepts a `String`, an `EntityType` and `Item.Settings` to create the `SpawnEggItem` instance. The method should be located in the [item class](./first-item#preparing-your-items-class). + +::: info +Check out the [item registration method](./first-item#preparing-your-items-class) for more information. +::: + +@[code transcludeWith=:::spawn_egg_register_method](@/reference/latest/src/main/java/com/example/docs/item/ModItems.java) + +## Registering Your Spawn Egg Item {#registering-your-spawn-egg-item} + +The `registerSpawnEgg(...)` method can now be used, to register custom spawn eggs. + +Change the name and `EntityType` as desired. + +@[code transcludeWith=:::spawn_egg_register_item](@/reference/latest/src/main/java/com/example/docs/item/ModItems.java) + +![spawn egg item without texture](/assets/develop/items/spawn_egg_1.png) + +The spawn egg item is now registered and can spawn frog entities. Texture, name and item group are still missing. + +## Creating The Item Model Description {#creating-the-item-model-description} + +Since spawn eggs use a template model, there is no need to create an item model. + +Minecraft uses the item model description to apply item models to items. In version 1.21.4, the item model description is also used to apply colors to spawn eggs. + +::: info +The values represent the colors of shell and dots. To get the correct color value, a hexadecimal ARGB value (e.g., 0xffd07444) is converted into a signed 32-bit integer. + +If you don't want to worry about the conversion, you can use tools like [Spawn Egg Color Picker](https://vatinmc.github.io/spawn-egg-color-picker/). +::: + +Create the item description JSON in the `assets/mod-id/items` directory, with the same file name as the id of the item: `custom_spawn_egg.json`. + +@[code](@/reference/latest/src/main/generated/assets/fabric-docs-reference/items/custom_spawn_egg.json) + +![spawn egg item with model description](/assets/develop/items/spawn_egg_2.png) + +The spawn egg item is now textured. Name and item group are still missing. + +## Naming The Spawn Egg {#naming-the-spawn-egg} + +To name the spawn egg, the translation key `item.mod_id.custom_spawn_egg` must be assigned a value. This process is similar to [Naming The Item](./first-item#naming-the-item). + +Create or edit JSON file at: `src/main/resources/assets/mod-id/lang/en_us.json` and put in the translation key, and its value: + +```json +{ + "item.fabric-docs-reference.custom_spawn_egg": "Custom Spawn Egg" +} +``` + +## Adding To An Item Group {#adding-to-an-item-group} + +Check out [Adding The Item To An Item Group](./first-item#adding-the-item-to-an-item-group) for more detailed information. + +The spawn egg is added to the spawn egg `ItemGroup`, in the `initialize()` method of the [item class](./first-item#preparing-your-items-class). + +@[code transcludeWith=:::spawn_egg_item_group](@/reference/latest/src/main/java/com/example/docs/item/ModItems.java) + +![spawn egg item with name and item group](/assets/develop/items/spawn_egg_3.png) + +## Troubleshooting {#troubleshooting} + +::: info +If this is your first item, you need some parts of [Creating Your First Item](./first-item) to make this work. +::: + +### Not Registered {#not-registered} + +If you aren't able to access your spawn egg ingame, you most likely didn't statically initialize the item class. Check out [Registering Your First Item](first-item#registering-an-item) for more information. + +### Texture Missing {#texture-missing} + +- Minecraft uses Identifiers to handle information like textures of items. It is necessary to stay consistent with naming items, folders, and so on. When using the mod-id it must be the same as specified in your `fabric.mod.json` file. +- JSON files are very sensitive, e.g., a misplaced comma will corrupt them. Check the [Item Model Description](#creating-the-item-model-description) for errors. This concept for spawn eggs only works for version 1.21.4. + +::: tip +If you plan on adding multiple spawn eggs, consider using [data generation](../data-generation/spawn-egg-model) to avoid making mistakes. +::: diff --git a/public/assets/develop/data-generation/item-model/balloon.png b/public/assets/develop/data-generation/item-model/balloon.png new file mode 100644 index 000000000..bbd689038 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/balloon.png differ diff --git a/public/assets/develop/data-generation/item-model/balloon_big.png b/public/assets/develop/data-generation/item-model/balloon_big.png new file mode 100644 index 000000000..39e50db86 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/balloon_big.png differ diff --git a/public/assets/develop/data-generation/item-model/crystal.png b/public/assets/develop/data-generation/item-model/crystal.png new file mode 100644 index 000000000..85a211bd2 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/crystal.png differ diff --git a/public/assets/develop/data-generation/item-model/dimensional_crystal_end.png b/public/assets/develop/data-generation/item-model/dimensional_crystal_end.png new file mode 100644 index 000000000..1a5c247b2 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/dimensional_crystal_end.png differ diff --git a/public/assets/develop/data-generation/item-model/dimensional_crystal_nether.png b/public/assets/develop/data-generation/item-model/dimensional_crystal_nether.png new file mode 100644 index 000000000..33ec026cc Binary files /dev/null and b/public/assets/develop/data-generation/item-model/dimensional_crystal_nether.png differ diff --git a/public/assets/develop/data-generation/item-model/dimensional_crystal_overworld.png b/public/assets/develop/data-generation/item-model/dimensional_crystal_overworld.png new file mode 100644 index 000000000..4b1eff193 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/dimensional_crystal_overworld.png differ diff --git a/public/assets/develop/data-generation/item-model/dimensional_crystal_textures.zip b/public/assets/develop/data-generation/item-model/dimensional_crystal_textures.zip new file mode 100644 index 000000000..f7faefcc9 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/dimensional_crystal_textures.zip differ diff --git a/public/assets/develop/data-generation/item-model/dimensional_crystal_textures_big.png b/public/assets/develop/data-generation/item-model/dimensional_crystal_textures_big.png new file mode 100644 index 000000000..cb525e2b6 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/dimensional_crystal_textures_big.png differ diff --git a/public/assets/develop/data-generation/item-model/enhanced_hoe.png b/public/assets/develop/data-generation/item-model/enhanced_hoe.png new file mode 100644 index 000000000..14ca3e11d Binary files /dev/null and b/public/assets/develop/data-generation/item-model/enhanced_hoe.png differ diff --git a/public/assets/develop/data-generation/item-model/enhanced_hoe_plus.png b/public/assets/develop/data-generation/item-model/enhanced_hoe_plus.png new file mode 100644 index 000000000..4e554f456 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/enhanced_hoe_plus.png differ diff --git a/public/assets/develop/data-generation/item-model/enhanced_hoe_textures.zip b/public/assets/develop/data-generation/item-model/enhanced_hoe_textures.zip new file mode 100644 index 000000000..0bafdfbe4 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/enhanced_hoe_textures.zip differ diff --git a/public/assets/develop/data-generation/item-model/enhanced_hoe_textures_big.png b/public/assets/develop/data-generation/item-model/enhanced_hoe_textures_big.png new file mode 100644 index 000000000..bad5ae6b8 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/enhanced_hoe_textures_big.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight.png b/public/assets/develop/data-generation/item-model/flashlight.png new file mode 100644 index 000000000..4e23f6dd4 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_big.png b/public/assets/develop/data-generation/item-model/flashlight_big.png new file mode 100644 index 000000000..376713523 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_big.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_lit.png b/public/assets/develop/data-generation/item-model/flashlight_lit.png new file mode 100644 index 000000000..e51a0de56 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_lit.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_lit_big.png b/public/assets/develop/data-generation/item-model/flashlight_lit_big.png new file mode 100644 index 000000000..7bb67f8b8 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_lit_big.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_textures.zip b/public/assets/develop/data-generation/item-model/flashlight_textures.zip new file mode 100644 index 000000000..7c927030e Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_textures.zip differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_textures_big.png b/public/assets/develop/data-generation/item-model/flashlight_textures_big.png new file mode 100644 index 000000000..66b7bacc9 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_textures_big.png differ diff --git a/public/assets/develop/data-generation/item-model/flashlight_turning_on.webm b/public/assets/develop/data-generation/item-model/flashlight_turning_on.webm new file mode 100644 index 000000000..b4f9bf3ba Binary files /dev/null and b/public/assets/develop/data-generation/item-model/flashlight_turning_on.webm differ diff --git a/public/assets/develop/data-generation/item-model/guidite_axe.png b/public/assets/develop/data-generation/item-model/guidite_axe.png new file mode 100644 index 000000000..d7d329f01 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/guidite_axe.png differ diff --git a/public/assets/develop/data-generation/item-model/guidite_axe_big.png b/public/assets/develop/data-generation/item-model/guidite_axe_big.png new file mode 100644 index 000000000..c45482d0a Binary files /dev/null and b/public/assets/develop/data-generation/item-model/guidite_axe_big.png differ diff --git a/public/assets/develop/data-generation/item-model/leather_gloves.png b/public/assets/develop/data-generation/item-model/leather_gloves.png new file mode 100644 index 000000000..c4b651f3a Binary files /dev/null and b/public/assets/develop/data-generation/item-model/leather_gloves.png differ diff --git a/public/assets/develop/data-generation/item-model/leather_gloves_big.png b/public/assets/develop/data-generation/item-model/leather_gloves_big.png new file mode 100644 index 000000000..f4720101e Binary files /dev/null and b/public/assets/develop/data-generation/item-model/leather_gloves_big.png differ diff --git a/public/assets/develop/data-generation/item-model/leather_gloves_dyeing.png b/public/assets/develop/data-generation/item-model/leather_gloves_dyeing.png new file mode 100644 index 000000000..1f06ea939 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/leather_gloves_dyeing.png differ diff --git a/public/assets/develop/data-generation/item-model/ruby.png b/public/assets/develop/data-generation/item-model/ruby.png new file mode 100644 index 000000000..ed2d3dc63 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/ruby.png differ diff --git a/public/assets/develop/data-generation/item-model/ruby_big.png b/public/assets/develop/data-generation/item-model/ruby_big.png new file mode 100644 index 000000000..7d99c5f61 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/ruby_big.png differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_example.png b/public/assets/develop/data-generation/item-model/throwing_knives_example.png new file mode 100644 index 000000000..727a1d9f2 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_example.png differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_one.png b/public/assets/develop/data-generation/item-model/throwing_knives_one.png new file mode 100644 index 000000000..a7f0d3dba Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_one.png differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_textures.zip b/public/assets/develop/data-generation/item-model/throwing_knives_textures.zip new file mode 100644 index 000000000..849887679 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_textures.zip differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_textures_big.png b/public/assets/develop/data-generation/item-model/throwing_knives_textures_big.png new file mode 100644 index 000000000..644c80de6 Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_textures_big.png differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_three.png b/public/assets/develop/data-generation/item-model/throwing_knives_three.png new file mode 100644 index 000000000..1e576b3fa Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_three.png differ diff --git a/public/assets/develop/data-generation/item-model/throwing_knives_two.png b/public/assets/develop/data-generation/item-model/throwing_knives_two.png new file mode 100644 index 000000000..d0e6e9c3f Binary files /dev/null and b/public/assets/develop/data-generation/item-model/throwing_knives_two.png differ diff --git a/public/assets/develop/items/spawn_egg_1.png b/public/assets/develop/items/spawn_egg_1.png new file mode 100644 index 000000000..d600147ee Binary files /dev/null and b/public/assets/develop/items/spawn_egg_1.png differ diff --git a/public/assets/develop/items/spawn_egg_2.png b/public/assets/develop/items/spawn_egg_2.png new file mode 100644 index 000000000..6a90dbc76 Binary files /dev/null and b/public/assets/develop/items/spawn_egg_2.png differ diff --git a/public/assets/develop/items/spawn_egg_3.png b/public/assets/develop/items/spawn_egg_3.png new file mode 100644 index 000000000..36645afcf Binary files /dev/null and b/public/assets/develop/items/spawn_egg_3.png differ diff --git a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceEnglishLangProvider.java b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceEnglishLangProvider.java index f3753e6a0..3829953ae 100644 --- a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceEnglishLangProvider.java +++ b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceEnglishLangProvider.java @@ -58,15 +58,26 @@ public void generateTranslations(RegistryWrapper.WrapperLookup wrapperLookup, Tr translationBuilder.add(ModBlocks.PRISMARINE_LAMP.asItem(), "Prismarine Lamp"); translationBuilder.add(ModBlocks.ENGINE_BLOCK.asItem(), "Engine Block"); - translationBuilder.add(ModBlocks.STEEL_BLOCK, "Steel Block"); - translationBuilder.add(ModBlocks.PIPE_BLOCK, "Pipe Block"); - translationBuilder.add(ModBlocks.RUBY_BLOCK, "Ruby Block"); - translationBuilder.add(ModBlocks.RUBY_STAIRS, "Ruby Stairs"); - translationBuilder.add(ModBlocks.RUBY_SLAB, "Ruby Slab"); - translationBuilder.add(ModBlocks.RUBY_FENCE, "Ruby Fence"); - translationBuilder.add(ModBlocks.RUBY_DOOR, "Ruby Door"); - translationBuilder.add(ModBlocks.RUBY_TRAPDOOR, "Ruby Trapdoor"); - translationBuilder.add(ModBlocks.VERTICAL_OAK_LOG_SLAB, "Vertical Oak Log Slab"); + translationBuilder.add(ModBlocks.STEEL_BLOCK.asItem(), "Steel Block"); + translationBuilder.add(ModBlocks.PIPE_BLOCK.asItem(), "Pipe Block"); + translationBuilder.add(ModBlocks.RUBY_BLOCK.asItem(), "Ruby Block"); + translationBuilder.add(ModBlocks.RUBY_STAIRS.asItem(), "Ruby Stairs"); + translationBuilder.add(ModBlocks.RUBY_SLAB.asItem(), "Ruby Slab"); + translationBuilder.add(ModBlocks.RUBY_FENCE.asItem(), "Ruby Fence"); + translationBuilder.add(ModBlocks.RUBY_DOOR.asItem(), "Ruby Door"); + translationBuilder.add(ModBlocks.RUBY_TRAPDOOR.asItem(), "Ruby Trapdoor"); + translationBuilder.add(ModBlocks.VERTICAL_OAK_LOG_SLAB.asItem(), "Vertical Oak Log Slab"); + + translationBuilder.add(ModItems.RUBY, "Ruby"); + translationBuilder.add(ModItems.GUIDITE_AXE, "Guidite Axe"); + translationBuilder.add(ModItems.LEATHER_GLOVES, "Leather Gloves"); + translationBuilder.add(ModItems.FLASHLIGHT, "Flashlight"); + translationBuilder.add(ModItems.BALLOON, "Balloon"); + translationBuilder.add(ModItems.THROWING_KNIVES, "Throwing Knives"); + translationBuilder.add(ModItems.ENHANCED_HOE, "Enhanced Hoe"); + translationBuilder.add(ModItems.DIMENSIONAL_CRYSTAL, "Dimensional Crystal"); + + translationBuilder.add(ModItems.CUSTOM_SPAWN_EGG, "Custom Spawn Egg"); // :::datagen-translations:provider } } diff --git a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceItemTagProvider.java b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceItemTagProvider.java index dde90f0ae..732a24b04 100644 --- a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceItemTagProvider.java +++ b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceItemTagProvider.java @@ -14,6 +14,7 @@ import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; import com.example.docs.FabricDocsReference; +import com.example.docs.item.ModItems; // :::datagen-tags:provider public class FabricDocsReferenceItemTagProvider extends FabricTagProvider { @@ -38,6 +39,9 @@ protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { .forceAddTag(ItemTags.BANNERS) .setReplace(true); // :::datagen-tags:build + + getOrCreateTagBuilder(ItemTags.DYEABLE).add(ModItems.LEATHER_GLOVES); + // :::datagen-tags:provider } } diff --git a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java index ef9bf23ce..261bba122 100644 --- a/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java +++ b/reference/latest/src/client/java/com/example/docs/datagen/FabricDocsReferenceModelProvider.java @@ -1,5 +1,6 @@ package com.example.docs.datagen; +import java.util.List; import java.util.Optional; import net.minecraft.block.Block; @@ -9,16 +10,23 @@ import net.minecraft.client.data.BlockStateVariant; import net.minecraft.client.data.BlockStateVariantMap; import net.minecraft.client.data.ItemModelGenerator; +import net.minecraft.client.data.ItemModels; import net.minecraft.client.data.Model; import net.minecraft.client.data.ModelIds; +import net.minecraft.client.data.Models; import net.minecraft.client.data.TextureKey; import net.minecraft.client.data.TextureMap; import net.minecraft.client.data.TexturedModel; import net.minecraft.client.data.VariantSetting; import net.minecraft.client.data.VariantSettings; import net.minecraft.client.data.VariantsBlockStateSupplier; +import net.minecraft.client.render.item.model.ItemModel; +import net.minecraft.client.render.item.property.numeric.CountProperty; +import net.minecraft.client.render.item.property.select.ContextDimensionProperty; +import net.minecraft.item.Item; import net.minecraft.util.Identifier; import net.minecraft.util.math.Direction; +import net.minecraft.world.World; import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; @@ -26,6 +34,7 @@ import com.example.docs.FabricDocsReference; import com.example.docs.block.ModBlocks; import com.example.docs.block.custom.VerticalSlabBlock; +import com.example.docs.item.ModItems; // :::datagen-model:provider public class FabricDocsReferenceModelProvider extends FabricModelProvider { @@ -86,14 +95,111 @@ public void exampleBlockStateGeneration(BlockStateModelGenerator blockStateModel public void generateItemModels(ItemModelGenerator itemModelGenerator) { // :::datagen-model:provider - //TODO Since I have little experience with generating item models, I will leave this to someone more experienced (Fellteros) + //:::datagen-model:generated + itemModelGenerator.register(ModItems.RUBY, Models.GENERATED); + //:::datagen-model:generated + + //:::datagen-model:handheld + itemModelGenerator.register(ModItems.GUIDITE_AXE, Models.HANDHELD); + //:::datagen-model:handheld + + //:::datagen-model:spawn-egg + int shellColor = 0x000000; + int spotsColor = 0xffffff; + itemModelGenerator.registerSpawnEgg(ModItems.CUSTOM_SPAWN_EGG, shellColor, spotsColor); + //:::datagen-model:spawn-egg + + //:::datagen-model:dyeable + itemModelGenerator.registerDyeable(ModItems.LEATHER_GLOVES, -6265536); + //:::datagen-model:dyeable + + //:::datagen-model:condition + itemModelGenerator.registerCondition( + ModItems.FLASHLIGHT, + ItemModels.usingItemProperty(), + ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.FLASHLIGHT, "_lit", Models.GENERATED)), + ItemModels.basic(itemModelGenerator.upload(ModItems.FLASHLIGHT, Models.GENERATED)) + ); + //:::datagen-model:condition + + //:::datagen-model:composite + ItemModel.Unbaked hoe = ItemModels.basic(itemModelGenerator.upload(ModItems.ENHANCED_HOE, Models.GENERATED)); + ItemModel.Unbaked hoePlus = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.ENHANCED_HOE, "_plus", Models.GENERATED)); + + itemModelGenerator.output.accept( + ModItems.ENHANCED_HOE, + ItemModels.composite(hoe, hoePlus) + ); + //:::datagen-model:composite + + //:::datagen-model:select + ItemModel.Unbaked crystalOverworld = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.DIMENSIONAL_CRYSTAL, "_overworld", Models.GENERATED)); + ItemModel.Unbaked crystalNether = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.DIMENSIONAL_CRYSTAL, "_nether", Models.GENERATED)); + ItemModel.Unbaked crystalEnd = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.DIMENSIONAL_CRYSTAL, "_end", Models.GENERATED)); + + itemModelGenerator.output.accept( + ModItems.DIMENSIONAL_CRYSTAL, + ItemModels.select(new ContextDimensionProperty(), + ItemModels.switchCase(World.OVERWORLD, crystalOverworld), + ItemModels.switchCase(World.NETHER, crystalNether), + ItemModels.switchCase(World.END, crystalEnd) + ) + ); + //:::datagen-model:select + + //:::datagen-model:range-dispatch + ItemModel.Unbaked knifeOne = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.THROWING_KNIVES, "_one", Models.GENERATED)); + ItemModel.Unbaked knifeTwo = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.THROWING_KNIVES, "_two", Models.GENERATED)); + ItemModel.Unbaked knifeThree = ItemModels.basic(itemModelGenerator.registerSubModel(ModItems.THROWING_KNIVES, "_three", Models.GENERATED)); + + itemModelGenerator.output.accept( + ModItems.THROWING_KNIVES, + ItemModels.rangeDispatch( + new CountProperty(false), + List.of( + ItemModels.rangeDispatchEntry(knifeOne, 1.0F), + ItemModels.rangeDispatchEntry(knifeTwo, 2.0F), + ItemModels.rangeDispatchEntry(knifeThree, 3.0F) + ) + ) + ); + //:::datagen-model:range-dispatch + + //:::datagen-model-custom:balloon + CustomItemModelGenerator.registerScaled2x(ModItems.BALLOON, itemModelGenerator); + //:::datagen-model-custom:balloon // :::datagen-model:provider } // :::datagen-model:provider + // Inner class containing custom objects for item model generation. + public static class CustomItemModelGenerator { + //:::datagen-model-custom:item-model + public static final Model SCALED2X = item("scaled2x", TextureKey.LAYER0); + //:::datagen-model-custom:item-model + + //:::datagen-model-custom:item-datagen-method + public static void registerScaled2x(Item item, ItemModelGenerator generator) { + Identifier itemModel = SCALED2X.upload(item, TextureMap.of(TextureKey.LAYER0, ModelIds.getItemModelId(item)), generator.modelCollector); + generator.output.accept(item, ItemModels.basic(itemModel)); + } + + //:::datagen-model-custom:item-datagen-method + + @SuppressWarnings("SameParameterValue") + //:::datagen-model-custom:item-model + + private static Model item(String parent, TextureKey... requiredTextureKeys) { + return new Model(Optional.of(Identifier.of(FabricDocsReference.MOD_ID, "item/" + parent)), Optional.empty(), requiredTextureKeys); + } + + //:::datagen-model-custom:item-model + } + // Inner class containing all Objects needed for the custom datagen tutorial. + @SuppressWarnings("ALL") public static class CustomBlockStateModelGenerator { // :::datagen-model-custom:model public static final Model VERTICAL_SLAB = block("vertical_slab", TextureKey.BOTTOM, TextureKey.TOP, TextureKey.SIDE); diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/balloon.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/balloon.json new file mode 100644 index 000000000..eb14ad323 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/balloon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/balloon" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/custom_spawn_egg.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/custom_spawn_egg.json new file mode 100644 index 000000000..3ace051f2 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/custom_spawn_egg.json @@ -0,0 +1,16 @@ +{ + "model": { + "type": "minecraft:model", + "model": "minecraft:item/template_spawn_egg", + "tints": [ + { + "type": "minecraft:constant", + "value": -16777216 + }, + { + "type": "minecraft:constant", + "value": -1 + } + ] + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/dimensional_crystal.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/dimensional_crystal.json new file mode 100644 index 000000000..fc3b3a845 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/dimensional_crystal.json @@ -0,0 +1,29 @@ +{ + "model": { + "type": "minecraft:select", + "cases": [ + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/dimensional_crystal_overworld" + }, + "when": "minecraft:overworld" + }, + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/dimensional_crystal_nether" + }, + "when": "minecraft:the_nether" + }, + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/dimensional_crystal_end" + }, + "when": "minecraft:the_end" + } + ], + "property": "minecraft:context_dimension" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/enhanced_hoe.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/enhanced_hoe.json new file mode 100644 index 000000000..3938afe38 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/enhanced_hoe.json @@ -0,0 +1,15 @@ +{ + "model": { + "type": "minecraft:composite", + "models": [ + { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/enhanced_hoe" + }, + { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/enhanced_hoe_plus" + } + ] + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/flashlight.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/flashlight.json new file mode 100644 index 000000000..955f2c456 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/flashlight.json @@ -0,0 +1,14 @@ +{ + "model": { + "type": "minecraft:condition", + "on_false": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/flashlight" + }, + "on_true": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/flashlight_lit" + }, + "property": "minecraft:using_item" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/guidite_axe.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/guidite_axe.json new file mode 100644 index 000000000..2a9912836 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/guidite_axe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/guidite_axe" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/leather_gloves.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/leather_gloves.json new file mode 100644 index 000000000..d6b861ec8 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/leather_gloves.json @@ -0,0 +1,12 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/leather_gloves", + "tints": [ + { + "type": "minecraft:dye", + "default": -6265536 + } + ] + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby.json new file mode 100644 index 000000000..c6a0375ec --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/ruby" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_door.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_door.json index a1c490bdf..07d2240a9 100644 --- a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_door.json +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_door.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "fabric-docs-reference:block/ruby_door" + "model": "fabric-docs-reference:item/ruby_door" } } \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_fence.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_fence.json index 5ed2fdb1c..aee82d9ad 100644 --- a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_fence.json +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_fence.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "fabric-docs-reference:block/ruby_fence" + "model": "fabric-docs-reference:block/ruby_fence_inventory" } } \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_trapdoor.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_trapdoor.json index d47921fb6..620b00ddb 100644 --- a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_trapdoor.json +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/ruby_trapdoor.json @@ -1,6 +1,6 @@ { "model": { "type": "minecraft:model", - "model": "fabric-docs-reference:block/ruby_trapdoor" + "model": "fabric-docs-reference:block/ruby_trapdoor_bottom" } } \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/items/throwing_knives.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/throwing_knives.json new file mode 100644 index 000000000..6f857e459 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/items/throwing_knives.json @@ -0,0 +1,30 @@ +{ + "model": { + "type": "minecraft:range_dispatch", + "entries": [ + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/throwing_knives_one" + }, + "threshold": 1.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/throwing_knives_two" + }, + "threshold": 2.0 + }, + { + "model": { + "type": "minecraft:model", + "model": "fabric-docs-reference:item/throwing_knives_three" + }, + "threshold": 3.0 + } + ], + "normalize": false, + "property": "minecraft:count" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/lang/en_us.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/lang/en_us.json index dd0a7e484..f7f275dc3 100644 --- a/reference/latest/src/main/generated/assets/fabric-docs-reference/lang/en_us.json +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/lang/en_us.json @@ -3,34 +3,43 @@ "block.fabric-docs-reference.condensed_oak_log": "Condensed Oak Log", "block.fabric-docs-reference.counter_block": "Counter Block", "block.fabric-docs-reference.engine": "Engine Block", - "block.fabric-docs-reference.pipe_block": "Pipe Block", "block.fabric-docs-reference.prismarine_lamp": "Prismarine Lamp", - "block.fabric-docs-reference.ruby_block": "Ruby Block", - "block.fabric-docs-reference.ruby_door": "Ruby Door", - "block.fabric-docs-reference.ruby_fence": "Ruby Fence", - "block.fabric-docs-reference.ruby_slab": "Ruby Slab", - "block.fabric-docs-reference.ruby_stairs": "Ruby Stairs", - "block.fabric-docs-reference.ruby_trapdoor": "Ruby Trapdoor", - "block.fabric-docs-reference.steel_block": "Steel Block", - "block.fabric-docs-reference.vertical_oak_log_slab": "Vertical Oak Log Slab", "death.attack.tater": "%1$s died from Tater damage!", "effect.fabric-docs-reference.tater": "Tater", "enchantment.fabric-docs-reference.thundering": "Thundering", + "item.fabric-docs-reference.balloon": "Balloon", "item.fabric-docs-reference.condensed_dirt": "Condensed Dirt", "item.fabric-docs-reference.condensed_oak_log": "Condensed Oak Log", "item.fabric-docs-reference.counter": "Counter", "item.fabric-docs-reference.counter.info": "Used %1$s times", "item.fabric-docs-reference.counter_block": "Counter Block", + "item.fabric-docs-reference.custom_spawn_egg": "Custom Spawn Egg", + "item.fabric-docs-reference.dimensional_crystal": "Dimensional Crystal", "item.fabric-docs-reference.engine": "Engine Block", + "item.fabric-docs-reference.enhanced_hoe": "Enhanced Hoe", + "item.fabric-docs-reference.flashlight": "Flashlight", + "item.fabric-docs-reference.guidite_axe": "Guidite Axe", "item.fabric-docs-reference.guidite_boots": "Guidite Boots", "item.fabric-docs-reference.guidite_chestplate": "Guidite Chestplate", "item.fabric-docs-reference.guidite_helmet": "Guidite Helmet", "item.fabric-docs-reference.guidite_leggings": "Guidite Leggings", "item.fabric-docs-reference.guidite_sword": "Guidite Sword", + "item.fabric-docs-reference.leather_gloves": "Leather Gloves", "item.fabric-docs-reference.lightning_stick": "Lightning Stick", + "item.fabric-docs-reference.pipe_block": "Pipe Block", "item.fabric-docs-reference.poisonous_apple": "Poisonous Apple", "item.fabric-docs-reference.prismarine_lamp": "Prismarine Lamp", + "item.fabric-docs-reference.ruby": "Ruby", + "item.fabric-docs-reference.ruby_block": "Ruby Block", + "item.fabric-docs-reference.ruby_door": "Ruby Door", + "item.fabric-docs-reference.ruby_fence": "Ruby Fence", + "item.fabric-docs-reference.ruby_slab": "Ruby Slab", + "item.fabric-docs-reference.ruby_stairs": "Ruby Stairs", + "item.fabric-docs-reference.ruby_trapdoor": "Ruby Trapdoor", + "item.fabric-docs-reference.steel_block": "Steel Block", "item.fabric-docs-reference.suspicious_substance": "Suspicious Substance", + "item.fabric-docs-reference.throwing_knives": "Throwing Knives", + "item.fabric-docs-reference.vertical_oak_log_slab": "Vertical Oak Log Slab", "item.minecraft.potion.effect.tater": "Tater Potion", "itemGroup.fabric_docs_reference": "Fabric Docs Reference", "itemTooltip.fabric-docs-reference.lightning_stick": "This is an extremely powerful weapon that can summon lightning bolts.", diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/balloon.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/balloon.json new file mode 100644 index 000000000..dec9c8012 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/balloon.json @@ -0,0 +1,6 @@ +{ + "parent": "fabric-docs-reference:item/scaled2x", + "textures": { + "layer0": "fabric-docs-reference:item/balloon" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_end.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_end.json new file mode 100644 index 000000000..af75af205 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_end.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/dimensional_crystal_end" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_nether.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_nether.json new file mode 100644 index 000000000..2132c4098 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_nether.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/dimensional_crystal_nether" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_overworld.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_overworld.json new file mode 100644 index 000000000..75525ac7e --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/dimensional_crystal_overworld.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/dimensional_crystal_overworld" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe.json new file mode 100644 index 000000000..a700f520f --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/enhanced_hoe" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe_plus.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe_plus.json new file mode 100644 index 000000000..c28111f9f --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/enhanced_hoe_plus.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/enhanced_hoe_plus" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight.json new file mode 100644 index 000000000..be50e10cd --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/flashlight" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight_lit.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight_lit.json new file mode 100644 index 000000000..c9158a556 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/flashlight_lit.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/flashlight_lit" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/guidite_axe.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/guidite_axe.json new file mode 100644 index 000000000..c8a1a8394 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/guidite_axe.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "fabric-docs-reference:item/guidite_axe" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/leather_gloves.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/leather_gloves.json new file mode 100644 index 000000000..583009e1a --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/leather_gloves.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/leather_gloves" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/ruby.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/ruby.json new file mode 100644 index 000000000..c8c3eb894 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/ruby.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/ruby" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_one.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_one.json new file mode 100644 index 000000000..4eb0ee21f --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_one.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/throwing_knives_one" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_three.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_three.json new file mode 100644 index 000000000..4b1871217 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_three.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/throwing_knives_three" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_two.json b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_two.json new file mode 100644 index 000000000..ed53ba587 --- /dev/null +++ b/reference/latest/src/main/generated/assets/fabric-docs-reference/models/item/throwing_knives_two.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "fabric-docs-reference:item/throwing_knives_two" + } +} \ No newline at end of file diff --git a/reference/latest/src/main/generated/data/minecraft/tags/item/dyeable.json b/reference/latest/src/main/generated/data/minecraft/tags/item/dyeable.json new file mode 100644 index 000000000..1e084198d --- /dev/null +++ b/reference/latest/src/main/generated/data/minecraft/tags/item/dyeable.json @@ -0,0 +1,5 @@ +{ + "values": [ + "fabric-docs-reference:leather_gloves" + ] +} \ No newline at end of file diff --git a/reference/latest/src/main/java/com/example/docs/block/ModBlocks.java b/reference/latest/src/main/java/com/example/docs/block/ModBlocks.java index a86c2a5cc..5ccc3c163 100644 --- a/reference/latest/src/main/java/com/example/docs/block/ModBlocks.java +++ b/reference/latest/src/main/java/com/example/docs/block/ModBlocks.java @@ -136,7 +136,7 @@ private static Block register(String name, Function itemKey = keyOfItem(name); - BlockItem blockItem = new BlockItem(block, new Item.Settings().registryKey(itemKey)); + BlockItem blockItem = new BlockItem(block, new Item.Settings().registryKey(itemKey).useItemPrefixedTranslationKey()); Registry.register(Registries.ITEM, itemKey, blockItem); } @@ -169,13 +169,13 @@ public static void setupItemGroups() { itemGroup.add(ModBlocks.PRISMARINE_LAMP.asItem()); itemGroup.add(ModBlocks.COUNTER_BLOCK.asItem()); itemGroup.add(ModBlocks.ENGINE_BLOCK.asItem()); - itemGroup.add(RUBY_BLOCK); - itemGroup.add(RUBY_STAIRS); - itemGroup.add(RUBY_SLAB); - itemGroup.add(RUBY_FENCE); - itemGroup.add(RUBY_DOOR); - itemGroup.add(RUBY_TRAPDOOR); - itemGroup.add(VERTICAL_OAK_LOG_SLAB); + itemGroup.add(RUBY_BLOCK.asItem()); + itemGroup.add(RUBY_STAIRS.asItem()); + itemGroup.add(RUBY_SLAB.asItem()); + itemGroup.add(RUBY_FENCE.asItem()); + itemGroup.add(RUBY_DOOR.asItem()); + itemGroup.add(RUBY_TRAPDOOR.asItem()); + itemGroup.add(VERTICAL_OAK_LOG_SLAB.asItem()); }); } diff --git a/reference/latest/src/main/java/com/example/docs/item/ModItems.java b/reference/latest/src/main/java/com/example/docs/item/ModItems.java index f8b37814a..d4eaabcbe 100644 --- a/reference/latest/src/main/java/com/example/docs/item/ModItems.java +++ b/reference/latest/src/main/java/com/example/docs/item/ModItems.java @@ -5,13 +5,19 @@ import net.minecraft.component.type.ConsumableComponent; import net.minecraft.component.type.ConsumableComponents; import net.minecraft.component.type.FoodComponent; +import net.minecraft.entity.EntityType; import net.minecraft.entity.effect.StatusEffectInstance; import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ArmorItem; +import net.minecraft.item.AxeItem; +import net.minecraft.item.HoeItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroups; import net.minecraft.item.ItemStack; +import net.minecraft.item.SpawnEggItem; import net.minecraft.item.SwordItem; import net.minecraft.item.ToolMaterial; import net.minecraft.item.consume.ApplyEffectsConsumeEffect; @@ -22,7 +28,10 @@ import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.BlockTags; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; import net.minecraft.util.Identifier; +import net.minecraft.world.World; import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; @@ -118,6 +127,62 @@ public class ModItems { // :::2 public static final Item SUSPICIOUS_SUBSTANCE = register("suspicious_substance", Item::new, new Item.Settings()); // :::2 + + //generated + public static final Item RUBY = register("ruby", Item::new, new Item.Settings()); + + //handheld + public static final Item GUIDITE_AXE = register("guidite_axe", settings -> new AxeItem(GUIDITE_TOOL_MATERIAL, 5.0F, -3.0F, settings), new Item.Settings()); + + //spawn egg + // :::spawn_egg_register_item + public static final SpawnEggItem CUSTOM_SPAWN_EGG = registerSpawnEgg( + "custom_spawn_egg", + EntityType.FROG, + new Item.Settings() + ); + // :::spawn_egg_register_item + + //dyeable + public static final Item LEATHER_GLOVES = register("leather_gloves", Item::new, new Item.Settings()); + + //condition + public static final Item FLASHLIGHT = register("flashlight", settings -> new Item(settings) { + @Override + public ActionResult use(World world, PlayerEntity user, Hand hand) { + user.setCurrentHand(hand); + return ActionResult.CONSUME; + } + }, new Item.Settings()); + + //custom + public static final Item BALLOON = register("balloon", Item::new, new Item.Settings()); + + //composite + public static final Item ENHANCED_HOE = register("enhanced_hoe", settings -> new HoeItem(GUIDITE_TOOL_MATERIAL, -4.0F, 0.0F, settings), new Item.Settings()); + + //select + public static final Item DIMENSIONAL_CRYSTAL = register("dimensional_crystal", Item::new, new Item.Settings()); + + //range dispatch + public static final Item THROWING_KNIVES = register("throwing_knives", Item::new, new Item.Settings().maxCount(3)); + + // :::spawn_egg_register_method + public static SpawnEggItem registerSpawnEgg(String name, EntityType entityType, Item.Settings settings) { + // Create the item key. + RegistryKey itemKey = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, name)); + + // Create the spawn egg item instance. + SpawnEggItem spawnEggItem = new SpawnEggItem(entityType, settings.registryKey(itemKey)); + + // Register the spawn egg item. + Registry.register(Registries.ITEM, itemKey, spawnEggItem); + + return spawnEggItem; + } + + // :::spawn_egg_register_method + // :::1 public static Item register(String name, Function itemFactory, Item.Settings settings) { // Create the item key. @@ -157,6 +222,11 @@ public static void initialize() { .register((itemGroup) -> itemGroup.add(ModItems.GUIDITE_SWORD)); // :::8 + // :::spawn_egg_item_group + ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS) + .register(itemGroup -> itemGroup.add(ModItems.CUSTOM_SPAWN_EGG)); + // :::spawn_egg_item_group + // :::_12 // Register the group. Registry.register(Registries.ITEM_GROUP, CUSTOM_ITEM_GROUP_KEY, CUSTOM_ITEM_GROUP); @@ -175,6 +245,17 @@ public static void initialize() { }); // :::_12 + ItemGroupEvents.modifyEntriesEvent(CUSTOM_ITEM_GROUP_KEY).register(itemGroup -> { + itemGroup.add(ModItems.RUBY); + itemGroup.add(ModItems.GUIDITE_AXE); + itemGroup.add(ModItems.LEATHER_GLOVES); + itemGroup.add(ModItems.FLASHLIGHT); + itemGroup.add(ModItems.BALLOON); + itemGroup.add(ModItems.ENHANCED_HOE); + itemGroup.add(ModItems.DIMENSIONAL_CRYSTAL); + itemGroup.add(ModItems.THROWING_KNIVES); + }); + // :::_10 // Add the suspicious substance to the composting registry with a 30% chance of increasing the composter's level. CompostingChanceRegistry.INSTANCE.add(ModItems.SUSPICIOUS_SUBSTANCE, 0.3f); diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/models/item/scaled2x.json b/reference/latest/src/main/resources/assets/fabric-docs-reference/models/item/scaled2x.json new file mode 100644 index 000000000..d5e3ce366 --- /dev/null +++ b/reference/latest/src/main/resources/assets/fabric-docs-reference/models/item/scaled2x.json @@ -0,0 +1,25 @@ +{ + "parent": "item/generated", + "display": { + "ground": { + "rotation": [ 0, 0, 0 ], + "translation": [ 0, 2, 0], + "scale":[ 1, 1, 1 ] + }, + "head": { + "rotation": [ 0, 180, 0 ], + "translation": [ 0, 13, 7], + "scale":[ 2, 2, 2 ] + }, + "thirdperson_righthand": { + "rotation": [ 0, 0, 0 ], + "translation": [ 0, 3, 1 ], + "scale": [ 1.1, 1.1, 1.1 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 1.13, 3.2, 1.13], + "scale": [ 1.36, 1.36, 1.36 ] + } + } +} \ No newline at end of file diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/balloon.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/balloon.png new file mode 100644 index 000000000..bbd689038 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/balloon.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_end.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_end.png new file mode 100644 index 000000000..1a5c247b2 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_end.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_nether.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_nether.png new file mode 100644 index 000000000..33ec026cc Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_nether.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_overworld.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_overworld.png new file mode 100644 index 000000000..4b1eff193 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/dimensional_crystal_overworld.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe.png new file mode 100644 index 000000000..14ca3e11d Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe_plus.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe_plus.png new file mode 100644 index 000000000..4e554f456 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/enhanced_hoe_plus.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight.png new file mode 100644 index 000000000..4e23f6dd4 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight_lit.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight_lit.png new file mode 100644 index 000000000..e51a0de56 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/flashlight_lit.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/guidite_axe.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/guidite_axe.png new file mode 100644 index 000000000..d7d329f01 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/guidite_axe.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/leather_gloves.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/leather_gloves.png new file mode 100644 index 000000000..c4b651f3a Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/leather_gloves.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/ruby.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/ruby.png new file mode 100644 index 000000000..ed2d3dc63 Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/ruby.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_one.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_one.png new file mode 100644 index 000000000..a7f0d3dba Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_one.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_three.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_three.png new file mode 100644 index 000000000..1e576b3fa Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_three.png differ diff --git a/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_two.png b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_two.png new file mode 100644 index 000000000..d0e6e9c3f Binary files /dev/null and b/reference/latest/src/main/resources/assets/fabric-docs-reference/textures/item/throwing_knives_two.png differ diff --git a/sidebar_translations.json b/sidebar_translations.json index a4ca4e92c..ebb61f01a 100644 --- a/sidebar_translations.json +++ b/sidebar_translations.json @@ -29,6 +29,7 @@ "develop.items.custom-item-interactions": "Custom Item Interactions", "develop.items.custom-enchantment-effects": "Custom Enchantment Effects", "develop.items.potions": "Potions", + "develop.items.spawn-egg": "Spawn Egg", "develop.items.custom-data-components": "Custom Data Components", "develop.blocks": "Blocks", "develop.blocks.first-block": "Creating Your First Block", @@ -50,6 +51,7 @@ "develop.dataGeneration.recipes": "Recipe Generation", "develop.dataGeneration.lootTables": "Loot Table Generation", "develop.dataGeneration.blockModels": "Block Model Generation", + "develop.dataGeneration.itemModels": "Item Model Generation", "develop.rendering": "Rendering", "develop.rendering.basicConcepts": "Basic Rendering Concepts", "develop.rendering.drawContext": "Using the Drawing Context",