User Tools

Site Tools


zh_cn:tutorial:blockappearance

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
zh_cn:tutorial:blockappearance [2023/11/18 08:40] – [使方块透明] solidblockzh_cn:tutorial:blockappearance [2024/08/27 04:22] (current) solidblock
Line 1: Line 1:
 ====== 操纵方块的外观 ====== ====== 操纵方块的外观 ======
-//这是教程的 1.15+ (对 1.16、1.17、1.18 和 1.19 也适用)版本。如需1.14版本,请参考[[zh_cn:tutorial:1.14:blockappearance|操纵方块的外观(1.14)]]。// +//这是教程的 1.15+ 版本。如需 1.14 版本,请参考[[tutorial:1.14:blockappearance|操纵方块的外观(1.14)(英文)]]。// 
-===== 使方块透明 ===== +===== 使方块透明或半透明 ===== 
-可能已经注意到,即使方块的材质是透明的,它仍然看起来是不透明的。如需解决,请将方块的渲染层设为 cutout 或 transparent。+可能已经注意到,即使方块的纹理透明或半透明的,看起来是不透明的。如需解决,请将方块的渲染层设为 cutout 或 transparent。
  
 在[[zh_cn:documentation:entrypoint|客户端模组初始化器]]中,添加: 在[[zh_cn:documentation:entrypoint|客户端模组初始化器]]中,添加:
Line 9: Line 9:
 public class ExampleModClient implements ClientModInitializer() { public class ExampleModClient implements ClientModInitializer() {
     public void onInitializeClient() {     public void onInitializeClient() {
-         BlockRenderLayerMap.INSTANCE.putBlock(ExampleMod.MY_BLOCK, class_1921.method_23581()); +        // 如果方块一些部分是透明的(例如玻璃、树苗、门): 
-         // 如果半透明纹理,可以将`class_1921.method_23581()` 替换为 `class_1921.method_23583()`。+        BlockRenderLayerMap.INSTANCE.putBlock(TutorialBlocks.MY_BLOCK, class_1921.method_23581()); 
 +         
 +        // 如果方块一些部分是半透明的(例如冰、染色玻璃、传送门): 
 +        BlockRenderLayerMap.INSTANCE.putBlock(TutorialBlocks.MY_BLOCK, class_1921.method_23583());
     }     }
 } }
 </yarncode> </yarncode>
  
-您可能还想使方块透明。为此,可在方块设置中使用 ''<yarn method_22488>'' 方法。+您可能还想使方块非不透明。为此,可在方块设置中使用 ''<yarn method_22488>'' 方法,这也会使方块内部也渲染 
 <yarncode java> <yarncode java>
-     public static final Block MY_BLOCK = new Block(FabricBlockSettings.create().method_22488());+     public static final Block MY_BLOCK = new Block(AbstractBlock.Settings.create().method_22488());
 </yarncode> </yarncode>
 +
 如果你不像这样把方块标记为非不透明的,则方块后面的面不会渲染,你将会“看穿”整个世界(到虚空或渲染范围之外之类的)。 如果你不像这样把方块标记为非不透明的,则方块后面的面不会渲染,你将会“看穿”整个世界(到虚空或渲染范围之外之类的)。
  
-确保在 ''fabric.mod.json'' 中添加了客户端入口点,你可以这样做: +确保在 [[documentation:fabric_mod_json|fabric.mod.json]] 中添加了客户端入口点,你可以这样做: 
-<code json>+<code javascript> 
 +
 +  [...]
   "entrypoints": {   "entrypoints": {
     "main": [     "main": [
-      "mod.fabricmc.examplemod.ExampleMod"+      "net.fabricmc.example.ExampleMod"
     ],     ],
     "client": [     "client": [
-      "mod.fabricmc.examplemod.ExampleModClient"+      "net.fabricmc.example.ExampleModClient"
     ]     ]
   },   },
 +  [...]
 +}
 </code> </code>
 注意:对于不透明但不完整的方块,你可能需要覆盖 ''<yarn method_9530>'' 方法并返回非完整的图形,以避免看穿整个世界。 注意:对于不透明但不完整的方块,你可能需要覆盖 ''<yarn method_9530>'' 方法并返回非完整的图形,以避免看穿整个世界。
Line 43: Line 52:
 </yarncode> </yarncode>
  
-然后,我们需要通过使其 ''outlineShape'' 不存在使我们的方块不能被选中。因此,覆盖 ''<yarn method_9530>'' 并返回一个空的 ''<yarn class_265>''+然后,我们需要通过使其形状不存在,从而使方块不能被选中。因此,覆盖 ''<yarn method_9530>'' 并返回一个空的 ''<yarn class_265>''
  
 <yarncode java> <yarncode java>
zh_cn/tutorial/blockappearance.1700296824.txt.gz · Last modified: 2023/11/18 08:40 by solidblock