Skip to content

Automatically check and prune data if NBT is too large #584

@SecretlyJealous

Description

@SecretlyJealous

This issue is becoming increasingly common on my creative server:
Image

When a player has too much NBT data they are no longer able to join the server and need an Admin to reset their data, the problem is that this happens so frequently on creative mode that instead of having to wait for an admin to reset this data I was wondering if it was possible to add some sort of option in the plugin that would just delete the data when this situation occurs? Because the only way to fix this would be for the Admin to delete the data either way.

I'm on HuskSync | v3.8.7

[10:37:57] [Craft Scheduler Thread - 62 - HuskSync/ERROR]: [HuskSync] Failed to unpack data snapshot for redacted
net.william278.husksync.libraries.nbtapi.NbtApiException: [?][2.15.2-SNAPSHOT]Unable to parse Malformed Json!
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.NBTContainer.(NBTContainer.java:79) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.NBT.parseNBT(NBT.java:535) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.BukkitSerializer$Inventory.deserialize(BukkitSerializer.java:74) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.BukkitSerializer$Inventory.deserialize(BukkitSerializer.java:64) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.SerializerRegistry.lambda$deserializeData$6(SerializerRegistry.java:133) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at java.base/java.util.Optional.map(Optional.java:260) ~[?:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.SerializerRegistry.deserializeData(SerializerRegistry.java:133) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.DataSnapshot$Unpacked.lambda$deserializeData$2(DataSnapshot.java:398) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at java.base/java.util.stream.Collectors.lambda$toMap$68(Collectors.java:1643) ~[?:?]
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) ~[?:?]
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:212) ~[?:?]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:194) ~[?:?]
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939) ~[?:?]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556) ~[?:?]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546) ~[?:?]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265) ~[?:?]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:702) ~[?:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.DataSnapshot$Unpacked.deserializeData(DataSnapshot.java:396) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.DataSnapshot$Unpacked.(DataSnapshot.java:380) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.DataSnapshot$Packed.unpack(DataSnapshot.java:359) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.data.UserDataHolder.applySnapshot(UserDataHolder.java:115) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.user.OnlineUser.lambda$applySnapshot$1(OnlineUser.java:147) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.event.EventDispatcher.lambda$fireEvent$0(EventDispatcher.java:46) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.8.jar:1.21.8-60-29c8822]
at org.bukkit.craftbukkit.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.21.8.jar:1.21.8-60-29c8822]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.21.8.jar:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?]
at java.base/java.lang.Thread.run(Thread.java:1570) ~[?:?]
Caused by: net.william278.husksync.libraries.nbtapi.NbtApiException: [?][2.15.2-SNAPSHOT]Error while calling the method 'parseCompoundFully', loaded: true, Enum: PARSE_NBT, Passed Class: null Args: [{held_item_slot:7,items:{items:[{DataVersion:4435,Slot:0,components:{"minecraft:attribute_modifiers":[{amount:-Infinityd,id:"minecraft:63fcef17-97a9-4bd9-8a65-d29bdafe3b84",operation:"add_value",type:"minecraft:block_interaction_range"},{amount:-Infinityd,id:"minecraft:fe53321d-43db-4b37-920d-7a5f6a3e6d3b",operation:"add_value",type:"minecraft:entity_interaction_range"}],"minecraft:consumable":{animation:"crossbow",consume_seconds:3.0f,has_consume_particles:0b,sound:"minecraft:item.crossbow.loading_middle"},"minecraft:custom_name":{extra:[{bold:0b,color:"#8EB4DB",italic:0b,obfuscated:0b,strikethrough:0b,text:"Adjust gloves",underlined:0b}],text:""},"minecraft:item_model":"minecraft:air","minecraft:max_stack_size":1},count:1,id:"minecraft:stick"},{DataVersion:4435,Slot:1,components:{"minecraft:attribute_modifiers":[{amount:-Infinityd,id:"minecraft:63fcef17-97a9-4bd9-8a65-d29bdafe3b84",operation:"add_value",type:"minecraft:block_interaction_range"},{amount:-Infinityd,id:"minecraft:fe53321d-43db-4b37-920d-7a5f6a3e6d3b",operation:"add_value",type:"minecraft:entity_interaction_range"}],"minecraft:consumable":{animation:"toot_horn",consume_seconds:1.0E9f,has_consume_particles:0b,sound:"minecraft:item.crossbow.loading_middle"},"minecraft:custom_name":{extra:[{bold:0b,color:"#8EB4DB",italic:0b,obfuscated:0b,strikethrough:0b,text:"Reach",underlined:0b}],text:""},"minecraft:item_model":"minecraft:air","minecraft:max_stack_size":1},count:1,id:"minecraft:stick"},{DataVersion:4435,Slot:2,components:{"minecraft:attribute_modifiers":[{amount:-Infinityd,id:"minecraft:63fcef17-97a9-4bd9-8a65-d29bdafe3b84",operation:"add_value",type:"minecraft:block_interaction_range"},{amount:-Infinityd,id:"minecraft:fe53321d-43db-4b37-920d-7a5f6a3e6d3b",operation:"add_value",type:"minecraft:entity_interaction_range"}],"minecraft:consumable":{animation:"bow",consume_seconds:1.0E9f,has_consume_particles:0b,sound:"minecraft:item.crossbow.loading_middle"},"minecraft:custom_name":{extra:[{bold:0b,color:"#8EB4DB",italic:0b,obfuscated:0b,strikethrough:0b,text:"Fighting stance",underlined:0b}],text:""},"minecraft:item_model":"minecraft:air","minecraft:max_stack_size":1},count:1,id:"minecraft:stick"},{DataVersion:4435,Slot:9,count:1,id:"minecraft:powder_snow_bucket"},{DataVersion:4435,Slot:10,components:{"minecraft:damage":0},count:1,id:"minecraft:debug_stick"},{DataVersion:4435,Slot:11,count:1,id:"minecraft:end_stone"},{DataVersion:4435,Slot:12,count:1,id:"minecraft:verdant_froglight"},{DataVersion:4435,Slot:13,components:{"minecraft:damage":0,"minecraft:debug_stick_state":{"minecraft:cyan_stained_glass_pane":"north"}},count:1,id:"minecraft:debug_stick"},{DataVersion:4435,Slot:14,count:1,id:"minecraft:blue_wool"},{DataVersion:4435,Slot:15,count:1,id:"minecraft:lapis_block"},{DataVersion:4435,Slot:16,count:1,id:"minecraft:smooth_stone_slab"},{DataVersion:4435,Slot:17,components:{"minecraft:custom_name":{extra:[{bold:1b,color:"red",italic:0b,obfuscated:0b,strikethrough:0b,text:"SpRiTe CrAnBeRrY",underlined:0b}],text:""},"minecraft:damage":0,"minecraft:lore":[{extra:[{bold:0b,color:"dark_gray",italic:0b,obfuscated:0b,strikethrough:1b,text:"----{-✦-}----",underlined:0b}],text:""},{extra:[{bold:0b,color:"dark_red",italic:0b,obfuscated:0b,strikethrough:0b,text:"It's the thirst, thirstiest time of the year",underlined:0b}],text:""},{extra:[{bold:0b,color:"dark_red",italic:0b,obfuscated:0b,strikethrough:0b,text:"I have just one query",underlined:0b}],text:""},{extra:[{bold:0b,color:"dark_red",italic:1b,obfuscated:0b,strikethrough:0b,text:"Wanna Sprite Cranberry?",underlined:0b}],text:""},{extra:[{bold:0b,color:"dark_gray",italic:0b,obfuscated:0b,strikethrough:1b,text:"----{-✦-}----",underlined:0b}],text:""},{extra:[{bold:0b,color:"dark_gray",italic:0b,obfuscated:0b,strikethrough:0b,text:"Mᴀɴᴜғᴀᴄᴛᴜʀᴇᴅ ʙʏ ",underlined:0b},{color:"gray",italic:0b,text:"Cʜᴀʙ Iɴᴄ"}],text:""}]},count:1,id:"minecraft:potion"},{DataVersion:4435,Slot:18,components:{"minecraft:debug_stick_state":{"minecraft:cyan_stained_glass_pane":"west","minecraft:polished_deepslate_wall":"west"}},count:1,id:"minecraft:debug_stick"},{DataVersion:4435,Slot:19,count:1,id:"minecraft:weathered_copper"},{DataVersion:4435,Slot:20,count:1,id:"minecraft:wooden_axe"},{DataVersion:4435,Slot:21,count:1,id:"minecraft:light_blue_glazed_terracotta"},{DataVersion:4435,Slot:22,count:1,id:"minecraft:ochre_froglight"},{DataVersion:4435,Slot:23,count:1,id:"minecraft:quartz_pillar"},{DataVersion:4435,Slot:25,count:1,id:"minecraft:pale_oak_wood"},{DataVersion:4435,Slot:26,count:1,id:"minecraft:wooden_axe"},{DataVersion:4435,Slot:28,count:1,id:"minecraft:quartz_block"},{DataVersion:4435,Slot:39,components:{"minecraft:attribute_modifiers":[{amount:64.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:block_interaction_range"},{amount:50.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:attack_speed"},{amount:8.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:entity_interaction_range"},{amount:10.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:flying_speed"},{amount:0.05d,id:"minecraft:1739357106359",operation:"add_multiplied_base",slot:"head",type:"minecraft:scale"},{amount:50.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:mining_efficiency"},{amount:1.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:water_movement_efficiency"},{amount:1.0d,id:"minecraft:1739357106359",operation:"add_value",slot:"head",type:"minecraft:movement_efficiency"},{amount:0.0d,id:"minecraft:1739357106359",operation:"add_multiplied_total",slot:"head",type:"minecraft:fall_damage_multiplier"},{amount:-0.15d,id:"minecraft:1739357106359",operation:"add_multiplied_base",slot:"head",type:"minecraft:gravity"},{amount:0.0d,id:"minecraft:813f3686-c5fb-4728-9cf7-866f7af289ec",operation:"add_value",type:"minecraft:armor"}],"minecraft:custom_name":{extra:[{color:"white",italic:0b,text:"☆ "},{color:"#D9D9D9",text:"yefre"},{color:"#E3B734",text:"i"},{color:"#CB476A",text:"t"},{color:"#7556CF",text:"o"},{color:"#5CC1D7",text:"r"},{color:"white",italic:0b,text:"'s hat ☆"}],text:""},"minecraft:equippable":{allowed_entities:"minecraft:player",equip_on_interact:1b,shearing_sound:"minecraft:entity.allay.ambient_with_item",slot:"head"},"minecraft:glider":{},"minecraft:item_model":"minecraft:air","minecraft:lore":[{extra:[{color:"gray",italic:0b,text:"if lost, return to "},{color:"#D9D9D9",text:"yefre"},{color:"#E3B734",text:"i"},{color:"#CB476A",text:"t"},{color:"#7556CF",text:"o"},{color:"#5CC1D7",text:"r"}],text:""}],"minecraft:rarity":"epic","minecraft:tooltip_display":{hidden_components:["minecraft:attribute_modifiers"]}},count:1,id:"minecraft:dark_oak_button"}],size:43}}] Classes: [java.lang.String]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.utils.nmsmappings.ReflectionMethod.run(ReflectionMethod.java:431) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.NBTContainer.(NBTContainer.java:77) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
... 30 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118) ~[?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.utils.nmsmappings.ReflectionMethod.run(ReflectionMethod.java:427) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
at HuskSync-Bukkit-3.8.7+mc.1.21.8.jar/net.william278.husksync.libraries.nbtapi.NBTContainer.(NBTContainer.java:77) ~[HuskSync-Bukkit-3.8.7+mc.1.21.8.jar:?]
... 30 more
Caused by: com.mojang.brigadier.exceptions.CommandSyntaxException: Expected literal ( at position 120: ...-Infinityd<--[HERE]

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: feature requestThis issue is about a new feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions