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

It's me again. I have the following line in my code.

 

Blocks.log.setHarvestLevel("axe", 1);

 

The idea is that oak and birch trees are harder to mine than other wood logs because in real life they are harder as for example spruce or akacia trees. Therefor I want to add a function that only changes oak and birch logs to a higher harvest level. If you don't have the needed harvest level it drops nothing. That's what happens if you mine stone per hand.

 

The code has two problems:

 

1.) Here I change all wood logs. How do I add the metadata 0 to change only the oak wood? Is that possible without adding a new block to the game?

 

2.) The block is still mineable by hand and a pickaxe seems to be recognized as a valid tool as it breaks the wood faster. How do I change that?

you may be able to use the event

PlayerEvent.BreakSpeed

to achieve what you want

 

something to consider, most of the trees are oak and birch,  so how do you get wood to make an axe , if you cant find any other trees within a few thousand meters (think about large biomes)

 

  • Author

Thank you, I will look at it. There will be some custom trees (Natura/BoP) so the risk is not that bigger than in vanilla minecraft where you can also spawn in a desert with no trees around. But the general idea is to make minecraft a lot harder to play so I do not care about the risk. :-D

  • Author

After searching around I think HarvestDropsEvent might be a better choice as it gives me all needed information.

 

The only question is how do I find out what tool was used?

  • Author

Thank you! I already found it but could not update my post as the forum was somehow unavailable. :-)

  • Author

I don't want to make the block harder. I want it to be unharvestable by hand. This does exactly, what I want:

 

@SubscribeEvent
public void onHarvestDropsEvent(HarvestDropsEvent event)
{
// Oak Wood logs
if(event.block.toString().contains("net.minecraft.block.BlockOldLog") && event.blockMetadata == 0)
{
	// Mined by a player
	if(event.harvester != null)
	{
		// Get the current tool of the player
		if(event.harvester.getCurrentEquippedItem() != null)
		{
			String tool = event.harvester.getCurrentEquippedItem().toString();

			// No TiCo Tools => no oak
			if(!tool.contains("item.InfiTool.Axe") && !tool.contains("item.InfiTool.LumberAxe") && !tool.contains("item.InfiTool.Battleaxe") && !tool.contains("item.InfiTool.Mattock"))
			{
				// Delete all drops
				event.drops.clear();
			}
		}
		else
		{
			// Delete all drops
			event.drops.clear();
		}
	}
}
}

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.