Sponge icon indicating copy to clipboard operation
Sponge copied to clipboard

Custom data failing to load on TileEntitys causes ConcurrentModificationExceptions

Open clienthax opened this issue 5 years ago • 1 comments

I am currently running

  • SpongeForge version: 1.12.2-2838-7.2.2-RC4024
  • Java version: 1.8
  • Operating System: Linux
  • Plugins (32): Minecraft, Minecraft Coder Pack, SpongeAPI, Sponge, AmberShop, Aura Update Checker, AurionsVoteListener, Buycraft, CatClearLag, CopyPasta, EpicBanItem, GriefDefender, HShopPlots, LuckPerms, MMCReboot, MMCRules, MagiBridge, Main Test, MineControl, NoteBlockAPI, NuVotifier, Nucleus, PixelAutoMessages, Prism, ServerListPlus, SoundControl, SpongePrometheusExporter, Tekxit3tweaks, Total Economy, VpnBeGone, WorldEdit, spark
  • Mods (124): Minecraft, Minecraft Coder Pack, Forge Mod Loader, Minecraft Forge, SpongeAPI, Sponge, Animania, AppleSkin, Applied Energistics 2, Attribute Fix, AutoRegLib, Backpack, Basic Nether Ores, Battle Towers, Baubles, BiblioCraft, Bookshelf, Botania, BuildCraft, BuildCraft Builders, BuildCraft Compat, BuildCraft Energy, BuildCraft Factory, BuildCraft Lib, BuildCraft Robotics, BuildCraft Silicon, BuildCraft Transport, CC: Tweaked, CC: Tweaked, Chest Transporter, Chisel, Chococraft 3, CoFH Core, CoFH World, CodeChicken Lib, CosmeticArmorReworked, CraftStudio API, CraftTweaker JEI Support, CraftTweaker2, CreativeCore, CreativeCoreDummy, Dimensional Doors, DungeonTactics, Enchanting Plus, Ender IO, Ender IO Applied Energistics Conduits, Ender IO Base, Ender IO Conduits, Ender IO Integration with Forestry, Ender IO Integration with Tinkers' Construct, Ender IO Integration with Tinkers' Construct, Ender IO Machines, Ender IO Open Computers Conduits, Ender IO Powertools, Ender IO Refined Storage Conduits, EnderCore, EnderStorage, Energy Converters, Extra Utilities 2, FTB Library, FoamFix, FoamFixCore, Forge Microblocks, Forge Multipart CBE, Galacticraft Core, Galacticraft Planets, HelpFixer, Hexxit Gear, IC2 Classic Detection Helper, Industrial Craft Classic, Industrial Foregoing, Infernal Mobs, Iron Chest, IvToolkit, Just Another Rotten Flesh to Leather Mod, Just Enough Items, MCMultiPart, Mantle, Micdoodle8 Core, Minecraft Multipart Plugin, MrCrayfish's Furniture Mod, Natura, NoMoreRecipeConflict, OpenBlocks, OpenModsLib, OpenModsLib Core, Pam's HarvestCraft, Phosphor Lighting Engine, Placebo, QuackLib, Quark, Quick Homes, Quick Teleports, Railcraft, RandomPatches, Recurrent Complex, Redstone Arsenal, Redstone Flux, Redwoods, Reforged, Reliquary, Sampling Performance Profiler, Shadowfacts' Forgelin, Simple Inventory sorting, Simply Jetpacks 2, Soul Shards Respawn, SpongeForge, Tesla Core Lib, Tesla Core Lib Registries, The Twilight Forest, Thermal Dynamics, Thermal Expansion, Thermal Foundation, TickProfiler, Tinkers' Construct, Traverse, TreeCapitator, UniDict, VanillaFix, WanionLib, YABBA, bspkrsCore, iChunUtil, rswires

Issue Description Make derp in your plugin that breaks custom data loading properly, Which then breaks the chunk loading with a concurrent modification.

Removing the plugin allows the chunk to load with no issues.

[18:02:32] [Server thread/INFO] [net.minecraft.server.management.PlayerList]: WiseDirector [/97.82.181.45:51652] logged in with entity id [3216] in world (minecraft:overworld/0) at (-1060.2651444698438, 88.0, -1970.699999988079).
[18:02:32] [Server thread/INFO] [EnderCore]: Sending server configs to client for com.enderio.core.common.config.ConfigHandler
[18:02:32] [Server thread/INFO] [net.minecraft.server.dedicated.DedicatedServer]: WiseDirector joined the game
[18:02:32] [Server thread/WARN] [Sponge]: musicbox: It is no longer required to include the plugin id when specifying a Key id through Key.Builder#id. This is deprecated and may be removed later. The plugin id will be retrieved from the current PluginContainer in the cause stack. Key: musicbox:musicboxtype
[18:02:32] [Server thread/ERROR] [net.minecraft.tileentity.TileEntity]: Failed to load data for block entity minecraft:jukebox
java.lang.ExceptionInInitializerError: null
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.registerGettersAndSetters(MusicBoxSettingsData.java:42) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.<init>(MusicBoxSettingsData.java:37) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.<init>(MusicBoxSettingsData.java:30) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsDataBuilder.create(MusicBoxSettingsDataBuilder.java:20) ~[MusicBoxSettingsDataBuilder.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsDataBuilder.buildContent(MusicBoxSettingsDataBuilder.java:30) ~[MusicBoxSettingsDataBuilder.class:?]
	at org.spongepowered.api.data.persistence.AbstractDataBuilder.build(AbstractDataBuilder.java:87) ~[AbstractDataBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.lambda$deserializeManipulator$11(DataUtil.java:242) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.flatMap(Optional.java:241) ~[?:1.8.0_242]
	at org.spongepowered.common.data.util.DataUtil.deserializeManipulator(DataUtil.java:242) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.tryDeserializeManipulator(DataUtil.java:228) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.lambda$deserializeManipulatorList$10(DataUtil.java:210) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_242]
	at org.spongepowered.common.data.util.DataUtil.deserializeManipulatorList(DataUtil.java:210) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.readCustomData(DataUtil.java:562) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at net.minecraft.tileentity.TileEntity.bridge$readFromSpongeCompound(TileEntity.java:3740) ~[avj.class:?]
	at net.minecraft.tileentity.TileEntity.handler$zkl000$impl$ReadSpongeDataFromCompound(TileEntity.java:3730) ~[avj.class:?]
	at net.minecraft.tileentity.TileEntity.readFromNBT(TileEntity.java:65) ~[avj.class:?]
	at net.minecraft.block.BlockJukebox$TileEntityJukebox.readFromNBT(SourceFile:36) ~[arp$a.class:?]
	at net.minecraft.tileentity.TileEntity.create(TileEntity.java:120) [avj.class:?]
	at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadEntities(AnvilChunkLoader.java:495) [aye.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOProvider.syncCallback(ChunkIOProvider.java:101) [ChunkIOProvider.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:150) [ChunkIOExecutor.class:?]
	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:728) [MinecraftServer.class:?]
	at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:397) [nz.class:?]
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668) [MinecraftServer.class:?]
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
Caused by: java.lang.IllegalStateException: Couldn't find a PluginContainer in the cause stack.
	at org.spongepowered.common.util.SpongeCatalogBuilder.lambda$build$0(SpongeCatalogBuilder.java:85) ~[SpongeCatalogBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.orElseThrow(Optional.java:290) ~[?:1.8.0_242]
	at org.spongepowered.common.util.SpongeCatalogBuilder.build(SpongeCatalogBuilder.java:85) ~[SpongeCatalogBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.SpongeKeyBuilder.build(SpongeKeyBuilder.java:45) ~[SpongeKeyBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxKeys.<clinit>(MusicBoxKeys.java:19) ~[MusicBoxKeys.class:?]
	... 27 more
[18:02:32] [Server thread/ERROR] [FML]: A TileEntity minecraft:jukebox(net.minecraft.block.BlockJukebox$TileEntityJukebox) has thrown an exception during loading, its state cannot be restored. Report this to the mod author
java.lang.ExceptionInInitializerError: null
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.registerGettersAndSetters(MusicBoxSettingsData.java:42) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.<init>(MusicBoxSettingsData.java:37) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsData.<init>(MusicBoxSettingsData.java:30) ~[MusicBoxSettingsData.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsDataBuilder.create(MusicBoxSettingsDataBuilder.java:20) ~[MusicBoxSettingsDataBuilder.class:?]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxSettingsDataBuilder.buildContent(MusicBoxSettingsDataBuilder.java:30) ~[MusicBoxSettingsDataBuilder.class:?]
	at org.spongepowered.api.data.persistence.AbstractDataBuilder.build(AbstractDataBuilder.java:87) ~[AbstractDataBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.lambda$deserializeManipulator$11(DataUtil.java:242) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.flatMap(Optional.java:241) ~[?:1.8.0_242]
	at org.spongepowered.common.data.util.DataUtil.deserializeManipulator(DataUtil.java:242) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.tryDeserializeManipulator(DataUtil.java:228) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.lambda$deserializeManipulatorList$10(DataUtil.java:210) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_242]
	at org.spongepowered.common.data.util.DataUtil.deserializeManipulatorList(DataUtil.java:210) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.util.DataUtil.readCustomData(DataUtil.java:562) ~[DataUtil.class:1.12.2-2838-7.2.2-RC4024]
	at net.minecraft.tileentity.TileEntity.bridge$readFromSpongeCompound(TileEntity.java:3740) ~[avj.class:?]
	at net.minecraft.tileentity.TileEntity.handler$zkl000$impl$ReadSpongeDataFromCompound(TileEntity.java:3730) ~[avj.class:?]
	at net.minecraft.tileentity.TileEntity.readFromNBT(TileEntity.java:65) ~[avj.class:?]
	at net.minecraft.block.BlockJukebox$TileEntityJukebox.readFromNBT(SourceFile:36) ~[arp$a.class:?]
	at net.minecraft.tileentity.TileEntity.create(TileEntity.java:120) [avj.class:?]
	at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadEntities(AnvilChunkLoader.java:495) [aye.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOProvider.syncCallback(ChunkIOProvider.java:101) [ChunkIOProvider.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:150) [ChunkIOExecutor.class:?]
	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:728) [MinecraftServer.class:?]
	at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:397) [nz.class:?]
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668) [MinecraftServer.class:?]
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
Caused by: java.lang.IllegalStateException: Couldn't find a PluginContainer in the cause stack.
	at org.spongepowered.common.util.SpongeCatalogBuilder.lambda$build$0(SpongeCatalogBuilder.java:85) ~[SpongeCatalogBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at java.util.Optional.orElseThrow(Optional.java:290) ~[?:1.8.0_242]
	at org.spongepowered.common.util.SpongeCatalogBuilder.build(SpongeCatalogBuilder.java:85) ~[SpongeCatalogBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at org.spongepowered.common.data.SpongeKeyBuilder.build(SpongeKeyBuilder.java:45) ~[SpongeKeyBuilder.class:1.12.2-2838-7.2.2-RC4024]
	at uk.co.haxyshideout.musicbox.data.spongedata.MusicBoxKeys.<clinit>(MusicBoxKeys.java:19) ~[MusicBoxKeys.class:?]
	... 27 more
[18:02:32] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: Encountered an unexpected exception
java.util.ConcurrentModificationException: null
	at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445) ~[?:1.8.0_242]
	at java.util.HashMap$ValueIterator.next(HashMap.java:1474) ~[?:1.8.0_242]
	at net.minecraft.world.World.addTileEntities(World.java:1949) ~[amu.class:?]
	at net.minecraft.world.chunk.Chunk.onLoad(Chunk.java:856) ~[axw.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOProvider.syncCallback(ChunkIOProvider.java:109) ~[ChunkIOProvider.class:?]
	at net.minecraftforge.common.chunkio.ChunkIOExecutor.tick(ChunkIOExecutor.java:150) ~[ChunkIOExecutor.class:?]
	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:728) ~[MinecraftServer.class:?]
	at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:397) ~[nz.class:?]
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:668) ~[MinecraftServer.class:?]
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
[18:02:32] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: This crash report has been saved to: /home/container/./crash-reports/crash-2020-05-12_18.02.32-server.txt

clienthax avatar May 12 '20 17:05 clienthax

I'll concede that Sponge should try to avoid causing a failure like this, but custom data should be registered during the DataRegistrationEvent.

gabizou avatar May 14 '20 06:05 gabizou