Skip to content

Error on /arena leave (Set health?) #167

@Kainzo

Description

@Kainzo

[10:28:35] [Server thread/INFO]: Kainz0 issued server command: /arena leave
[10:28:35] [Server thread/WARN]: [BattleArena] An error occurred calling event action org.battleplugins.arena.event.action.types.RestoreAction@51287993
java.lang.IllegalArgumentException: Health value (2936.0) must be between 0 and 2910.0. (attribute base value: 2910.0, player: Kainz0)
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:482) ~[guava-32.1.2-jre.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:107) ~[paper-1.20.4.jar:git-Paper-499]
at org.battleplugins.arena.competition.PlayerStorage.restoreHealth(PlayerStorage.java:215) ~[BattleArena.jar:?]
at org.battleplugins.arena.competition.PlayerStorage.restoreAll(PlayerStorage.java:185) ~[BattleArena.jar:?]
at org.battleplugins.arena.competition.PlayerStorage$Type.restore(PlayerStorage.java:337) ~[BattleArena.jar:?]
at org.battleplugins.arena.competition.PlayerStorage.restore(PlayerStorage.java:165) ~[BattleArena.jar:?]
at org.battleplugins.arena.event.action.types.RestoreAction.call(RestoreAction.java:27) ~[BattleArena.jar:?]
at org.battleplugins.arena.event.ArenaEventManager.pollActions(ArenaEventManager.java:178) ~[BattleArena.jar:?]
at org.battleplugins.arena.event.ArenaEventManager.callEvent(ArenaEventManager.java:151) ~[BattleArena.jar:?]
at org.battleplugins.arena.competition.LiveCompetition.leave(LiveCompetition.java:279) ~[BattleArena.jar:?]
at org.battleplugins.arena.competition.LiveCompetition.leave(LiveCompetition.java:263) ~[BattleArena.jar:?]
at org.battleplugins.arena.command.ArenaCommandExecutor.leave(ArenaCommandExecutor.java:319) ~[BattleArena.jar:?]
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at org.battleplugins.arena.command.BaseCommandExecutor.invokeCommand(BaseCommandExecutor.java:289) ~[BattleArena.jar:?]
at org.battleplugins.arena.command.BaseCommandExecutor.runCommand(BaseCommandExecutor.java:272) ~[BattleArena.jar:?]
at org.battleplugins.arena.command.BaseCommandExecutor.onCommand(BaseCommandExecutor.java:102) ~[BattleArena.jar:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R3.CraftServer.dispatchCommand(CraftServer.java:999) ~[paper-1.20.4.jar:git-Paper-499]
at org.bukkit.craftbukkit.v1_20_R3.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[paper-1.20.4.jar:git-Paper-499]
at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73) ~[brigadier-1.2.9.jar:?]
at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:31) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:19) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.commands.execution.UnboundEntryAction.lambda$bind$0(UnboundEntryAction.java:8) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.commands.execution.CommandQueueEntry.a(CommandQueueEntry.java:5) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.commands.execution.ExecutionContext.runCommandQueue(ExecutionContext.java:103) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.commands.Commands.executeCommandInContext(Commands.java:434) ~[?:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:336) ~[?:?]
at net.minecraft.commands.Commands.performCommand(Commands.java:323) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2230) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$14(ServerGamePacketListenerImpl.java:2190) ~[?:?]
at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1465) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:123) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1442) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1365) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:133) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1343) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1232) ~[paper-1.20.4.jar:git-Paper-499]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-499]
at java.lang.Thread.run(Thread.java:1583) ~[?:?]

How to Fix
This is a plugin bug. The plugin should always clamp the health value to the player's current max health before restoring it.
Workarounds:
Check for plugin updates:
See if there is a newer version of BattleArena that fixes this bug.
Patch the plugin (if you have source or can decompile):
In the method that restores health (PlayerStorage.restoreHealth), add a clamp:
Apply
This ensures the health never exceeds the max.
Temporary mitigation:
If you can’t patch, warn players not to change their max health (via classes, gear, etc.) while in the arena.
Or, set a rule to reset health to max on leave (less ideal, but safe).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions