User Tools

Site Tools


zh_cn:tutorial:blocks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
zh_cn:tutorial:blocks [2025/04/01 08:40] solidblockzh_cn:tutorial:blocks [2025/04/02 01:11] (current) – [给予方块外观] solidblock
Line 122: Line 122:
  
 ===== 在 1.21.2+ 中注册方块 ===== ===== 在 1.21.2+ 中注册方块 =====
-在 1.21.2+ 中,要把 ''RegistryKey'' 添加到方块的 ''AbstractBlock.Settings'' 中,和物品的 ''Item.Settings'' 一起。看上去有点麻烦,不过好在 Minecraft 的 ''Blocks.//register//'' 和 ''Items.//register//'' 可以帮你做这些。+在 1.21.2+ 中,要把 ''RegistryKey'' 添加到方块的 ''AbstractBlock.Settings'' 中,和物品的 ''Item.Settings'' 一起。看上去有点麻烦,不过好在 Minecraft 的 ''Blocks.//register//'' 和 ''Items.//register//'' 可以帮你做这些。这里我们使用单独的类 ''TutorialBlocks'' 存放所有的方块对象,并在模组初始化器中引用这个类,使其字段被静态加载
  
-<code java> +<code java TutorialBlocks.java> 
-public class ExampleMod implements ModInitializer {+public class TutorialBlocks {
   public static final Block EXAMPLE_BLOCK = register("example_block", Block::new, Block.Settings.create().strength(4.0f));   public static final Block EXAMPLE_BLOCK = register("example_block", Block::new, Block.Settings.create().strength(4.0f));
  
Line 135: Line 135:
     Items.register(block);     Items.register(block);
     return block;     return block;
 +  }
 +
 +  public static void init() {
   }   }
 } }
Line 140: Line 143:
  
 上面的代码中,''Blocks.//register//'' 会帮助你将注册表键先写到 ''AbstractBlock.Settings'' 中,然后创建方块实例再注册。''Items.//register//'' 会直接创建简单的 ''BlockItem'' 实例,使用和方块一样的 ID,然后注册。如果需要更加复杂的制作,例如创建 ''BlockItem'' 的子类,可以调用其他一些也叫做 ''Items.//register//'' 但是有不同方法签名的方法。 上面的代码中,''Blocks.//register//'' 会帮助你将注册表键先写到 ''AbstractBlock.Settings'' 中,然后创建方块实例再注册。''Items.//register//'' 会直接创建简单的 ''BlockItem'' 实例,使用和方块一样的 ID,然后注册。如果需要更加复杂的制作,例如创建 ''BlockItem'' 的子类,可以调用其他一些也叫做 ''Items.//register//'' 但是有不同方法签名的方法。
 +
 +别忘了要在模组初始化器中静态加载这个类:
 +<code java ExampleMod.java>
 +public class ExampleMod implements ModInitializer {
 +
 +  @Override
 +  public void onInitialize() {
 +    // ...
 +    
 +    TutorialBlocks.init();
 +  }
 +}
 +</code>
  
 ===== 给予方块外观 ===== ===== 给予方块外观 =====
Line 148: Line 164:
   * 方块烘焙模型   * 方块烘焙模型
   * 方块纹理   * 方块纹理
-  * //1.21.及之前的版本://物品模型(如果方块有与之关联的物品) +  * //1.21.及之前的版本://物品模型(如果方块有与之关联的物品) 
-  * //1.21.及之后的版本://物品模型映射(如果方块有与之关联的物品)+  * //1.21.及之后的版本://物品模型映射(如果方块有与之关联的物品)
  
 这些文件位于: 这些文件位于:
Line 156: Line 172:
   * 方块烘焙模型:''src/main/resources/assets/tutorial/models/block/example_block.json''   * 方块烘焙模型:''src/main/resources/assets/tutorial/models/block/example_block.json''
   * 方块纹理:''src/main/resources/assets/tutorial/textures/block/example_block.png''   * 方块纹理:''src/main/resources/assets/tutorial/textures/block/example_block.png''
-  * //1.21.及之前的版本://物品模型:''src/main/resources/assets/tutorial/models/item/example_block.json'' +  * //1.21.及之前的版本://物品模型:''src/main/resources/assets/tutorial/models/item/example_block.json'' 
-  * //1.21.及之后的版本://物品模型映射:''src/main/resources/assets/tutorial/items/example_block.json''+  * //1.21.及之后的版本://物品模型映射:''src/main/resources/assets/tutorial/items/example_block.json''
  
-方块状态映射会根据其方块状态确定该方块应使用的模型。由于方块当前还没有所谓状态,所以用空字符串表示所有:+方块状态映射会根据其方块状态确定该方块应使用的模型。由于方块没有属性,只有一个状态,所以用空字符串表示所有:
  
 <code JavaScript src/main/resources/assets/tutorial/blockstates/example_block.json> <code JavaScript src/main/resources/assets/tutorial/blockstates/example_block.json>
Line 182: Line 198:
 在大多数情况下,您想让方块作为物品时外观还是这个方块。 在大多数情况下,您想让方块作为物品时外观还是这个方块。
  
-对于 1.21.以及之前的版本,可以为物品创建对应的物品模型,该物品模型直接继承方块模型,这会使得该物品外观和方块相同:+对于 1.21.以及之前的版本,可以为物品创建对应的物品模型,该物品模型直接继承方块模型,这会使得该物品外观和方块相同:
  
 <code JavaScript src/main/resources/assets/tutorial/models/item/example_block.json> <code JavaScript src/main/resources/assets/tutorial/models/item/example_block.json>
Line 190: Line 206:
 </code> </code>
  
-对于 1.21.以及之后的版本,可以为物品创建对应的物品模型映射,让物品直接使用方块的模型:+对于 1.21.以及之后的版本,可以为物品创建对应的物品模型映射,让物品直接使用方块的模型:
 <code JavaScript src/main/resources/assets/tutorial/items/example_block.json> <code JavaScript src/main/resources/assets/tutorial/items/example_block.json>
 { {
Line 334: Line 350:
   *    * 
 ===== 下一步 ===== ===== 下一步 =====
-[[zh_cn:tutorial:blockstate|向方块添加简单状态,例如整数和布尔值]]。 +  * [[blockstate|向方块添加简单状态,例如整数和布尔值]]。 
- +  [[blockentity|给块方块实体,使之能有物品栏之类的高级状态]]。此外,还需要像 GUI 和自定义方块渲染。 
-[[zh_cn:tutorial:blockentity|给块方块实体,使之能有物品栏之类的高级状态]]。此外,还需要像 GUI 和自定义方块渲染。+  * [[datagen_model|使用数据生成器为方块和物品生成方块模型、方块状态映射、物品模型映射]]。 
 +  * [[datagen_tags|使用数据生成器为方块生成标签]]。 
 +  * 别忘了,你的方块不能够没有[[lang|可翻译的名字]]
  
 要让方块可燃(也就是说,可以被火燃烧),可使用 ''FlammableBlockRegistry'' 要让方块可燃(也就是说,可以被火燃烧),可使用 ''FlammableBlockRegistry''
zh_cn/tutorial/blocks.1743496852.txt.gz · Last modified: 2025/04/01 08:40 by solidblock