1.15.2 forge 如何渲染透明方块?


查询得到1.13.2可以public BlockRenderLayer getRenderLayer() 用该函数控制,但是新的版本中这个函数消失了。



在你model的json文件中,输入下列代码:

{
  "parent": "block/block",
  "textures": {
    "wool": "你mod的名字:block/物品的注册名字"
  }
}


缺点是在物品栏里面也是显示透明的,但是这个是最简单的方法了,那些比较好的方法我正在测试。



这个wool控制的是什么?就是透明度?


FledgeXu


markdown 有贴代码的语法的,你可以学一下。我已经帮你改好了。



原来是“parent”:“block/carpet”,但是把carpet改为block就显示透明了。
另外还有一步,在你的方块的class文件中加入下面的代码(不知道是不是必须的):
protected static final VoxelShape SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D);

public  VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
    return SHAPE;
}


{
"parent": "block/cube_all",
"textures": {
    "wool": "rocket_mod:wall_block",
    "all": "rocket_mod:block/wall_block",
    "up": "rocket_mod:block/wall_block_up",
    "down": "rocket_mod:block/wall_block_down",
    "particle": "#all"
},
"elements": [
    {   "from": [ 0, 0, 0 ],
        "to": [ 16, 16, 16 ],
        "faces": {
            "down":  { "uv": [ 0, 0, 16, 16 ], "texture": "#down", "tintindex": 1, "cullface": "down" },
            "up":    { "uv": [ 0, 0, 16, 16 ], "texture": "#up", "tintindex": 2, "cullface": "up" },
            "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#all", "tintindex": 3, "cullface": "north" },
            "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#all", "tintindex": 4, "cullface": "south" },
            "west":  { "uv": [ 0, 0, 16, 16 ], "texture": "#all", "tintindex": 5, "cullface": "west" },
            "east":  { "uv": [ 0, 0, 16, 16 ], "texture": "#all", "tintindex": 6, "cullface": "east" }
        }
    }
]

}
这个是我的模型文件,这个方法暂时没有用



如果单纯地想透明的话,直接按照我的来就得了,不用添加其他的代码。



我想同时添加染色效果,会不会是染色的代码覆盖了?现在透明的地方全部显示黑色



    @OnlyIn(Dist.CLIENT)
public class CustomBlockColor implements IBlockColor {
    @Override
    public int getColor(BlockState state, @Nullable ILightReader light, @Nullable BlockPos pos, int tintIndex) {
        if(state.getBlock() instanceof ColorBlock) {
            return ((ColorBlock)(state.getBlock())).getColorValue();
        } else {
            return 0x000000;
        }
    }
}


我正在尝试把model/block里面的代码再复制到model/item的文件里面,然后model/block里面只留{},不知道有没有效果。




这个是效果



我期望的效果可能类似玻璃,这个是渲染错误



你可以用 Photoshop 将你图片中想要透明的部分用橡皮擦清除就可以了,Windows自带的画图功能无法制造透明图片的效果。


FledgeXu


你们有没有修改方块的渲染方式。
这里有篇关于Render的文章。



我用的是photoshop



看一下有关玻璃的Java代码,还有models/block里面的写法,看看需要加入或改动什么。


Snownee


RenderTypeLookup.setRenderLayer(block, type);

system


该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。