Jump to content

[1.15.2] Getting a block's color for minimap


FlashHUN

Recommended Posts

I looked at how a filled map item gets block colors, tried something similar, but I've ran into a couple of issues.

My code:

private MaterialColor getBlockColorAt(int x, int z) {
	Chunk chunk = client.world.getChunkAt(new BlockPos(x, 0, z));
	int y = chunk.getTopBlockY(Heightmap.Type.WORLD_SURFACE, x, z);
	BlockPos pos = new BlockPos(x, y, z);
	return client.world.getBlockState(pos).getMaterialColor(client.world.getBlockReader(chunk.getPos().x, chunk.getPos().z), pos);
}

Issues:
BlockState#getMaterialColor is deprecated and I can't find any alternatives to use

y always returns -1

 

What am I doing wrong? What do I need to do to get a block's color at a specific position?

Link to comment
Share on other sites

Howdy

based on FilledMapItem::updateMapData and BlockColors::getColorOrMaterialColor, I think you should just use World and not mess with Chunk.

It's ok to call BlockState::getMaterialColor.  Don't worry too much about the @deprecated, they are sprinkled throughout the code and usually don't actually mean anything relevant (sometimes they are suggesting a more-flexible alternative but it's nearly always fine to ignore them.)

 

Cheers

   TGG

Link to comment
Share on other sites

On 4/10/2020 at 6:49 PM, diesieben07 said:

Mojang uses these to signify that these methods shouldn't be called, but overriding them is fine.

In the case of BlockState#getMaterialColor however it seems to be a wrongly ported Forge patch.

Yeah I think you're right about BlockState#getMaterialColor.   But I had assumed that the @deprecated are put there by MCP not by Mojang?  Do annotations survive the obfuscation process? (Given that I've never seen any vanilla code using reflection)

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.