Skip to content

FurnitureBreakEvent prevents manual furniture removal when cancelled #5221

@souofrancisco

Description

@souofrancisco

Terms

  • I'm using the very latest version of ItemsAdder and its dependencies.
  • I am sure this is a bug and it is not caused by a misconfiguration or by another plugin.
  • I've looked for already existing issues on the Issue Tracker and haven't found any.
  • I already searched on the plugin wiki to know if a solution is already known.
  • I searched the #itemsadder-forum channel on Discord for similar issues.
  • I tested that this issue persists on a bare-minimum Server as described in #4187.

Discord Username (optional)

yuzinho

What happened?

I am trying to implement a custom drop system using FurnitureBreakEvent. To prevent the default ItemsAdder item from dropping, I cancel the event and manually call CustomFurniture.remove().

However, when event.setCancelled(true) is called, the furniture.remove() or CustomFurniture.remove() method seems to be ignored or blocked, resulting in the furniture remaining in the world while the custom drop is still spawned.

The furniture should be removed from the world manually even if the break event itself is cancelled (to prevent default drops).

Steps to reproduce the issue

Listen to FurnitureBreakEvent.
Call event.setCancelled(true).
Call event.getFurniture().remove(false) or CustomFurniture.remove(entity, false).
Observe that the furniture entity/block does not disappear from the world.

Server version

This server is running Paper version 1.21.10-130-ver/1.21.10@8043efd (2026-01-04T21:00:59Z) (Implementing API version 1.21.10-R0.1-SNAPSHOT)

ItemsAdder Version

ItemsAdder version 4.0.15

ProtocolLib Version

ProtocolLib version 5.4.1-SNAPSHOT-f606cc9

Full Server Log

https://mclo.gs/CuXoa2N

Error (optional)

Problematic items yml configuration file (optional)

Other files, you can drag and drop them here to upload. (optional)

@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBreak(FurnitureBreakEvent event) {
    event.setCancelled(true);
    
    // This call seems to be ignored because the event is cancelled
    CustomFurniture.remove(event.getFurniture().getEntity(), false);
    
    // Custom drop logic here
    loc.getWorld().dropItemNaturally(loc, myCustomItem);
}

Screenshots/Videos (you can drag and drop files or paste links)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Seen

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions