WildStacker IllegalStateException #313

Description

@Kryniowesegryderiusz

Expected behavior

Level should be counted properly

Observed/Actual behavior

https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

Steps/models to reproduce

Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

But I'm basically doing /is level or /bsb level commands.

BentoBox version

31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
31.05 19:54:50 [Server] INFO Database: MYSQL
31.05 19:54:50 [Server] INFO Loaded Game Worlds:
31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
31.05 19:54:50 [Server] INFO Loaded Addons:
31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

Plugin list

No response

Other

Error I've managed to get in console is:

31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)

Lines numbers may differ due to some debug messages added

My latest debug code looks like that:

 private void handleStackedBlocks() {
Bukkit.broadcastMessage("handleStackedBlocks");
try {
// Deal with any stacked blocks
Iterator<Location> it = stackedBlocks.iterator();
while (it.hasNext()) {
Location v = it.next();
System.out.println("it.next() " + v);
Util.getChunkAtAsync(v).thenAccept(c -> {
try {
Block stackedBlock = v.getBlock();
boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
for (int _x = 0; _x < barrelAmt; _x++) {
checkBlock(barrel.getType(), belowSeaLevel);
}
} else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
for (int _x = 0; _x < spawnerAmt; _x++) {
checkBlock(stackedBlock.getType(), belowSeaLevel);
}
}
it.remove();
System.out.println("it.remove() " + v);
} catch (Exception e) {
System.out.println(e + " " + v);
}
});
}
Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
Bukkit.broadcastMessage("handleStackedBlocksEnded");
} catch (Exception e) {
Bukkit.broadcastMessage(e.getMessage());
e.printStackTrace();
}
}
```

Activity

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

Metadata

Metadata

Assignees

Labels

donethis has been completed

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
    Skip to content

    WildStacker IllegalStateException #313

    Description

    @Kryniowesegryderiusz

    Expected behavior

    Level should be counted properly

    Observed/Actual behavior

    https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

    Steps/models to reproduce

    Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

    But I'm basically doing /is level or /bsb level commands.

    BentoBox version

    31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
    31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
    31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
    31.05 19:54:50 [Server] INFO Database: MYSQL
    31.05 19:54:50 [Server] INFO Loaded Game Worlds:
    31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
    31.05 19:54:50 [Server] INFO Loaded Addons:
    31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
    31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
    31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
    31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
    31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
    31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
    31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
    31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
    31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

    Plugin list

    No response

    Other

    Error I've managed to get in console is:

    31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
    31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
    31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
    31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
    31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
    31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
    31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
    31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
    31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
    31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
    31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
    31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
    31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
    

    Lines numbers may differ due to some debug messages added

    My latest debug code looks like that:

     private void handleStackedBlocks() {
    Bukkit.broadcastMessage("handleStackedBlocks");
    try {
    // Deal with any stacked blocks
    Iterator<Location> it = stackedBlocks.iterator();
    while (it.hasNext()) {
    Location v = it.next();
    System.out.println("it.next() " + v);
    Util.getChunkAtAsync(v).thenAccept(c -> {
    try {
    Block stackedBlock = v.getBlock();
    boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
    if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
    StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
    int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
    for (int _x = 0; _x < barrelAmt; _x++) {
    checkBlock(barrel.getType(), belowSeaLevel);
    }
    } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
    int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
    for (int _x = 0; _x < spawnerAmt; _x++) {
    checkBlock(stackedBlock.getType(), belowSeaLevel);
    }
    }
    it.remove();
    System.out.println("it.remove() " + v);
    } catch (Exception e) {
    System.out.println(e + " " + v);
    }
    });
    }
    Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
    Bukkit.broadcastMessage("handleStackedBlocksEnded");
    } catch (Exception e) {
    Bukkit.broadcastMessage(e.getMessage());
    e.printStackTrace();
    }
    }
    ```
    

    Activity

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

    Metadata

    Metadata

    Assignees

    Labels

    donethis has been completed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      WildStacker IllegalStateException #313

      Description

      @Kryniowesegryderiusz

      Expected behavior

      Level should be counted properly

      Observed/Actual behavior

      https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

      Steps/models to reproduce

      Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

      But I'm basically doing /is level or /bsb level commands.

      BentoBox version

      31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
      31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
      31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
      31.05 19:54:50 [Server] INFO Database: MYSQL
      31.05 19:54:50 [Server] INFO Loaded Game Worlds:
      31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
      31.05 19:54:50 [Server] INFO Loaded Addons:
      31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
      31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
      31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
      31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
      31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
      31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
      31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
      31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
      31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

      Plugin list

      No response

      Other

      Error I've managed to get in console is:

      31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
      31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
      31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
      31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
      31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
      31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
      31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
      31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
      31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
      31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
      31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
      31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
      31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
      

      Lines numbers may differ due to some debug messages added

      My latest debug code looks like that:

       private void handleStackedBlocks() {
      Bukkit.broadcastMessage("handleStackedBlocks");
      try {
      // Deal with any stacked blocks
      Iterator<Location> it = stackedBlocks.iterator();
      while (it.hasNext()) {
      Location v = it.next();
      System.out.println("it.next() " + v);
      Util.getChunkAtAsync(v).thenAccept(c -> {
      try {
      Block stackedBlock = v.getBlock();
      boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
      if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
      StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
      int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
      for (int _x = 0; _x < barrelAmt; _x++) {
      checkBlock(barrel.getType(), belowSeaLevel);
      }
      } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
      int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
      for (int _x = 0; _x < spawnerAmt; _x++) {
      checkBlock(stackedBlock.getType(), belowSeaLevel);
      }
      }
      it.remove();
      System.out.println("it.remove() " + v);
      } catch (Exception e) {
      System.out.println(e + " " + v);
      }
      });
      }
      Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
      Bukkit.broadcastMessage("handleStackedBlocksEnded");
      } catch (Exception e) {
      Bukkit.broadcastMessage(e.getMessage());
      e.printStackTrace();
      }
      }
      ```
      

      Activity

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

      Metadata

      Metadata

      Assignees

      Labels

      donethis has been completed

      Type

      No type

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        WildStacker IllegalStateException #313

        Description

        @Kryniowesegryderiusz

        Expected behavior

        Level should be counted properly

        Observed/Actual behavior

        https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

        Steps/models to reproduce

        Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

        But I'm basically doing /is level or /bsb level commands.

        BentoBox version

        31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
        31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
        31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
        31.05 19:54:50 [Server] INFO Database: MYSQL
        31.05 19:54:50 [Server] INFO Loaded Game Worlds:
        31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
        31.05 19:54:50 [Server] INFO Loaded Addons:
        31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
        31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
        31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
        31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
        31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
        31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
        31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
        31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
        31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

        Plugin list

        No response

        Other

        Error I've managed to get in console is:

        31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
        31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
        31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
        31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
        31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
        31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
        31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
        31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
        31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
        31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
        31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
        31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
        31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
        

        Lines numbers may differ due to some debug messages added

        My latest debug code looks like that:

         private void handleStackedBlocks() {
        Bukkit.broadcastMessage("handleStackedBlocks");
        try {
        // Deal with any stacked blocks
        Iterator<Location> it = stackedBlocks.iterator();
        while (it.hasNext()) {
        Location v = it.next();
        System.out.println("it.next() " + v);
        Util.getChunkAtAsync(v).thenAccept(c -> {
        try {
        Block stackedBlock = v.getBlock();
        boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
        if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
        StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
        int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
        for (int _x = 0; _x < barrelAmt; _x++) {
        checkBlock(barrel.getType(), belowSeaLevel);
        }
        } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
        int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
        for (int _x = 0; _x < spawnerAmt; _x++) {
        checkBlock(stackedBlock.getType(), belowSeaLevel);
        }
        }
        it.remove();
        System.out.println("it.remove() " + v);
        } catch (Exception e) {
        System.out.println(e + " " + v);
        }
        });
        }
        Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
        Bukkit.broadcastMessage("handleStackedBlocksEnded");
        } catch (Exception e) {
        Bukkit.broadcastMessage(e.getMessage());
        e.printStackTrace();
        }
        }
        ```
        

        Activity

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

        Metadata

        Metadata

        Assignees

        Labels

        donethis has been completed

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          WildStacker IllegalStateException #313

          Description

          @Kryniowesegryderiusz

          Expected behavior

          Level should be counted properly

          Observed/Actual behavior

          https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

          Steps/models to reproduce

          Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

          But I'm basically doing /is level or /bsb level commands.

          BentoBox version

          31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
          31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
          31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
          31.05 19:54:50 [Server] INFO Database: MYSQL
          31.05 19:54:50 [Server] INFO Loaded Game Worlds:
          31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
          31.05 19:54:50 [Server] INFO Loaded Addons:
          31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
          31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
          31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
          31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
          31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
          31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
          31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
          31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
          31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

          Plugin list

          No response

          Other

          Error I've managed to get in console is:

          31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
          31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
          31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
          31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
          31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
          31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
          31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
          31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
          31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
          31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
          31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
          31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
          31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
          

          Lines numbers may differ due to some debug messages added

          My latest debug code looks like that:

           private void handleStackedBlocks() {
          Bukkit.broadcastMessage("handleStackedBlocks");
          try {
          // Deal with any stacked blocks
          Iterator<Location> it = stackedBlocks.iterator();
          while (it.hasNext()) {
          Location v = it.next();
          System.out.println("it.next() " + v);
          Util.getChunkAtAsync(v).thenAccept(c -> {
          try {
          Block stackedBlock = v.getBlock();
          boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
          if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
          StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
          int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
          for (int _x = 0; _x < barrelAmt; _x++) {
          checkBlock(barrel.getType(), belowSeaLevel);
          }
          } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
          int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
          for (int _x = 0; _x < spawnerAmt; _x++) {
          checkBlock(stackedBlock.getType(), belowSeaLevel);
          }
          }
          it.remove();
          System.out.println("it.remove() " + v);
          } catch (Exception e) {
          System.out.println(e + " " + v);
          }
          });
          }
          Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
          Bukkit.broadcastMessage("handleStackedBlocksEnded");
          } catch (Exception e) {
          Bukkit.broadcastMessage(e.getMessage());
          e.printStackTrace();
          }
          }
          ```
          

          Activity

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

          Metadata

          Metadata

          Assignees

          Labels

          donethis has been completed

          Type

          No type

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            WildStacker IllegalStateException #313

            Description

            @Kryniowesegryderiusz

            Expected behavior

            Level should be counted properly

            Observed/Actual behavior

            https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

            Steps/models to reproduce

            Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

            But I'm basically doing /is level or /bsb level commands.

            BentoBox version

            31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
            31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
            31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
            31.05 19:54:50 [Server] INFO Database: MYSQL
            31.05 19:54:50 [Server] INFO Loaded Game Worlds:
            31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
            31.05 19:54:50 [Server] INFO Loaded Addons:
            31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
            31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
            31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
            31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
            31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
            31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
            31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
            31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
            31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

            Plugin list

            No response

            Other

            Error I've managed to get in console is:

            31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
            31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
            31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
            31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
            31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
            31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
            31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
            31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
            31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
            31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
            31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
            31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
            31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
            

            Lines numbers may differ due to some debug messages added

            My latest debug code looks like that:

             private void handleStackedBlocks() {
            Bukkit.broadcastMessage("handleStackedBlocks");
            try {
            // Deal with any stacked blocks
            Iterator<Location> it = stackedBlocks.iterator();
            while (it.hasNext()) {
            Location v = it.next();
            System.out.println("it.next() " + v);
            Util.getChunkAtAsync(v).thenAccept(c -> {
            try {
            Block stackedBlock = v.getBlock();
            boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
            if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
            StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
            int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
            for (int _x = 0; _x < barrelAmt; _x++) {
            checkBlock(barrel.getType(), belowSeaLevel);
            }
            } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
            int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
            for (int _x = 0; _x < spawnerAmt; _x++) {
            checkBlock(stackedBlock.getType(), belowSeaLevel);
            }
            }
            it.remove();
            System.out.println("it.remove() " + v);
            } catch (Exception e) {
            System.out.println(e + " " + v);
            }
            });
            }
            Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
            Bukkit.broadcastMessage("handleStackedBlocksEnded");
            } catch (Exception e) {
            Bukkit.broadcastMessage(e.getMessage());
            e.printStackTrace();
            }
            }
            ```
            

            Activity

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

            Metadata

            Metadata

            Assignees

            Labels

            donethis has been completed

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              WildStacker IllegalStateException #313

              Description

              @Kryniowesegryderiusz

              Expected behavior

              Level should be counted properly

              Observed/Actual behavior

              https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

              Steps/models to reproduce

              Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

              But I'm basically doing /is level or /bsb level commands.

              BentoBox version

              31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
              31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
              31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
              31.05 19:54:50 [Server] INFO Database: MYSQL
              31.05 19:54:50 [Server] INFO Loaded Game Worlds:
              31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
              31.05 19:54:50 [Server] INFO Loaded Addons:
              31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
              31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
              31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
              31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
              31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
              31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
              31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
              31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
              31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

              Plugin list

              No response

              Other

              Error I've managed to get in console is:

              31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
              31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
              31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
              31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
              31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
              31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
              31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
              31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
              31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
              31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
              31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
              31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
              31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
              

              Lines numbers may differ due to some debug messages added

              My latest debug code looks like that:

               private void handleStackedBlocks() {
              Bukkit.broadcastMessage("handleStackedBlocks");
              try {
              // Deal with any stacked blocks
              Iterator<Location> it = stackedBlocks.iterator();
              while (it.hasNext()) {
              Location v = it.next();
              System.out.println("it.next() " + v);
              Util.getChunkAtAsync(v).thenAccept(c -> {
              try {
              Block stackedBlock = v.getBlock();
              boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
              if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
              StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
              int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
              for (int _x = 0; _x < barrelAmt; _x++) {
              checkBlock(barrel.getType(), belowSeaLevel);
              }
              } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
              int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
              for (int _x = 0; _x < spawnerAmt; _x++) {
              checkBlock(stackedBlock.getType(), belowSeaLevel);
              }
              }
              it.remove();
              System.out.println("it.remove() " + v);
              } catch (Exception e) {
              System.out.println(e + " " + v);
              }
              });
              }
              Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
              Bukkit.broadcastMessage("handleStackedBlocksEnded");
              } catch (Exception e) {
              Bukkit.broadcastMessage(e.getMessage());
              e.printStackTrace();
              }
              }
              ```
              

              Activity

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

              Metadata

              Metadata

              Assignees

              Labels

              donethis has been completed

              Type

              No type

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                WildStacker IllegalStateException #313

                Description

                @Kryniowesegryderiusz

                Expected behavior

                Level should be counted properly

                Observed/Actual behavior

                https://github.com/BentoBoxWorld/Level/blob/develop/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java#L660 fires IllegalStateException for some locations. That makes finishTask beeing completed only after timeout due to these locations still remaining

                Steps/models to reproduce

                Thats the hard part. Im not able to reproduce it on my test server, but it happens on huge words with players.

                But I'm basically doing /is level or /bsb level commands.

                BentoBox version

                31.05 19:54:50 [Server] INFO Running PURPUR 1.20.4.
                31.05 19:54:50 [Server] INFO (git-Purpur-2152 (MC: 1.20.4))
                31.05 19:54:50 [Server] INFO BentoBox version: 2.1.2-SNAPSHOT-b2572
                31.05 19:54:50 [Server] INFO Database: MYSQL
                31.05 19:54:50 [Server] INFO Loaded Game Worlds:
                31.05 19:54:50 [Server] INFO skyblock (SkyBlock): Swiat, Pieklo, End
                31.05 19:54:50 [Server] INFO Loaded Addons:
                31.05 19:54:50 [Server] INFO Biomes 2.2.0-SNAPSHOT-b258 (ENABLED)
                31.05 19:54:50 [Server] INFO Border 4.2.1 (ENABLED)
                31.05 19:54:50 [Server] INFO BSkyBlock 1.17.1 (ENABLED)
                31.05 19:54:50 [Server] INFO DimensionalTrees 1.7.0 (ENABLED)
                31.05 19:54:50 [Server] INFO Level 2.13.0 (ENABLED)
                31.05 19:54:50 [Server] INFO Limits 1.20.1 (ENABLED)
                31.05 19:54:50 [Server] INFO SkyblockCore 0.5 (ENABLED)
                31.05 19:54:50 [Server] INFO SkyIslandUpgrades 0.1 (ENABLED)
                31.05 19:54:50 [Server] INFO Warps 1.14.0 (ENABLED)

                Plugin list

                No response

                Other

                Error I've managed to get in console is:

                31.05 19:05:59 [Server] WARN java.lang.IllegalStateException
                31.05 19:05:59 [Server] WARN at java.base/java.util.ArrayList$Itr.remove(ArrayList.java:980)
                31.05 19:05:59 [Server] WARN at Level-2.13.0-SNAPSHOT-LOCAL.jar//world.bentobox.level.calculators.IslandLevelCalculator.lambda$handleStackedBlocks$15(IslandLevelCalculator.java:701)
                31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
                31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
                31.05 19:05:59 [Server] WARN at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
                31.05 19:05:59 [Server] WARN at org.bukkit.craftbukkit.v1_20_R3.CraftWorld.lambda$getChunkAtAsync$17(CraftWorld.java:2524)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.TickTask.run(TickTask.java:18)
                31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
                31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1488)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:194)
                31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1465)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1388)
                31.05 19:05:59 [Server] WARN at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1539)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1236)
                31.05 19:05:59 [Server] WARN at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:323)
                31.05 19:05:59 [Server] WARN at java.base/java.lang.Thread.run(Thread.java:833)
                

                Lines numbers may differ due to some debug messages added

                My latest debug code looks like that:

                 private void handleStackedBlocks() {
                Bukkit.broadcastMessage("handleStackedBlocks");
                try {
                // Deal with any stacked blocks
                Iterator<Location> it = stackedBlocks.iterator();
                while (it.hasNext()) {
                Location v = it.next();
                System.out.println("it.next() " + v);
                Util.getChunkAtAsync(v).thenAccept(c -> {
                try {
                Block stackedBlock = v.getBlock();
                boolean belowSeaLevel = seaHeight > 0 && v.getBlockY() <= seaHeight;
                if (WildStackerAPI.getWildStacker().getSystemManager().isStackedBarrel(stackedBlock)) {
                StackedBarrel barrel = WildStackerAPI.getStackedBarrel(stackedBlock);
                int barrelAmt = WildStackerAPI.getBarrelAmount(stackedBlock);
                for (int _x = 0; _x < barrelAmt; _x++) {
                checkBlock(barrel.getType(), belowSeaLevel);
                }
                } else if (WildStackerAPI.getWildStacker().getSystemManager().isStackedSpawner(stackedBlock)) {
                int spawnerAmt = WildStackerAPI.getSpawnersAmount((CreatureSpawner) stackedBlock.getState());
                for (int _x = 0; _x < spawnerAmt; _x++) {
                checkBlock(stackedBlock.getType(), belowSeaLevel);
                }
                }
                it.remove();
                System.out.println("it.remove() " + v);
                } catch (Exception e) {
                System.out.println(e + " " + v);
                }
                });
                }
                Bukkit.broadcastMessage("stackedBlocks size: " + stackedBlocks.size());
                Bukkit.broadcastMessage("handleStackedBlocksEnded");
                } catch (Exception e) {
                Bukkit.broadcastMessage(e.getMessage());
                e.printStackTrace();
                }
                }
                ```
                

                Activity

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

                Metadata

                Metadata

                Assignees

                Labels

                donethis has been completed

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions