Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

DonutPixel

Members
  • Content Count

    4
  • Joined

  • Last visited

Posts posted by DonutPixel

  1. If anyone was curious; I ended up actually finding source code for ExtraUtilities and found that the original developer was manually setting the opacity of the block to 255. That was done in 1.12.2, so the translation is a little different for 1.16.2. Anyways, I'd be mad if I came across this post as solved without an answer, so here's a detailed answer/explanation:

     

    To make a block see-through, but not let light through, you must override the getOpacity method and make it return 255. This makes the block "opaque," while still allowing the player to see through.

     

    To solve rendering culling issues, you must also override the isSideInvisible method, and make it return true only if the adjacentBlockState matches this block's state. 

     

    In code, the following two overrides look like this:

    @Override
    public boolean isSideInvisible(BlockState state, BlockState adjacentBlockState, direction side) {
    	// if the adjacentBlock is this block, side should be invisible. else, false
    	return adjacentBlockState.isIn(this) ? true : false;
    }
    
    @Override
    public int getOpacity(BlockState state, IBlockReader worldIn, BlockPos pos) {
    	// NOTE: I'm not sure if this really has to be 255, or if there's a lower value at which this blocks all light.
    	return 255;
    }

    Additionally, in the creation of the Block's properties, you should tack .notSolid() onto the list.

  2. 8 hours ago, ChampionAsh5357 said:

    You can override certain methods to disable light passthrough. Specifically, setting Block#propagatesSkylightDown to false will disable light passing through the block iirc.

    None that I would recommend. You can still use old tutorials like those of McJty with a little bit of care, but most of them should still be relevant. You can read this to get a small rundown of some changes:

     

    That guide is fantastic; thanks for the link!

    2 hours ago, TheGreyGhost said:

    Howdy

     

    That might be tricky depending on what you're trying to achieve; it will make blocks under your glass appear dark?

     

    It will probably help to dig through the vanilla code for notSolid and the vanilla calculations for light propagation, with any luck you will find a combination of properties that achieves what you want without messing up rendering effects like ambient occlusion or the rendering culling (the "see through portal" effect you discovered).

     

    AbstractGlassBlock is a good place to start, glass already reduces the light passing through it by a certain amount (like water as well, from memory) so that may be a further clue.

     

    Re tutorials-

    You might find this tutorial project (working examples) useful; it's currently at 1.16.4

    https://github.com/TheGreyGhost/MinecraftByExample

    http://greyminecraftcoder.blogspot.com/2020/05/minecraft-by-example.html

     

    -TGG 

     

     

     

     

     

     

     

     

     

    I actually found your project a little earlier this morning; great stuff!

     

  3. I'm a developer by trade but just recently picked up Java/Minecraft Modding, so I'm still relatively new to this.

     

    I'm trying to replicate the Dark Glass block from the Extra Utilities mod. I have the block rendering in the game, however, when placed, all adjacent blocks are missing their textures and show a gap in the world. This can be fixed by adding

    .notSolid()

    to the properties of the block, but at that point, the block lets light through. My desired effect is to have a translucent block (think stained glass but darker) that you can see through, but that doesn't let light through. 

    Here's my code for the Block's class:

    public class DarkGlassBlock extends Block {
        public DarkGlassBlock() {
            super(Properties.create(Material.GLASS)
                    .hardnessAndResistance(1.0f, 50.0f)
                    .sound(SoundType.GLASS)
                    .harvestLevel(1)
                    .harvestTool(ToolType.PICKAXE));
        }
    }

    And code to set the Render Layer to Translucent (in my FMLClientSetupEvent method):

    RenderTypeLookup.setRenderLayer(RegistryHandler.DARK_GLASS_BLOCK.get(), RenderType.getTranslucent());

    I also attached a screenshot that better demonstrates the issue.

     

    Thanks in advance!

    Side note -- Does anybody know of any updated tutorials for mod development? A lot of resources that seem great appear to be outdated for 1.16 development. 

    Screenshot 2020-11-27 210516.png

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.