Fix Turkish-locale casing bug in slot type id#621
Conversation
Preset.id() used toLowerCase() with the system locale. On a Turkish locale JVM, 'I' lowercases to dotless 'ı' (U+0131), turning CURIO into an invalid resource path (curıo) and crashing at startup. Use Locale.ROOT so slot ids stay locale-independent.
|
hi! sorry i don't get this, so like is this fixed now? my friend whos system is in turkish is facing this problem right now we are using the modpack ATM11 how do i fix this? thank you! |
If they allow it in yes it will be fixed |
|
Hi
Like is there any way i could change it in the file myself so it can work
right now?
Thank you!!!! (Sorry if this is a stupid question lol)
…On Thu, Jul 9, 2026, 12:19 AM Cole Munz ***@***.***> wrote:
*munzzyy* left a comment (TheIllusiveC4/Curios#621)
<#621 (comment)>
hi! sorry i don't get this, so like is this fixed now? my friend whos
system is in turkish is facing this problem right now
we are using the modpack ATM11
how do i fix this? thank you!
If they allow it in yes it will be fixed
—
Reply to this email directly, view it on GitHub
<#621?email_source=notifications&email_token=BV2DHJG4LGLS25UPEMQ6RBD5D23FBA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJRHEZTCMJQGU2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4919311054>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BV2DHJGPT3HXFTO7WHJFZR35D23FBAVCNFSNUABFKJSXA33TNF2G64TZHMYTKMZTGY2TSOBXHNEXG43VMU5TIOBRGE2TGNBTGQ22C5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BV2DHJH3EHHAUMD5NM2DHVL5D23FBA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJRHEZTCMJQGU2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/BV2DHJFVDH45VGHOF7U47MT5D23FBA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJRHEZTCMJQGU2KM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you commented.Message ID:
***@***.***>
|
|
The actual code fix is one line in The practical workaround: force English as the JVM locale for the game itself, so
That overrides the locale Minecraft launches with regardless of the OS locale, so it should stop the crash without your friend having to change their whole system language. I haven't tested this on ATM11 specifically, but it's the standard fix for this class of Java locale bug and matches what this PR changes under the hood. It's still TheIllusiveC4's call whether/when to merge - I don't maintain this mod. |
|
Hey so unfortunately my friend had already inputted that exact code into
the java arguments field. Even i tried increasing ny RAM allocation on that
launcher but it didn't work
Is there any way he could fix this without using that? Or is there a file
where you can use to input things you would input there. I'm assuming not,
but thanks
…On Thu, Jul 9, 2026, 11:00 PM Cole Munz ***@***.***> wrote:
*munzzyy* left a comment (TheIllusiveC4/Curios#621)
<#621 (comment)>
The actual code fix is one line in CuriosSlotTypes.java (toLowerCase() ->
toLowerCase(Locale.ROOT)), but that's compiled into the mod jar, so
editing it yourself would mean building Curios from source with
NeoForge/Gradle - not something worth doing just to play the modpack.
The practical workaround: force English as the JVM locale for the game
itself, so toLowerCase() never hits the Turkish "dotless i" behavior in
the first place. In your launcher (CurseForge/whatever ATM11 uses), find
the JVM/Java arguments field and add:
-Duser.language=en -Duser.country=US
That overrides the locale Minecraft launches with regardless of the OS
locale, so it should stop the crash without your friend having to change
their whole system language. I haven't tested this on ATM11 specifically,
but it's the standard fix for this class of Java locale bug and matches
what this PR changes under the hood.
It's still TheIllusiveC4's call whether/when to merge - I don't maintain
this mod.
—
Reply to this email directly, view it on GitHub
<#621?email_source=notifications&email_token=BV2DHJDTGMA57OFPVR6I4IT5D72VXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJSHEYDENJQGAYKM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4929025000>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BV2DHJDADTIRC5UBWRRHSAT5D72VXAVCNFSNUABFKJSXA33TNF2G64TZHMYTKMZTGY2TSOBXHNEXG43VMU5TIOBRGE2TGNBTGQ22C5QC>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BV2DHJDQBEPTHGTI6MCOEMT5D72VXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJSHEYDENJQGAYKM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/BV2DHJAZ5ZM4DRVBOTEWYAL5D72VXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJSHEYDENJQGAYKM4TFMFZW63VHMNXW23LFNZ2KKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you commented.Message ID:
***@***.***>
|
|
That's odd if the args are actually in place - RAM allocation wouldn't touch this at all, so it's possible your friend is hitting a different crash entirely and we're just guessing in the dark right now. Can you grab the crash report or latest.log from the instance folder (crash-reports/ or logs/latest.log) and paste it, or link it somewhere like Pastebin/Gist? That'll tell us for sure - if it's this bug the log will mention a slot type id with a weird capital I in it. It also has a line near the top listing the actual JVM flags the game launched with, so we can check the -Duser.language args actually made it into that instance and not just the launcher's default profile. Some launchers apply "global" Java args to new instances but not existing ones, so ATM11 might need the flags set on the instance itself rather than wherever your friend put them. If the log turns out to be something else, this thread won't really be the place to sort it out - that'd be worth its own report on the ATM11 pack's issue tracker with the log attached. |
Fixes #611.
Preset.id()callstoString().toLowerCase()with no locale, so it uses whatever locale the JVM is running under. On a Turkish locale (-Duser.language=tr -Duser.country=TR),toLowerCase()turnsIinto a dotlessı(U+0131) instead ofi. That turnsCURIOintocurıo, which isn't a valid resource path, and the game crashes on startup buildingCuriosTags.Switched it to
toLowerCase(Locale.ROOT)so the id is locale-independent.I only touched this one call site since it's the one in the crash trace. There are a few other
toLowerCase()/toUpperCase()calls elsewhere in the codebase (DropRule,SlotType,CurioSlot,SlotData,CuriosClientEvents) that take the same risk if the input string ever contains a locale-sensitive letter. Left them out of this PR to keep the diff focused, but flagging them here in case a follow-up sweep is worth doing.Couldn't run a full build locally (NeoForge/Gradle toolchain), so this hasn't been tested in a running game. The change itself is a one-line locale fix with well-defined behavior, but wanted to be upfront about that.