zh_cn: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 | ||
zh_cn:tutorial:items [2020/11/02 05:24] – part wun leocth2 | zh_cn:tutorial:items [2022/12/16 00:05] – [添加物品纹理] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 添加一个物品 ====== | + | ====== 添加物品 ====== |
==== 介绍 ==== | ==== 介绍 ==== | ||
- | 添加一个基本的物品是编写模组的第一步。 你将需要创建一个'' | + | 添加一个基本的物品是编写模组的第一步。你将需要创建一个 '' |
==== 注册物品 ==== | ==== 注册物品 ==== | ||
- | 首先,创建一个'' | + | 首先,创建一个 '' |
- | <code java [enable_line_numbers=" | + | <yarncode |
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | { | + | // 新物品的实例 |
- | // 创建新物品对象 | + | public static final class_1792 CUSTOM_ITEM |
- | public static final Item FABRIC_ITEM | + | |
[...] | [...] | ||
} | } | ||
- | </code> | + | </yarncode> |
- | 这里使用原版注册方式来注册,基本语法是'' | + | 这里使用原版注册方式来注册,基本语法是 '' |
- | <code java [enable_line_numbers=" | + | <yarncode |
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | { | + | // 新物品的实例 |
- | // 创建新物品的实例 | + | public static final class_1792 CUSTOM_ITEM |
- | public static final Item FABRIC_ITEM | + | |
- | + | ||
@Override | @Override | ||
- | public void onInitialize() | + | public void onInitialize() { |
- | | + | |
- | | + | } |
- | } | + | |
} | } | ||
- | </code> | + | </yarncode> |
- | 现在新物品已添加完毕,运行`runClient` Gradle任务以查看它的运行情况。 | + | 现在新物品已添加到 Minecraft 中,运行“Minecraft Client”运行配置或者 '' |
{{: | {{: | ||
- | ==== 添加物品材质 ==== | + | 为了简便,也可以像这样简化代码: |
+ | < | ||
+ | public class ExampleMod implements ModInitializer { | ||
- | 为物品注册材质需要物品模型.json文件和材质图像文件。 您将需要将它们添加到资源目录中。每个的直接路径是: | + | // 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())); | ||
- | | + | |
- | | + | |
- | 我们将使用[[https:// | + | } |
+ | } | ||
+ | </yarncode> | ||
- | 如果您在第一步中正确注册了物品,则游戏将以类似于以下方式的方式抱怨缺少材质文件: | + | ==== 添加物品纹理 ==== |
- | < | + | |
- | | + | 为物品注册纹理需要物品模型.json文件和纹理图像文件。 您将需要将它们添加到资源目录中。每个的直接路径是: |
- | </ | + | |
- | | + | 物品模型: |
+ | 物品纹理: | ||
+ | 我们将使用[[https:// | ||
+ | |||
+ | 如果您在第一步中正确注册了物品,则游戏将以类似于以下方式的方式抱怨缺少纹理文件: | ||
+ | |||
+ | [Server-Worker-1/ | ||
游戏能很方便地告诉你它想要的资源路径。遇事不决,日志解决。 | 游戏能很方便地告诉你它想要的资源路径。遇事不决,日志解决。 | ||
- | 一个非常简单的模 | + | 一个非常简单的物品模型长这个样子: |
- | A basic item model template is: | + | |
<code JavaScript> | <code JavaScript> | ||
{ | { | ||
" | " | ||
" | " | ||
- | " | + | " |
} | } | ||
} | } | ||
</ | </ | ||
- | 物品的父项会更改其在手中的呈现方式,并且对库存中的冻结物品等有用。 “物品/手持”用于从纹理的左下角握住的工具。 textures / layer0是图像文件的位置。 | + | 物品模型会将所有属性继承自父模型,例如对工具、方块等物品十分有用的自定义手持模型('' |
- | 最终纹理结果: | + | 最终纹理的结果: |
{{: | {{: | ||
- | ==== 创建item类 ==== | + | ==== 创建物品类 ==== |
- | 要为物品添加功能/ | + | 要为物品添加自定义行为,则需要创建一个物品类。其默认的构造方法需要一个Item.Settings对象。 |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | public class FabricItem extends Item | + | public class FabricItem extends Item { |
- | { | + | |
- | public FabricItem(Settings settings) | + | public FabricItem(Settings settings) { |
- | | + | |
super(settings); | super(settings); | ||
} | } | ||
} | } | ||
</ | </ | ||
- | 自定义Item类的一个实际用例是使该物品在您单击时播放声音: | + | 自定义物品类的一个实际用例是使该物品在右击时播放声音: |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | public class FabricItem extends Item | + | public class FabricItem extends Item { |
- | { | + | |
- | public FabricItem(Settings settings) | + | public FabricItem(Settings settings) { |
- | | + | |
super(settings); | super(settings); | ||
} | } | ||
| | ||
@Override | @Override | ||
- | public TypedActionResult< | + | public TypedActionResult< |
- | | + | |
playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, | ||
- | return | + | return TypedActionResult.success(playerEntity.getStackInHand(hand)); |
} | } | ||
} | } | ||
Line 93: | Line 100: | ||
用新物品类的实例替换旧的Item对象: | 用新物品类的实例替换旧的Item对象: | ||
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | { | + | |
// | // | ||
- | public static final FabricItem FABRIC_ITEM = new FabricItem(new | + | public static final FabricItem FABRIC_ITEM = new FabricItem(new |
[...] | [...] | ||
} | } | ||
</ | </ | ||
- | 如果您正确执行了所有操作,则使用该物品现在应该会播放声音. | + | 如果你正确执行了所有操作,则使用该物品现在应该会播放声音。 |
==== 如果我想更改物品的堆叠大小怎么办? | ==== 如果我想更改物品的堆叠大小怎么办? | ||
- | 使用maxCount(int size)来设置最大堆叠数。请注意,如果您的物品是有耐久的(及耐久归零后会被破坏),那么此物品无法设置最大堆叠数,否则游戏将抛出RuntimeException。 | + | 使用'' |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
- | public class ExampleMod implements ModInitializer | + | public class ExampleMod implements ModInitializer { |
- | { | + | |
// | // | ||
- | public static final FabricItem FABRIC_ITEM = new FabricItem(new | + | public static final FabricItem FABRIC_ITEM = new FabricItem(new |
[...] | [...] | ||
} | } | ||
</ | </ | ||
- | ==== Next Steps ==== | + | ==== 下一步 |
- | [[tutorial: | + | 试着[[zh_cn:tutorial: |
zh_cn/tutorial/items.txt · Last modified: 2024/04/15 01:25 by solidblock