Hey everyone,
Freshly coming back to Minecraft modding a few days ago, I decided to start from the basics and so creating a new transparent block, much like a glass block but with 0 opacity.
The block itself is transparent but I found an unexpected behaviour (aswell I think it is) : when placed next to or on top of another block, this new transparent block does act as x-ray mods : when no other block underneath it has been mined, you can clearly see the far-away lava for example. It seems also that if any block has been changed or visualized within that view then this block does appear in that x-ray vision.
I did follow some of the tutorials I could find online about 1.17, custom block and transparency, but I could not find a solution to this. In case other mods could have been involved in this, I remove them all, server-side and client-side but to no effet. The definition of the new block is quite simple (actually a Block) :
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExampleMod.MOD_ID);
public static final RegistryObject<BlockItem> INVISIBLE_BLOCK = ITEMS.register("invisible_block", () -> new BlockItem(BlockInit.INVISIBLE_BLOCK.get(), new Item.Properties().tab(CreativeModeTab.TAB_BUILDING_BLOCKS)));
//...
public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, ExampleMod.MOD_ID);
public static final RegistryObject<InvisibleBlock> INVISIBLE_BLOCK = BLOCKS.register("invisible_block", () -> new InvisibleBlock(Block.Properties.of(Material.STONE, MaterialColor.COLOR_BLUE).explosionResistance(99F)));
//...
public class InvisibleBlock extends Block {
public InvisibleBlock(Properties properties) {
super(properties);
}
}
so is the model and textures :
{
"parent": "block/cube_all",
"textures": {
"all": "examplemod:blocks/invisible_block"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [0, 0, 16, 16], "texture": "#all"},
"east": {"uv": [0, 0, 16, 16], "texture": "#all"},
"south": {"uv": [0, 0, 16, 16], "texture": "#all"},
"west": {"uv": [0, 0, 16, 16], "texture": "#all"},
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#all"},
"down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#all"}
}
}
],
"groups": [
{
"name": "VoxelShapes",
"origin": [8, 8, 8],
"color": 0,
"children": [0]
}
]
}
with texture "invisible_block" being a PNG with 4 blue dots on a huge transparent background. I've read that there is a need to address transparency client-wise so I do have a listener setting render type :
@Mod.EventBusSubscriber(modid = ExampleMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public class ClientModEvent {
private ClientModEvent() {
}
@SubscribeEvent
public static void clientSetup(FMLClientSetupEvent event) {
ItemBlockRenderTypes.setRenderLayer(BlockInit.INVISIBLE_BLOCK.get(), RenderType.translucent());
}
}
I've tried some changes from translucent to cutout but it does not solve the problem.
Does someone has any idea on why this happen and how could I solve it please ?
Thanks you in advance for your time and your help,
Cheers
Cr3aHal0