Jump to content

Changing Light Level, without changing the BlockID.


froschi3b

Recommended Posts

Hello everyone,

I lastly tried to make my mod with some custom furnaces into 1 BlockId. Everything works fine for now except for changing the light level.

I tried it with a MinecraftForge method already:

    public int getLightValue(IBlockAccess world,int  x,int y,int z){
    	TileEntityBFurnace tebf=(TileEntityBFurnace) world.getBlockTileEntity( x, y, z);
    	if (tebf!=null){
        	if (tebf.isActive){
        		return 14;
        	}
    	}
    	return 0;
    }

 

But it doesn't make light at all...

I tried to add a System.out.println() to show me if there'S no tileEntity, and then I get a ton of text saying there is not even a TileEntity there.

 

So, now I am totally confused.

Please help me, by telling me either how to do it, or how this method is supposed to be used.

Thanks, froschi3b

Link to comment
Share on other sites

I now got it to work by adding 1 method and updating the light renderer:

public int getLightValue(IBlockAccess world,int  x,int y,int z){
    	TileEntityBFurnace tebf=getTileEntityaround(world,x,y,z);
    	if (tebf!=null){
        	if (tebf.isActive){
        		return 14;
        	}
    	}
    	return 0;
    }
    /**
     * Returns one of the TileEntityBFurnace around it.
     * Args: IBlockAccess,x,y,z
     */
    private TileEntityBFurnace getTileEntityaround(IBlockAccess world,int  x,int y,int z){
    	TileEntity te[]={world.getBlockTileEntity(x, y, z)
    			,world.getBlockTileEntity(x+1, y, z)
    			,world.getBlockTileEntity(x-1, y, z)
    			,world.getBlockTileEntity(x, y+1, z)
    			,world.getBlockTileEntity(x, y-1, z)
    			,world.getBlockTileEntity(x, y, z+1)
    			,world.getBlockTileEntity(x, y, z-1)};
    	int i=0;
    	while(i<te.length){
        	if ((te[i]!=null) && (te[i] instanceof TileEntityBFurnace)){
        		return (TileEntityBFurnace) te[i];
        	}
        	i++;
        }
    	return null;
    }

in my Block file, because you have to tell the light level to the blocks around it too,

and then called

this.worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);

in my TileEntity on activation and deactivation

 

Just so everyone knows who wants to make a similar thing :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.