Skip to content

Add compatibility for magnetic#6

Open
btwonion wants to merge 3 commits intoZetaPlugins:mainfrom
btwonion:magnetic-compatibility
Open

Add compatibility for magnetic#6
btwonion wants to merge 3 commits intoZetaPlugins:mainfrom
btwonion:magnetic-compatibility

Conversation

@btwonion
Copy link
Copy Markdown

@btwonion btwonion commented Dec 5, 2025

Changes Block#breakNaturally function call to Player#breakBlock where a player is available. This adds the ability for other plugins to tinker with the breaking logic, in my case the item dropping.

@KartoffelChipss
Copy link
Copy Markdown
Member

It seems like the player#breakBlock() method applies damage for every block broken by the plugin (additionally to the damage manually applied by the plugin).
And it seems to somehow break the break animation: https://share.cleanshot.com/jtpPPlzr

@KartoffelChipss
Copy link
Copy Markdown
Member

I've looked at your plugin and I was thinking that maybe it would be a better approach to make TimberZ fire a cancellable event right before cutting down a tree that contains all the information about which blocks will be broken and what durability cost etc will be.

@btwonion
Copy link
Copy Markdown
Author

btwonion commented Dec 7, 2025

This would be a valid option as well, yes.
I didn't realize the animation was broken before.. so this may be the only valid choice.

@btwonion
Copy link
Copy Markdown
Author

btwonion commented Dec 7, 2025

We might as well use my DropEvent. This way the compatibility is added as well.
If you want to add a way for other plugins as well, your way is better.

@btwonion
Copy link
Copy Markdown
Author

btwonion commented Dec 8, 2025

If you are fine with my event being implemented, I will edit this PR.

@KartoffelChipss
Copy link
Copy Markdown
Member

KartoffelChipss commented Dec 28, 2025

If you are fine with my event being implemented, I will edit this PR.

I'm fine with that. And sorry for the late reply.

@btwonion btwonion marked this pull request as draft January 11, 2026 13:42
@btwonion btwonion force-pushed the magnetic-compatibility branch from c1de72a to e2df349 Compare February 11, 2026 11:13
@btwonion btwonion changed the title Call BlockBreakEvent on block break Add compatibility for magnetic Feb 11, 2026
@btwonion btwonion marked this pull request as ready for review February 11, 2026 11:14
@btwonion
Copy link
Copy Markdown
Author

I've created a BreakingHelper that handles the drops depending on whether magnetic is present or not. The animation works just fine now, at least as far as I could determine myself.

@btwonion btwonion linked an issue Feb 11, 2026 that may be closed by this pull request
@btwonion
Copy link
Copy Markdown
Author

@KartoffelChipss are there any issues that have to be resolved before merging?

@KartoffelChipss
Copy link
Copy Markdown
Member

Did you test it with the magnetic plugin enabled?

In 1.21.4 I get this exception (it seems the older version of your plugin is not compatible):

[10:17:06 WARN]: [TimberZ] Task #66 for TimberZ v1.3.0 generated an exception
java.lang.NoClassDefFoundError: dev/nyon/magnetic/DropEvent
	at TimberZ-1.3.0-1.21.4.jar/com.zetaplugins.timberz.service.magnetic.BreakingHelper.breakBlock(BreakingHelper.java:22) ~[TimberZ-1.3.0-1.21.4.jar:?]
	at TimberZ-1.3.0-1.21.4.jar/com.zetaplugins.timberz.service.TreeFellerService$1.run(TreeFellerService.java:183) ~[TimberZ-1.3.0-1.21.4.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1659) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1529) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1251) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassNotFoundException: dev.nyon.magnetic.DropEvent
	... 9 more

in 1.21.9 I get this exception:

[10:21:10 ERROR]: Could not pass event DropEvent to magnetic v3.10.0-1.21.6+paper
java.lang.UnsupportedOperationException: null
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[?:?]
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeIf(ImmutableCollections.java:152) ~[?:?]
	at magnetic-3.10.0-1.21.6+paper.jar/dev.nyon.magnetic.Listeners$special$$inlined$listen$default$1.onEvent(Listeners.kt:19) ~[magnetic-3.10.0-1.21.6+paper.jar:?]
	at magnetic-3.10.0-1.21.6+paper.jar/dev.nyon.magnetic.Listeners$special$$inlined$listen$default$2.execute(Listeners.kt:22) ~[magnetic-3.10.0-1.21.6+paper.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.event.Event.callEvent(Event.java:46) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.magnetic.BreakingHelper.breakBlock(BreakingHelper.java:23) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.TreeFellerService$1.run(TreeFellerService.java:183) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1701) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:353) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

@btwonion
Copy link
Copy Markdown
Author

On the 1.21.4 the compatibility will not work as you mentioned. I introduced the DropEvent in a later version and will most likely not backport.
I will see to the error on 1.21.9 in the following days.

@btwonion
Copy link
Copy Markdown
Author

The issue is fixed with e258e5d. I wonder how this worked for me in the first place 😅

@KartoffelChipss
Copy link
Copy Markdown
Member

CleanShot 2026-03-02 at 15 37 17
[15:36:58 ERROR]: Could not pass event DropEvent to magnetic v3.11.0-1.21.6+paper
java.lang.UnsupportedOperationException: null
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[?:?]
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeIf(ImmutableCollections.java:152) ~[?:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$1.onEvent(Listeners.kt:19) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$2.execute(Listeners.kt:22) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.event.Event.callEvent(Event.java:46) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.magnetic.BreakingHelper.breakBlock(BreakingHelper.java:23) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.TreeFellerService$1.run(TreeFellerService.java:183) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1701) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:353) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[15:36:58 ERROR]: Could not pass event DropEvent to magnetic v3.11.0-1.21.6+paper
java.lang.UnsupportedOperationException: null
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[?:?]
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeIf(ImmutableCollections.java:152) ~[?:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$1.onEvent(Listeners.kt:19) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$2.execute(Listeners.kt:22) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.event.Event.callEvent(Event.java:46) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.magnetic.BreakingHelper.breakBlock(BreakingHelper.java:23) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.TreeFellerService$1.run(TreeFellerService.java:183) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1701) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:353) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[15:36:59 ERROR]: Could not pass event DropEvent to magnetic v3.11.0-1.21.6+paper
java.lang.UnsupportedOperationException: null
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) ~[?:?]
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeIf(ImmutableCollections.java:152) ~[?:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$1.onEvent(Listeners.kt:19) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at magnetic-3.11.0-1.21.6+paper.jar/dev.nyon.magnetic.listeners.DropEventListener$special$$inlined$listen$default$2.execute(Listeners.kt:22) ~[magnetic-3.11.0-1.21.6+paper.jar:?]
	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:71) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.event.Event.callEvent(Event.java:46) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.magnetic.BreakingHelper.breakBlock(BreakingHelper.java:23) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at TimberZ-1.3.0-1.21.9.jar/com.zetaplugins.timberz.service.TreeFellerService$1.run(TreeFellerService.java:183) ~[TimberZ-1.3.0-1.21.9.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1701) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:430) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1295) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:353) ~[paper-1.21.9.jar:1.21.9-59-0ff899d]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

Seems like it's still happening?

@btwonion
Copy link
Copy Markdown
Author

btwonion commented Mar 2, 2026

It does not. Did you recompile your plugin?

@btwonion
Copy link
Copy Markdown
Author

Hi,
did you have the time to look into it again?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

compat: paper: add TimberZ

2 participants