Mod Version (e.g. Fabric 0.3.4):
What you expect to happen:
Right-clicking an engraving feature should load it into a held Scriptionary when playing on a dedicated server, like it does on single player.
What actually happens:
The server crashes :(
Minimal mod set to reproduce:
- Fabric Loader: [0.19.2]
- Fabric API [0.116.11+1.21.1]
- Fabric Language Kotlin [1.13.10+kotlin.2.3.20]
- Unfocused [0.3.1-1.21.1]
How I produced:
Spawned a Scriptionary in creative and right-clicked the nearest engraving feature I could find.
Callstack:
Time: 2026-04-16 20:27:05
Description: Exception in server tick loop
java.lang.NoClassDefFoundError: net/minecraft/class_1074
at knot//com.ssblur.scriptor.data.components.DictionaryData.withWord(DictionaryData.kt:26)
at knot//com.ssblur.scriptor.data.components.DictionaryData.withWord$default(DictionaryData.kt:24)
at knot//com.ssblur.scriptor.block.ChalkBlock.method_55765(ChalkBlock.kt:69)
at knot//net.minecraft.class_4970$class_4971.method_55780(class_4970.java:1169)
at knot//net.minecraft.class_3225.method_14262(class_3225.java:348)
at knot//net.minecraft.class_3244.method_12046(class_3244.java:1158)
at knot//net.minecraft.class_2885.method_12547(class_2885.java:42)
at knot//net.minecraft.class_2885.method_11054(class_2885.java:10)
at knot//net.minecraft.class_2600.method_11072(class_2600.java:27)
at knot//net.minecraft.class_3738.run(class_3738.java:18)
at knot//net.minecraft.class_1255.method_18859(class_1255.java:162)
at knot//net.minecraft.class_4093.method_18859(class_4093.java:23)
at knot//net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:864)
at knot//net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:173)
at knot//net.minecraft.class_1255.method_16075(class_1255.java:136)
at knot//net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:846)
at knot//net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:840)
at knot//net.minecraft.class_1255.method_18857(class_1255.java:145)
at knot//net.minecraft.server.MinecraftServer.method_18857(MinecraftServer.java:810)
at knot//net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:815)
at knot//net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:702)
at knot//net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:281)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: net.minecraft.class_1074
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:239)
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 23 more
Sorry, I couldn't find tools to deobfuscate this after the fact. Next time I'll look for a mod.
Root Cause:
Thanks to the help of my favorite slop inferer, I think this is happening because we're trying to call client.resources.language.I18n from the server when constructing a DictionaryData:
|
fun withWord(word: String, definition: String? = null, overwrite: Boolean = false): DictionaryData { |
|
return if(overwrite || values.none { it.first() == word }) |
|
DictionaryData(values + listOf(listOf(word, definition ?: I18n.get("extra.scriptor.no_entry")))) |
|
else |
|
this |
|
} |
Which is then called from the chalk block specific interaction:
|
if(itemStack matches ScriptorItems.DICTIONARY.get()) { |
|
val data = itemStack[ScriptorDataComponents.DICTIONARY_DATA] ?: DictionaryData(listOf()) |
|
itemStack[ScriptorDataComponents.DICTIONARY_DATA] = data.withWord(blockEntity.word) |
|
return ItemInteractionResult.SUCCESS |
|
} |
Unfortunately, I don't really know Kotlin or understand the game's code that well, so I'm not in a position to offer you a good fix.
Mod Version (e.g. Fabric 0.3.4):
What you expect to happen:
Right-clicking an engraving feature should load it into a held Scriptionary when playing on a dedicated server, like it does on single player.
What actually happens:
The server crashes :(
Minimal mod set to reproduce:
How I produced:
Spawned a Scriptionary in creative and right-clicked the nearest engraving feature I could find.
Callstack:
Sorry, I couldn't find tools to deobfuscate this after the fact. Next time I'll look for a mod.
Root Cause:
Thanks to the help of my favorite slop inferer, I think this is happening because we're trying to call
client.resources.language.I18nfrom the server when constructing aDictionaryData:scriptor/common/src/main/kotlin/com/ssblur/scriptor/data/components/DictionaryData.kt
Lines 24 to 29 in 7cc396e
Which is then called from the chalk block specific interaction:
scriptor/common/src/main/kotlin/com/ssblur/scriptor/block/ChalkBlock.kt
Lines 67 to 71 in 7cc396e
Unfortunately, I don't really know Kotlin or understand the game's code that well, so I'm not in a position to offer you a good fix.