Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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?

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

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)

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.