Uploaded image for project: 'Spigot'
  1. Spigot
  2. SPIGOT-6580

Cancelling SlimeSplitEvent Causes Infinite Loop

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • None
    • None
    • MacOS Java 16

    • version 3149-Spigot-101ebb6-9122f5a (MC: 1.17) (Implementing API version 1.17-R0.1-SNAPSHOT)
    • Yes

      Cancelling the slime split event seems to cause an infinite loop:

       

      [12:45:18] [Server thread/WARN]: [Magic]  Removing an invalid NPC (id=d1699325-ddb5-4cad-aff4-569b83e3f805) entity of type VILLAGER at [world] -506,63,1038[12:45:18] [Server thread/WARN]: [Magic]  Removing an invalid NPC (id=d1699325-ddb5-4cad-aff4-569b83e3f805) entity of type VILLAGER at [world] -506,63,1038[12:45:19] [Server thread/ERROR]: Encountered an unexpected exceptionnet.minecraft.ReportedException: Ticking entity at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1310) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:436) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1200) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1027) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:307) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at java.lang.Thread.run(Thread.java:831) [?:?]Caused by: java.lang.StackOverflowError at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:750) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at org.bukkit.craftbukkit.v1_17_R1.util.ForwardLogHandler.publish(ForwardLogHandler.java:32) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at java.util.logging.Logger.log(Logger.java:979) ~[?:?] at java.util.logging.Logger.doLog(Logger.java:1006) ~[?:?] at java.util.logging.Logger.log(Logger.java:1117) ~[?:?] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:604) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.world.entity.monster.EntitySlime.a(EntitySlime.java:213) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.world.entity.Entity.die(Entity.java:415) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.world.entity.monster.EntitySlime.a(EntitySlime.java:218) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.world.entity.Entity.die(Entity.java:415) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a] at net.minecraft.world.entity.monster.EntitySlime.a(EntitySlime.java:218) ~[spigot-1.17.jar:3149-Spigot-101ebb6-9122f5a]
      ... ad infinitem
      

      The server then crashes.

      I can't tell what changed, but I can see in EntitySlime.a(RemovalReason) if the event is cancelled it calls back up to die() which would then call back down to a(). I am unsure what the correct behavior would be.

      I can make up a test plugin if helpful, I just can't do it right now.

            Unassigned Unassigned
            NathanWolf Nathan Wolf
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: