# Plugin Compatiblity issues

## Multiple Blocks Break / Performance on block break

The most common issue is two plugins calling new BlockBreakEvents in loop and both breaking the blocks.

With Auxilor plugins (Eco plugins) and Veinminer plugin author Choco we have decided to mark blocks which are involved in these operations with same metadata. If your plugin also calls events and breaks blocks, you might need to check this metadata and ignore the block event if present

The metadata is `blockbreakevent-ignore`

You can also check for these blocks using AEAPI method

```java
AEAPI.ignoreBlockEvent(block);
```

## TP\_DROPS duplicating drops to multiple inventories

This issue occurs when two or more plugins handle adding the drop to some inventory. You can stop us from adding the drops to player inventory by flagging the block with any metadata and adding this metadata in our config.yml

```yaml
  # Will ignore items drops from blocks with the following meta. Their drops will be ignored and won't be handled by us.
  # No need to add anything here unless you have compatibility issues with other plugins producing multiple drops.
  # https://ae.advancedplugins.net/for-developers/plugin-compatiblity-issues#tp_drops-duplicating-drops-to-multiple-inventories
  ignored-metadata-block-drops:
    - "some-random-metadata"
```

Or by using our API method inside AEAPI class

```java
AEAPI.addIgnoreBlockWithMeta("some-random-metadata");
```

Then on BlockBreakEvent, you need to set the metadata before us. We are currently running our checks on priority `HIGH`, so anything lower than that will work.

```java
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
private void onBlockBreak(BlockBreakEvent event) {
    event.getBlock().setMetadata("some-random-metadata", new FixedMetadataValue(EffectsHandler.getInstance(), true));
}
```

To avoid memory leaks, after you are done with the block, remove the metadata

```java
block.removeMetadata("some-random-metadata", plugin);
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ae.advancedplugins.net/for-developers/plugin-compatiblity-issues.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
