IntellectualSites / IntellectualSites/FastAsyncWorldEdit

LinBus fails to deserialize BaseItem using BaseItemAdapter

Open
#2,991 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug
Dominant language
Java
Stars
806
Forks
394
Avg merge
22h 19m
Merged PRs (30d)
14

Description

Server Implementation

Paper

Server Version

1.21.3

Describe the bug

Most likely since the LinBus introduction?

To Reproduce

session data (in sessions folder):

{"selector":"CUBOID","useServerCUI":false,"wandItem":{"itemType":{"id":"minecraft:wooden_axe"},"nbt":"{}"},"navWandItem":{"itemType":{"id":"minecraft:compass"}}}
Expected behaviour
Screenshots / Videos

No response

Error log (if applicable)

No response

Fawe Debugpaste
Fawe Version
Checklist
Anything else?
Caused by: org.enginehub.linbus.stream.exception.NbtParseException: At character index 1: Unexpected token: '}', expected Text
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.format.snbt.impl.reader.LinSnbtReader.unexpectedTokenSpecificError(LinSnbtReader.java:165) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.format.snbt.impl.reader.LinSnbtReader.readName(LinSnbtReader.java:256) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.format.snbt.impl.reader.LinSnbtReader.fillTokenStack(LinSnbtReader.java:187) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.format.snbt.impl.reader.LinSnbtReader.nextOrNull(LinSnbtReader.java:176) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.stream.impl.OptionalInfoCalculator.nextOrNull(OptionalInfoCalculator.java:68) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.tree.impl.LinTagReader.readCompound(LinTagReader.java:93) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/org.enginehub.linbus.tree.LinCompoundTag.readFrom(LinCompoundTag.java:257) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.fastasyncworldedit.core.util.gson.BaseItemAdapter.deserialize(BaseItemAdapter.java:42) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.fastasyncworldedit.core.util.gson.BaseItemAdapter.deserialize(BaseItemAdapter.java:21) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:433) ~[gson-2.10.1.jar:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:393) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1227) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1137) ~[gson-2.10.1.jar:?]
        at com.google.gson.Gson.fromJson(Gson.java:1075) ~[gson-2.10.1.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.sk89q.worldedit.session.storage.JsonFileSessionStore.load(JsonFileSessionStore.java:104) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.sk89q.worldedit.session.SessionManager.get(SessionManager.java:160) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.sk89q.worldedit.extension.platform.PlatformManager.handleBlockInteract(PlatformManager.java:393) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.sk89q.worldedit.util.eventbus.MethodHandleEventHandler.dispatch(MethodHandleEventHandler.java:51) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]
        at FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar/com.sk89q.worldedit.util.eventbus.EventHandler.handleEvent(EventHandler.java:73) ~[FastAsyncWorldEdit-Bukkit-2.12.1-SNAPSHOT-965.jar:?]```

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with com.fastasyncworldedit.core.util.gson.BaseItemAdapter.deserialize and the failing path through LinCompoundTag.readFrom and LinSnbtReader.readName. Reproduce loading the session JSON containing an empty "nbt":"{}" value, then inspect the relevant LinBus parsing behavior. Done means the BaseItem data deserializes without the reported NbtParseException and the regression is covered by an appropriate test.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.