User Tools

Site Tools


zh_cn:tutorial:custom_model

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:custom_model [2021/08/30 09:54] – [使用自定义模型动态渲染方块和物品] punctuation solidblockzh_cn:tutorial:custom_model [2024/01/02 10:31] (current) – [UnbakedModel方法] solidblock
Line 8: Line 8:
  
 <code java> <code java>
 +@Environment(EnvType.CLIENT)
 public class FourSidedFurnaceModel implements UnbakedModel, BakedModel, FabricBakedModel { public class FourSidedFurnaceModel implements UnbakedModel, BakedModel, FabricBakedModel {
 </code> </code>
Line 20: Line 21:
     };     };
     private Sprite[] SPRITES = new Sprite[2];     private Sprite[] SPRITES = new Sprite[2];
 +
 +    // Some constants to avoid magic numbers, these need to match the SPRITE_IDS
 +    private static final int SPRITE_SIDE = 0;
 +    private static final int SPRITE_TOP = 1;
 </code> </code>
  
Line 53: Line 58:
  
         for(Direction direction : Direction.values()) {         for(Direction direction : Direction.values()) {
-            int spriteIdx = direction == Direction.UP || direction == Direction.DOWN ? 0;+            int spriteIdx = direction == Direction.UP || direction == Direction.DOWN ? SPRITE_TOP SPRITE_SIDE;
             // 将新的面(face)添加到mesh             // 将新的面(face)添加到mesh
             emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f);             emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f);
Line 73: Line 78:
 注意这里不是所有的方法都会被 Fabric Renderer 使用,所以我们并不关心这个实现。 注意这里不是所有的方法都会被 Fabric Renderer 使用,所以我们并不关心这个实现。
 <code java> <code java>
-@Override+    @Override
     public List<BakedQuad> getQuads(BlockState state, Direction face, Random random) {     public List<BakedQuad> getQuads(BlockState state, Direction face, Random random) {
-        return null; // 不需要,因为我们使用的是FabricBakedModel+        return Collections.emptyList(); // 不需要,因为我们使用的是 FabricBakedModel
     }     }
  
Line 99: Line 104:
  
     @Override     @Override
-    public Sprite getSprite() {+    public Sprite getParticleSprite() {
         return SPRITES[1]; // 方块被破坏时产生的颗粒,使用furnace_top         return SPRITES[1]; // 方块被破坏时产生的颗粒,使用furnace_top
     }     }
Line 141: Line 146:
 我们用 ''tutorial:block/four_sided_furnace'' 这个名称注册模型。 我们用 ''tutorial:block/four_sided_furnace'' 这个名称注册模型。
 <code java> <code java>
 +@Environment(EnvType.CLIENT)
 public class TutorialModelProvider implements ModelResourceProvider { public class TutorialModelProvider implements ModelResourceProvider {
     public static final Identifier FOUR_SIDED_FURNACE_MODEL = new Identifier("tutorial:block/four_sided_furnace");     public static final Identifier FOUR_SIDED_FURNACE_MODEL = new Identifier("tutorial:block/four_sided_furnace");
Line 156: Line 162:
 现在我们要将这个类注册到客户端初始化器(仅适用于客户端的代码的入口点)中。 现在我们要将这个类注册到客户端初始化器(仅适用于客户端的代码的入口点)中。
 <code java> <code java>
 +@Environment(EnvType.CLIENT)
 public class ExampleModClient implements ClientModInitializer { public class ExampleModClient implements ClientModInitializer {
     @Override     @Override
Line 248: Line 255:
 更新我们先前创建的 ''ModelResourceProvider'' 更新我们先前创建的 ''ModelResourceProvider''
 <code java> <code java>
 +@Environment(EnvType.CLIENT)
 public class TutorialModelProvider implements ModelResourceProvider { public class TutorialModelProvider implements ModelResourceProvider {
     public static final FourSidedFurnaceModel FOUR_SIDED_FURNACE_MODEL = new FourSidedFurnaceModel();     public static final FourSidedFurnaceModel FOUR_SIDED_FURNACE_MODEL = new FourSidedFurnaceModel();
zh_cn/tutorial/custom_model.1630317254.txt.gz · Last modified: 2021/08/30 09:54 by solidblock