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'm trying to add new copper blocks and am working on waxing them right now.

As I couldn't figure out how to add my new items to the BiMap in the Vannilla Honeycomb class, I'm now using PlayerInteractEvent.RightClickBlock, to:

1. Check if the player is holding honeycomb

2. Check if the clicked block is a new copper block

3. Replace new copper block with waxed version.

Step 1 and 2 work fine, but I can't get step 3 to work.
Right now I'm trying to use Level.setBlock(), but as the event is static, I can only use Minecraft.getInstance().Level.setBlock(), where the change is only made for a fraction of a second.

If anyone has an idea how to fix this, or if this is a different problem entirely, any help is appreciated.

Duplicate post:

https://forums.minecraftforge.net/topic/125931-need-help-modifying-a-vanilla-item/#comment-542688

 

As explained there, you should do your processing in Block.use() which passes you the Level.

 

You should never use client classes like the "Minecraft" class in code that can be called on the server. You will crash the game.

 

To make a change to the game state you need to modify the state on the server.

Modifying it only on the client will just create a "ghost block" that will vanish the next time threre is a chunk update from the server.

If you follow what vanilla does in HoneycombItem.useOn(), it modifies the state on both the client and server which improves responsiveness.

Technically only changes on the server are required, provided to you set the Block.UPDATE_CLIENTS mask in the flags passed to setBlock() - or just use Level.setBlockAndUpdate() instead.

 

NOTE: If you don't want your questions to be ignored, you need to provide a simple build that reproduces your problem.

Code snippets out of context or English descriptions of your code usually provide little to no information.

Most people will not waste their time asking you for more information.

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

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.