diff --git a/README.md b/README.md index dcc4490..5e5688a 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,8 @@ sudo apt install --reinstall libwebkit2gtk-4.1-0 - **The LCE Community** - Research and foundations for LCE on PC - **Str1k3r** - Original creator of LCEOnline - **DTention** - Original creator of [LCE-Save-Converter](https://github.com/dtentiion/LCE-Save-Converter) +- **dydymiku** - French translation +- **Hvrket** - Russian translation --- diff --git a/public/fonts/rus/COPYRIGHT.txt b/public/fonts/rus/COPYRIGHT.txt new file mode 100644 index 0000000..9b80eef --- /dev/null +++ b/public/fonts/rus/COPYRIGHT.txt @@ -0,0 +1 @@ +Copyright © 2004-2012, BOGDAN Software \ No newline at end of file diff --git a/public/fonts/rus/minecraft.ttf b/public/fonts/rus/minecraft.ttf new file mode 100755 index 0000000..93c7491 Binary files /dev/null and b/public/fonts/rus/minecraft.ttf differ diff --git a/src/components/common/SkinViewer.tsx b/src/components/common/SkinViewer.tsx index b5a1e6d..4328340 100644 --- a/src/components/common/SkinViewer.tsx +++ b/src/components/common/SkinViewer.tsx @@ -703,7 +703,7 @@ const SkinViewer = memo(function SkinViewer({ e.stopPropagation(); } }} - className="bg-transparent text-white focus:text-[#FFFF55] outline-none border-none text-center font-['Mojangles'] mc-text-shadow tracking-widest text-xl cursor-text" + className="bg-transparent text-white focus:text-[#FFFF55] outline-none border-none text-center font-[var(--font-base)] mc-text-shadow tracking-widest text-xl cursor-text" /> )} diff --git a/src/components/modals/CustomTUModal.tsx b/src/components/modals/CustomTUModal.tsx index d1bab44..206b49f 100644 --- a/src/components/modals/CustomTUModal.tsx +++ b/src/components/modals/CustomTUModal.tsx @@ -150,7 +150,7 @@ export default function CustomTUModal({ onChange={(e) => setName(e.target.value)} onFocus={() => setFocusIndex(0)} placeholder={t("modals.customTu.namePlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -165,7 +165,7 @@ export default function CustomTUModal({ onChange={(e) => setDesc(e.target.value)} onFocus={() => setFocusIndex(1)} placeholder={t("modals.customTu.descPlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -180,7 +180,7 @@ export default function CustomTUModal({ onChange={(e) => setUrl(e.target.value)} onFocus={() => setFocusIndex(2)} placeholder={t("modals.customTu.urlPlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -194,7 +194,7 @@ export default function CustomTUModal({ type="text" readOnly value={path} - className="w-full h-10 px-3 bg-black/20 border-2 border-[#222] text-black text-xs outline-none font-['Mojangles'] cursor-not-allowed" + className="w-full h-10 px-3 bg-black/20 border-2 border-[#222] text-black text-xs outline-none font-[var(--font-base)] cursor-not-allowed" style={{ imageRendering: "pixelated" }} /> diff --git a/src/components/modals/GameLogModal.tsx b/src/components/modals/GameLogModal.tsx index 83efadc..e8fb917 100644 --- a/src/components/modals/GameLogModal.tsx +++ b/src/components/modals/GameLogModal.tsx @@ -135,7 +135,7 @@ export default function GameLogModal({ exit={{ y: 20, opacity: 0 }} transition={{ duration: 0.15 }} onClick={(e) => e.stopPropagation()} - className="flex flex-col w-[640px] max-w-[92vw] max-h-[85vh] p-5 font-['Mojangles'] mc-options-bg" + className="flex flex-col w-[640px] max-w-[92vw] max-h-[85vh] p-5 font-[var(--font-base)] mc-options-bg" >

{t("modals.gameLog.title")} diff --git a/src/components/modals/OptionsModal.tsx b/src/components/modals/OptionsModal.tsx index 8495dae..8f04ddc 100644 --- a/src/components/modals/OptionsModal.tsx +++ b/src/components/modals/OptionsModal.tsx @@ -273,7 +273,7 @@ export default function OptionsModal({ })); }} onFocus={() => setFocusIndex(index)} - className={`w-24 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none text-center font-['Mojangles'] focus:border-[#FFFF55] [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none ${ + className={`w-24 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none text-center font-[var(--font-base)] focus:border-[#FFFF55] [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -293,7 +293,7 @@ export default function OptionsModal({ setValues((prev) => ({ ...prev, [option.id]: e.target.value })); }} onFocus={() => setFocusIndex(index)} - className={`w-44 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none font-['Mojangles'] focus:border-[#FFFF55] ${ + className={`w-44 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none font-[var(--font-base)] focus:border-[#FFFF55] ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -311,7 +311,7 @@ export default function OptionsModal({ setValues((prev) => ({ ...prev, [option.id]: e.target.value })); }} onFocus={() => setFocusIndex(index)} - className={`w-44 h-8 bg-white border-2 border-[#373737] text-black text-sm px-2 outline-none font-['Mojangles'] focus:border-[#FFFF55] ${ + className={`w-44 h-8 bg-white border-2 border-[#373737] text-black text-sm px-2 outline-none font-[var(--font-base)] focus:border-[#FFFF55] ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -433,7 +433,7 @@ export default function OptionsModal({ } }} > -
+

{t("modals.options.title")}

diff --git a/src/components/modals/SetUidModal.tsx b/src/components/modals/SetUidModal.tsx index fb9c5ab..8bc5f96 100644 --- a/src/components/modals/SetUidModal.tsx +++ b/src/components/modals/SetUidModal.tsx @@ -189,7 +189,7 @@ export default function SetUidModal({ onChange={(e) => setUid(e.target.value)} onFocus={() => setFocusIndex(2)} placeholder="0xFF02F0C87E8AC1F2" - className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} text-white text-base outline-none font-['Mojangles'] text-center`} + className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} text-white text-base outline-none font-[var(--font-base)] text-center`} style={{ imageRendering: "pixelated", filter: focusIndex === 2 ? 'brightness(1.2)' : 'none' }} />
@@ -203,7 +203,7 @@ export default function SetUidModal({ onClick={() => { playPressSound(); setIsDropdownOpen(!isDropdownOpen); }} onFocus={() => { setFocusIndex(2); setIsDropdownOpen(false); }} tabIndex={0} - className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} flex items-center justify-between text-white text-base outline-none font-['Mojangles'] cursor-pointer`} + className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} flex items-center justify-between text-white text-base outline-none font-[var(--font-base)] cursor-pointer`} style={{ imageRendering: "pixelated", filter: focusIndex === 2 ? 'brightness(1.2)' : 'none' }} > @@ -227,7 +227,7 @@ export default function SetUidModal({ setSelectedInstance(i.instanceId); setIsDropdownOpen(false); }} - className="px-3 py-2 text-white text-sm cursor-pointer truncate font-['Mojangles']" + className="px-3 py-2 text-white text-sm cursor-pointer truncate font-[var(--font-base)]" > {i.name} {i.selectedBranch ? `(${i.selectedBranch})` : ""}
diff --git a/src/components/views/CreditsView.tsx b/src/components/views/CreditsView.tsx index 9f3b370..d8a81d1 100644 --- a/src/components/views/CreditsView.tsx +++ b/src/components/views/CreditsView.tsx @@ -256,6 +256,19 @@ const CreditsView = memo(function CreditsView() { category: "SPECIAL THANKS", icon: "", subcategories: [ + { + name: "Emerald Translations", + icon: "", + roles: [ + { + role: "", + members: [ + { name: "dydymiku (French)", url: "#" }, + { name: "DimsMaybe/Hvrket (Russian)", url: "#" }, + ], + }, + ], + }, ...(isAndroid ? [ { @@ -341,7 +354,8 @@ const CreditsView = memo(function CreditsView() { }} > {t("credits.backToMenu")} - )} + + )} -
+

{t("goldMapper.assign", { name: displayName(editing) })}

diff --git a/src/components/views/ScreenshotsView.tsx b/src/components/views/ScreenshotsView.tsx index 620411e..5927ca8 100644 --- a/src/components/views/ScreenshotsView.tsx +++ b/src/components/views/ScreenshotsView.tsx @@ -162,7 +162,7 @@ const ScreenshotsView = memo(function ScreenshotsView() { animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.95 }} transition={{ duration: animationsEnabled ? 0.3 : 0 }} - className="flex flex-col items-center w-full h-full max-w-6xl relative font-['Mojangles'] text-white select-none outline-none focus:outline-none" + className="flex flex-col items-center w-full h-full max-w-6xl relative font-[var(--font-base)] text-white select-none outline-none focus:outline-none" >

{t("screenshots.title")} diff --git a/src/components/views/SettingsView.tsx b/src/components/views/SettingsView.tsx index e039505..bc79dfb 100644 --- a/src/components/views/SettingsView.tsx +++ b/src/components/views/SettingsView.tsx @@ -590,6 +590,7 @@ const SettingsView = memo(function SettingsView() { //neo: here goes the list, dont ask why its here { code: "en", label: "English" }, { code: "fr", label: "Français (French)" }, // by Dydymiku (thanks!!) + { code: "ru", label: "Pусский (Russian)" }, // by brnwvshed (thanks!!) ]; for (const lang of availableLanguages) { const isCurrent = i18n.resolvedLanguage?.startsWith(lang.code); @@ -1122,7 +1123,7 @@ const SettingsView = memo(function SettingsView() { value={argsInput} onChange={(e) => setArgsInput(e.target.value)} placeholder="e.g. -quitondisconnect -ip 127.0.0.1" - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles'] text-center" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)] text-center" style={{ imageRendering: "pixelated" }} />
@@ -1202,7 +1203,7 @@ const SettingsView = memo(function SettingsView() { value={prefixInput} onChange={(e) => setPrefixInput(e.target.value)} placeholder="e.g. gamemoderun" - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles'] text-center" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)] text-center" style={{ imageRendering: "pixelated" }} />
@@ -1282,7 +1283,7 @@ const SettingsView = memo(function SettingsView() { onChange={(e) => setEnvVarsInput(e.target.value)} placeholder="WINEDLLOVERRIDES=foo=n MANGOHUD=1" rows={6} - className="w-full px-3 py-2 bg-black/40 border-2 border-[#373737] text-white text-sm outline-none font-['Mojangles'] resize-none" + className="w-full px-3 py-2 bg-black/40 border-2 border-[#373737] text-white text-sm outline-none font-[var(--font-base)] resize-none" style={{ imageRendering: "pixelated" }} />
diff --git a/src/components/views/WorkshopView.tsx b/src/components/views/WorkshopView.tsx index 17dbee1..f061678 100644 --- a/src/components/views/WorkshopView.tsx +++ b/src/components/views/WorkshopView.tsx @@ -753,7 +753,7 @@ const WorkshopView = memo(function WorkshopView({ animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.95 }} transition={{ duration: config.animationsEnabled ? 0.3 : 0 }} - className="flex flex-col items-center w-full h-full max-h-full relative font-['Mojangles'] text-white select-none outline-none focus:outline-none" + className="flex flex-col items-center w-full h-full max-h-full relative font-[var(--font-base)] text-white select-none outline-none focus:outline-none" >
{search && (