> For the complete documentation index, see [llms.txt](https://ae.advancedplugins.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ae.advancedplugins.net/for-developers/plugin-compatiblity-issues.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
