MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.67k stars 1.34k forks source link

BasicCrafting module causes crash during load after start game #5169

Closed LoudMouthJester closed 6 months ago

LoudMouthJester commented 10 months ago

link to pastebin

https://pastebin.com/zwKimUJd

any help much appreciated. game looks cool. can't wait to play

BenjaminAmos commented 10 months ago

This appears to be the main issue:

15:00:34.855 [main] ERROR o.t.engine.core.modes.StateLoading - Error while loading org.terasology.engine.core.modes.loadProcesses.LoadPrefabs@7d7097af
java.lang.IllegalArgumentException: Can not set java.util.SortedMap field org.terasology.crafting.listCrafting.components.ListRecipesComponent.recipes to java.util.LinkedHashMap
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
    at java.base/java.lang.reflect.Field.set(Field.java:780)
    at org.terasology.reflection.reflect.ReflectionReflectFactory$ReflectionFieldAccessor.setValue(ReflectionReflectFactory.java:127)
    at org.terasology.reflection.metadata.FieldMetadata.setValue(FieldMetadata.java:173)
    at org.terasology.persistence.typeHandling.Serializer.deserializeOnto(Serializer.java:84)
    at org.terasology.persistence.typeHandling.Serializer.deserializeOnto(Serializer.java:140)
    at org.terasology.engine.persistence.serializers.ComponentSerializer.deserializeOnto(ComponentSerializer.java:185)
    at org.terasology.engine.persistence.serializers.ComponentSerializer.deserialize(ComponentSerializer.java:101)
    at org.terasology.engine.persistence.serializers.PrefabSerializer.applyComponentChanges(PrefabSerializer.java:152)
    at org.terasology.engine.persistence.serializers.PrefabSerializer.deserialize(PrefabSerializer.java:124)
    at org.terasology.engine.persistence.serializers.PrefabSerializer.deserialize(PrefabSerializer.java:104)
    at org.terasology.engine.entitySystem.prefab.internal.PrefabFormat.load(PrefabFormat.java:45)
    at org.terasology.engine.entitySystem.prefab.internal.PrefabFormat.load(PrefabFormat.java:23)
    at org.terasology.gestalt.assets.format.producer.UnloadedAssetData$AssetSourceResolver.load(UnloadedAssetData.java:311)
    at org.terasology.gestalt.assets.format.producer.UnloadedAssetData.load(UnloadedAssetData.java:181)
    at org.terasology.gestalt.assets.format.producer.AssetFileDataProducer.getAssetData(AssetFileDataProducer.java:227)
    at org.terasology.gestalt.assets.AssetType.lambda$reload$2(AssetType.java:360)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.terasology.gestalt.assets.AssetType.reload(AssetType.java:358)
    at org.terasology.gestalt.assets.AssetType.getNormalAsset(AssetType.java:387)
    at org.terasology.gestalt.assets.AssetType.getAsset(AssetType.java:265)
    at org.terasology.gestalt.assets.management.AssetManager.getAsset(AssetManager.java:225)
    at org.terasology.engine.core.modes.loadProcesses.LoadPrefabs.step(LoadPrefabs.java:30)
    at org.terasology.engine.core.modes.StateLoading.update(StateLoading.java:259)

The ListRecipesComponent component in the BasicCrafting module is failing to deserialise.

https://github.com/Terasology/BasicCrafting/blob/88ff60ec129287c356abca505d7250989cc977b4/src/main/java/org/terasology/crafting/listCrafting/components/ListRecipesComponent.java#L22

public class ListRecipesComponent implements Component<ListRecipesComponent>, RecipeComponent {
    public List<String> categories = Collections.singletonList("InHand");
    public SortedMap<String, ListRecipeContainer> recipes = new TreeMap<>();

I'll need to double-check if SortedMap is supported.

BenjaminAmos commented 10 months ago

Did you manually enable the BasicCrafting module yourself? It still needs to be fixed but it shouldn't be enabled by-default. If you disable it then the game should load.

LoudMouthJester commented 10 months ago

yes i did. will give it a shot. ty

github-actions[bot] commented 9 months ago

Hey there @ , we want to express our appreciation for your initial contribution to this issue. However, we now mark it as stale since we haven't received any response from you in the past 30 days. If you're still available, we would greatly appreciate it if you could provide answers to any open questions and/or share the requested feedback/input. Thank you for your consideration, we hope to hear from you soon!

github-actions[bot] commented 6 months ago

Hey there @ , we want to express our appreciation for your initial contribution to this issue. However, we now mark it as closed since we haven't received any response from you in the past 90 days. If you're still available, we would greatly appreciate it if you could provide answers to any open questions and/or share the requested feedback/input. Thank you for your consideration, we hope to hear from you soon!