Expected behavior
Upgrades addon should load successfully and all upgrade tiers
should be validated without errors when using the default
example configuration files provided by the addon.
Observed/Actual behavior
When loading, two example upgrade tiers (Boxed_example_range2_t1
and Boxed_example_diamond_t1) reference upgrade data that does
not exist (Boxed_example_range2 and Boxed_example_diamond),
which are not included in the default configuration. This causes
a ConcurrentModificationException in validateUpgradeTier()
during the validation phase, which crashes the entire addon
with "Skipping Upgrades due to an unhandled exception".
Steps/models to reproduce
[12:17:55 INFO]: [BentoBox] [Upgrades] Loading upgrade data
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_test was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_hopper was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_donor was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_cropgrowth was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_spawner was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_range1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_cow was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_hopper_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_cropgrowth_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_cow_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_diamond_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_spawner_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range1_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_donor_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_test2 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range2_t1 was loaded
[12:17:55 WARN]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range2_t1 has a reference to an unknow upgrade data. It will be skiped
[12:17:55 WARN]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_diamond_t1 has a reference to an unknow upgrade data. It will be skiped
[12:17:55 ERROR]: [BentoBox] Skipping Upgrades due to an unhandled exception...
[12:17:55 ERROR]: [BentoBox] java.util.ConcurrentModificationException
at java.base/java.util.HashMap$Values.forEach(HashMap.java:1077)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.validateUpgradeTier(UpgradesDataManager.java:303)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.validate(UpgradesDataManager.java:295)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.load(UpgradesDataManager.java:151)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.(UpgradesDataManager.java:72)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesAddon.onEnable(UpgradesAddon.java:90)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddon(AddonsManager.java:339)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:632)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddons(AddonsManager.java:279)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.BentoBox.completeSetup(BentoBox.java:207)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.BentoBox.lambda$onEnable$0(BentoBox.java:185)
at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78)
at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474)
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1267)
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388)
at java.base/java.lang.Thread.run(Thread.java:1474)
BentoBox version
[12:33:36 INFO]: Running PAPER 1.21.11 .
[12:33:36 INFO]: (1.21.11-132-c5eb079 (MC: 1.21.11))
[12:33:36 INFO]: BentoBox version: 3.16.2
[12:33:36 INFO]: Database: JSON
[12:33:36 INFO]: Loaded Game Worlds:
[12:33:36 INFO]: boxed_world ( Boxed ): Overworld
[12:33:36 INFO]: Loaded Addons:
[12:33:36 INFO]: Border 4.8.3 ( ENABLED )
[12:33:36 INFO]: Boxed 3.4.0 ( ENABLED )
[12:33:36 INFO]: Limits 1.28.1 ( ENABLED )
[12:33:36 INFO]: Upgrades 1.0.2-SNAPSHOT-b211 ( ERROR )
Plugin list
[12:33:22 INFO]: ℹ Server Plugins (30):
[12:33:22 INFO]: Paper Plugins (7):
[12:33:22 INFO]: - ExcellentEconomy, ExcellentEnchants, FancyHolograms, FancyNpcs, Nexo, nightcore, SmartSpawner
[12:33:22 INFO]: Bukkit Plugins (23):
[12:33:22 INFO]: - AdvancedDungeonArena, BentoBox, BentoBox-Border, BentoBox-Boxed, BentoBox-Limits, BentoBox-Upgrades, Chunky, CrazyEnchantments, DeluxeMenus, ExcellentClaims
[12:33:22 INFO]: ExcellentCrates, ExcellentJobs, ExcellentQuests, ExcellentShop, FastAsyncWorldEdit, LuckPerms, ModelEngine, MythicMobs, packetevents, PlaceholderAPI
[12:33:22 INFO]: SkinsRestorer, SunLight, Vault
Other
No response
Expected behavior
Upgrades addon should load successfully and all upgrade tiers
should be validated without errors when using the default
example configuration files provided by the addon.
Observed/Actual behavior
When loading, two example upgrade tiers (Boxed_example_range2_t1
and Boxed_example_diamond_t1) reference upgrade data that does
not exist (Boxed_example_range2 and Boxed_example_diamond),
which are not included in the default configuration. This causes
a ConcurrentModificationException in validateUpgradeTier()
during the validation phase, which crashes the entire addon
with "Skipping Upgrades due to an unhandled exception".
Steps/models to reproduce
[12:17:55 INFO]: [BentoBox] [Upgrades] Loading upgrade data
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_test was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_hopper was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_donor was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_cropgrowth was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_spawner was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_range1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade data Boxed_example_cow was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_hopper_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_cropgrowth_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_cow_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_diamond_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_spawner_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range1_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_donor_t1 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_test2 was loaded
[12:17:55 INFO]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range2_t1 was loaded
[12:17:55 WARN]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_range2_t1 has a reference to an unknow upgrade data. It will be skiped
[12:17:55 WARN]: [BentoBox] [Upgrades] Upgrade tier Boxed_example_diamond_t1 has a reference to an unknow upgrade data. It will be skiped
[12:17:55 ERROR]: [BentoBox] Skipping Upgrades due to an unhandled exception...
[12:17:55 ERROR]: [BentoBox] java.util.ConcurrentModificationException
at java.base/java.util.HashMap$Values.forEach(HashMap.java:1077)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.validateUpgradeTier(UpgradesDataManager.java:303)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.validate(UpgradesDataManager.java:295)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.load(UpgradesDataManager.java:151)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesDataManager.(UpgradesDataManager.java:72)
at Upgrades-1.0.2-SNAPSHOT-b211-1781173041765.jar//world.bentobox.upgrades.UpgradesAddon.onEnable(UpgradesAddon.java:90)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddon(AddonsManager.java:339)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:632)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.managers.AddonsManager.enableAddons(AddonsManager.java:279)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.BentoBox.completeSetup(BentoBox.java:207)
at BentoBox-3.16.2.jar//world.bentobox.bentobox.BentoBox.lambda$onEnable$0(BentoBox.java:185)
at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78)
at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474)
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1267)
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388)
at java.base/java.lang.Thread.run(Thread.java:1474)
BentoBox version
[12:33:36 INFO]: Running PAPER 1.21.11 .
[12:33:36 INFO]: (1.21.11-132-c5eb079 (MC: 1.21.11))
[12:33:36 INFO]: BentoBox version: 3.16.2
[12:33:36 INFO]: Database: JSON
[12:33:36 INFO]: Loaded Game Worlds:
[12:33:36 INFO]: boxed_world ( Boxed ): Overworld
[12:33:36 INFO]: Loaded Addons:
[12:33:36 INFO]: Border 4.8.3 ( ENABLED )
[12:33:36 INFO]: Boxed 3.4.0 ( ENABLED )
[12:33:36 INFO]: Limits 1.28.1 ( ENABLED )
[12:33:36 INFO]: Upgrades 1.0.2-SNAPSHOT-b211 ( ERROR )
Plugin list
[12:33:22 INFO]: ℹ Server Plugins (30):
[12:33:22 INFO]: Paper Plugins (7):
[12:33:22 INFO]: - ExcellentEconomy, ExcellentEnchants, FancyHolograms, FancyNpcs, Nexo, nightcore, SmartSpawner
[12:33:22 INFO]: Bukkit Plugins (23):
[12:33:22 INFO]: - AdvancedDungeonArena, BentoBox, BentoBox-Border, BentoBox-Boxed, BentoBox-Limits, BentoBox-Upgrades, Chunky, CrazyEnchantments, DeluxeMenus, ExcellentClaims
[12:33:22 INFO]: ExcellentCrates, ExcellentJobs, ExcellentQuests, ExcellentShop, FastAsyncWorldEdit, LuckPerms, ModelEngine, MythicMobs, packetevents, PlaceholderAPI
[12:33:22 INFO]: SkinsRestorer, SunLight, Vault
Other
No response