====== 操纵方块的外观 ====== //这是教程的 1.15+ 版本。如需 1.14 版本,请参考[[tutorial:1.14:blockappearance|操纵方块的外观(1.14)(英文)]]。// ===== 使方块透明或半透明 ===== 你可能已经注意到,即使方块的纹理是透明或半透明的,看起来仍是不透明的。如需解决,请将方块的渲染层设为 cutout 或 transparent。 在[[zh_cn:documentation:entrypoint|客户端模组初始化器]]中,添加: @Environment(EnvType.CLIENT) public class ExampleModClient implements ClientModInitializer() { public void onInitializeClient() { // 如果方块一些部分是透明的(例如玻璃、树苗、门): BlockRenderLayerMap.INSTANCE.putBlock(TutorialBlocks.MY_BLOCK, class_1921.method_23581()); // 如果方块一些部分是半透明的(例如冰、染色玻璃、传送门): BlockRenderLayerMap.INSTANCE.putBlock(TutorialBlocks.MY_BLOCK, class_1921.method_23583()); } } 您可能还想使方块非不透明。为此,可在方块设置中使用 '''' 方法,这也会使方块内部也渲染。 public static final Block MY_BLOCK = new Block(AbstractBlock.Settings.create().method_22488()); 如果你不像这样把方块标记为非不透明的,则方块后面的面不会渲染,你将会“看穿”整个世界(到虚空或渲染范围之外之类的)。 确保在 [[documentation:fabric_mod_json|fabric.mod.json]] 中添加了客户端入口点,你可以这样做: { [...] "entrypoints": { "main": [ "net.fabricmc.example.ExampleMod" ], "client": [ "net.fabricmc.example.ExampleModClient" ] }, [...] } 注意:对于不透明但不完整的方块,你可能需要覆盖 '''' 方法并返回非完整的图形,以避免看穿整个世界。 ===== 使方块不可见 ===== 首先,我们需要使该方块看起来不可见。为此,我们在方块类中重写 '''' 并返回 ''.'': @Override public class_2464 method_9604(class_2680 state) { return class_2464.field_11455; } 然后,我们需要通过使其形状不存在,从而使方块不能被选中。因此,覆盖 '''' 并返回一个空的 '''': @Override public class_265 method_9530(class_2680 state, class_1922 blockView, class_2338 pos, class_3726 context) { return class_259.method_1073(); }