Skip to content

🐛 [BUG] onConsume 在物品处于副手时不会执行动作语句,且会导致报错 #47

@SnowCutieOwO

Description

@SnowCutieOwO

反馈须知

  • 我已详细查阅wiki
  • 我已正确安装相关依赖

服务端类型

Current Purpur Version: 1.21.4-2416-51aafbc (MC: 1.21.4)*
* You are running the latest version

错误描述

如标题,持有 onConsume 物品并在副手消耗时会导致报错,且应有效果不会产生。

错误日志

[16:53:44] [Server thread/WARN]: [AzureFlow] Task #217512 for AzureFlow v1.1.0.1 generated an exception
java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 36
	at java.base/java.util.Arrays$ArrayList.get(Arrays.java:4266) ~[?:?]
	at net.minecraft.core.NonNullList.get(NonNullList.java:44) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at net.minecraft.world.entity.player.Inventory.getItem(Inventory.java:532) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at org.bukkit.craftbukkit.inventory.CraftInventory.getItem(CraftInventory.java:52) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar/io.rokuko.azureflow.features.trigger.provided.inventory.InventorySlotTrigger.handleEvent$lambda$7(InventorySlotTrigger.kt:87) ~[AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar:?]
	at AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar/io.rokuko.azureflow.internal.threads.ThreadsKt.delay$lambda$2(Threads.kt:34) ~[AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar:?]
	at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1705) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1575) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1291) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:313) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

另附:更新插件以后虽然不再触发此类报错,但物品仍然无法触发相应动作。

备注信息

涉及的物品配置:

curePotion.yml

# This file was created by SnowCutieOwO on 2025/11/14 01:29:21.
# Since this function is in the experimental stage, there may be some problems.
# Welcome to feedback in the communication group (832272193) at any time.
# If you have any questions, please refer to the official documentation https://rokuko.gitbook.io/azureflow
display:
  material: POTION
  meta: 0
  name: "&b治疗药水 I &7(4s)"
  lore:
    - "&f消耗后:"
    - "  &a+ 生命再生 V &7(0:04)"
    - "  &c+ 缓慢 III &7(0:03)"
    - ""
    - "&7&oMinecraft 世界中常见的药品。"

action:
  onConsume:
    - 'potion: slow 60 2 true false'
    - 'potion: regeneration 80 4 true false'
    - 'arete-skill-cast: kts/cureSelf'

internal:
  uuid: 0144dc60-535e-45e9-988a-bbe3e70a7f70
  alias: [curePotion]

另另附:诸如 /af give 物品名称 缺少数量或玩家名称的给予方式并未作捕获处理,而是直接传回了一个报错,不过无伤大雅。

[18:51:24 ERROR]: Command exception: /af give curePotion                                                                                                                                                           
org.bukkit.command.CommandException: Unhandled exception executing command 'af' in plugin AzureFlow v1.1.0.1                                                                                                       
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[purpur-api-1.21.4-R0.1-SNAPSHOT.jar:?]                                                                                                
        at io.papermc.paper.command.brigadier.bukkit.BukkitCommandNode$BukkitBrigCommand.run(BukkitCommandNode.java:82) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                   
        at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73) ~[brigadier-1.3.10.jar:?]                                                                                                 
        at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:30) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                          
        at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:13) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                          
        at net.minecraft.commands.execution.UnboundEntryAction.lambda$bind$0(UnboundEntryAction.java:8) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                   
        at net.minecraft.commands.execution.CommandQueueEntry.execute(CommandQueueEntry.java:5) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                           
        at net.minecraft.commands.execution.ExecutionContext.runCommandQueue(ExecutionContext.java:105) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                   
        at net.minecraft.commands.Commands.executeCommandInContext(Commands.java:458) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                     
        at net.minecraft.commands.Commands.performCommand(Commands.java:365) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                              
        at net.minecraft.commands.Commands.performCommand(Commands.java:355) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                              
        at net.minecraft.commands.Commands.performCommand(Commands.java:349) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                              
        at net.minecraft.server.network.ServerGamePacketListenerImpl.performUnsignedChatCommand(ServerGamePacketListenerImpl.java:2295) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                   
        at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$14(ServerGamePacketListenerImpl.java:2268) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                  
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                                            
        at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:155) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                            
        at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                           
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1494) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                      
        at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:176) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                       
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:129) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                             
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1474) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                               
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1468) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                       
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:139) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                         
        at net.minecraft.server.MinecraftServer.managedBlock(MinecraftServer.java:1425) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                   
        at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1433) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                              
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1310) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                      
        at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:313) ~[purpur-1.21.4.jar:1.21.4-2416-51aafbc]                                                                                   
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]                                                                                                                                                 
Caused by: java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1                                                                                                                                 
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?]                                                                                                                    
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?]                                                                                                          
        at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?]                                                                                                                     
        at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?]                                                                                                                                         
        at java.base/java.util.ArrayList$SubList.get(ArrayList.java:1231) ~[?:?]                                                                                                                                   
        at AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar/io.rokuko.azureflow.bukkit.command.GiveCommandKt.CommandGive$lambda$7(GiveCommand.kt:11) ~[AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar:?]       
        at AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar/io.rokuko.azureflow.bukkit.command.BukkitCommandKt.command$lambda$23(BukkitCommand.kt:270) ~[AzureFlow-1.1.0.2-rc1-build-51011-ff98a1d-all.jar:?]     
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[purpur-api-1.21.4-R0.1-SNAPSHOT.jar:?]                                                                                                
        ... 27 more                                                                                                                                                                                                

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions