Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
6989885
Update translations: refine renderer descriptions across multiple lan…
Glavo Apr 8, 2026
1299402
feat: add Mesa Lavapipe renderer support and update translations
Glavo Apr 8, 2026
7e0f954
feat: enhance renderer selection based on game version and add Vulkan…
Glavo Apr 8, 2026
1b7f360
feat: add support for Lavapipe and Zink renderers in Vulkan environme…
Glavo Apr 8, 2026
582856f
Fix Lavapipe renderer architecture detection using Java runtime infor…
Glavo Apr 8, 2026
9c59bda
refactor: remove unused import for StreamSupport in Renderer.java
Glavo Apr 8, 2026
18d71e4
feat: add Vulkan-based renderer list in Renderer.java
Glavo Apr 8, 2026
5d136d2
feat: add Mesa Dozen renderer support and update translations
Glavo Apr 8, 2026
7417630
feat: add Mesa Dozen renderer support and update translations
Glavo Apr 8, 2026
1e700e9
refactor: extract Vulkan descriptor file lookup into a helper method
Glavo Apr 8, 2026
fd5b0e5
feat: add environment variable methods to LaunchOptions Builder
Glavo Apr 8, 2026
509e2f4
refactor: update renderer condition checks in LauncherHelper
Glavo Apr 8, 2026
4a4ca5e
feat: add VK_DRIVER_FILES environment variable and update Mesa loader…
Glavo Apr 8, 2026
54945ac
refactor: simplify Windows Mesa loader method and update Renderer enum
Glavo Apr 10, 2026
32a102e
feat: add Vulkan-based renderer list in Renderer.java
Glavo Apr 10, 2026
a5fb944
refactor: pass nativeFolder to getEnvVars and update Vulkan ICD handling
Glavo Apr 10, 2026
4ea9843
refactor: remove unused JavaRuntime import in DefaultLauncher.java
Glavo Apr 10, 2026
cfb6029
Update Mesa loader to version 26.0.4 for Windows platforms
Glavo Apr 10, 2026
78f2d01
feat: add nativeDir configuration for Mesa loader on Windows
Glavo Apr 10, 2026
fd99713
refactor: update nativeDir configuration for Mesa loader in DefaultLa…
Glavo Apr 10, 2026
5214e65
refactor: remove unused Version import in AdvancedVersionSettingPage.…
Glavo Apr 10, 2026
4f960d9
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
5e88091
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
67104c5
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
02d776c
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
899df6f
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
a946079
refactor: remove unused GameVersionNumber import and simplify rendere…
Glavo Apr 10, 2026
bfe9509
Merge branch 'vulkan' of https://github.com/Glavo/HMCL into vulkan
Glavo Apr 10, 2026
4e50de3
Update HMCL/src/main/resources/assets/lang/I18N_zh.properties
Glavo Apr 10, 2026
4f02888
Disable Dozen renderer
Glavo Apr 10, 2026
a35f438
Add OpenGL and Vulkan renderer options and update launcher logic
Glavo Apr 10, 2026
9110a0d
Fix renderer filtering and add version-based renderer selection
Glavo Apr 10, 2026
29b0a29
Update renderer descriptions to include "default" terminology
Glavo Apr 10, 2026
3c84dd4
Reorder ZINK renderer in Renderer.java
Glavo Apr 10, 2026
f555606
Reorder OPENGL renderer in Renderer.java
Glavo Apr 10, 2026
aca0ef6
refactor: rename `getMesaLoaderName` to `getMesaDriverName` and updat…
Glavo Apr 10, 2026
66399db
Fix Vulkan descriptor file path list formatting in DefaultLauncher.java
Glavo Apr 10, 2026
3cccec0
Use GameVersionNumber.compare for version comparison in DefaultLaunch…
Glavo Apr 10, 2026
060f66b
refactor: replace API enum with GraphicsAPI in renderer and launcher …
Glavo Apr 10, 2026
5926f95
feat: add graphics backend setting in VersionSetting.java
Glavo Apr 10, 2026
c9d18f5
feat: integrate graphics backend selection with renderer settings and…
Glavo Apr 10, 2026
f27c48b
refactor: remove outdated documentation for getApi method in Renderer…
Glavo Apr 10, 2026
5e09e22
fix: set default renderer items in AdvancedVersionSettingPage
Glavo Apr 10, 2026
17d1d49
fix: maintain reference to popup items in LineSelectButton
Glavo Apr 10, 2026
2c668b1
feat: update graphics backend handling in launcher and settings
Glavo Apr 10, 2026
eb55079
feat: enhance graphics backend descriptions and handling for Vulkan s…
Glavo Apr 10, 2026
21f0110
feat: update Dozen renderer handling and mark as experimental in UI d…
Glavo Apr 10, 2026
a68ca57
fix: update Vulkan rendering descriptions for clarity and consistency
Glavo Apr 10, 2026
e66ee2c
refactor: remove system default OpenGL and Vulkan renderer options fr…
Glavo Apr 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,7 @@ public LaunchOptions.Builder getLaunchOptions(String version, JavaRuntime javaVe
.setNativesDirType(vs.getNativesDirType())
.setNativesDir(vs.getNativesDir())
.setProcessPriority(vs.getProcessPriority())
.setGraphicsBackend(vs.getGraphicsBackend())
.setRenderer(vs.getRenderer())
.setEnableDebugLogOutput(vs.isEnableDebugLogOutput())
.setUseNativeGLFW(vs.isUseNativeGLFW())
Expand Down
36 changes: 19 additions & 17 deletions HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,26 +174,27 @@ private void launch0() {
}),
Task.composeAsync(() -> {
Renderer renderer = setting.getRenderer();
if (renderer != Renderer.DEFAULT && OperatingSystem.CURRENT_OS == OperatingSystem.WINDOWS) {
Library lib = NativePatcher.getWindowsMesaLoader(java, renderer, OperatingSystem.SYSTEM_VERSION);
if (lib == null)
return null;
Path file = dependencyManager.getGameRepository().getLibraryFile(version.get(), lib);
if (file.toAbsolutePath().toString().indexOf('=') >= 0) {
LOG.warning("Invalid character '=' in the libraries directory path, unable to attach software renderer loader");
return null;
}
if (renderer == null || renderer.getMesaDriverName() == null
|| OperatingSystem.CURRENT_OS != OperatingSystem.WINDOWS) {
return null;
}

Library lib = NativePatcher.getWindowsMesaLoader(java, renderer, OperatingSystem.SYSTEM_VERSION);
if (lib == null)
return null;
Path file = dependencyManager.getGameRepository().getLibraryFile(version.get(), lib);
if (file.toAbsolutePath().toString().indexOf('=') >= 0) {
LOG.warning("Invalid character '=' in the libraries directory path, unable to attach software renderer loader");
return null;
}

String agent = FileUtils.getAbsolutePath(file) + "=" + renderer.name().toLowerCase(Locale.ROOT);
String agent = FileUtils.getAbsolutePath(file) + "=" + renderer.getMesaDriverName();

if (GameLibrariesTask.shouldDownloadLibrary(repository, version.get(), lib, integrityCheck)) {
return new LibraryDownloadTask(dependencyManager, file, lib)
.thenRunAsync(() -> javaAgents.add(agent));
} else {
javaAgents.add(agent);
return null;
}
if (GameLibrariesTask.shouldDownloadLibrary(repository, version.get(), lib, integrityCheck)) {
return new LibraryDownloadTask(dependencyManager, file, lib)
.thenRunAsync(() -> javaAgents.add(agent));
} else {
javaAgents.add(agent);
return null;
}
})
Expand Down Expand Up @@ -232,6 +233,7 @@ private void launch0() {
if (quickPlayOption != null) {
launchOptionsBuilder.setQuickPlayOption(quickPlayOption);
}

LaunchOptions launchOptions = launchOptionsBuilder.create();

LOG.info("Here's the structure of game mod directory:\n" + FileUtils.printFileStructure(repository.getModsDirectory(selectedVersion), 10));
Expand Down
24 changes: 24 additions & 0 deletions HMCL/src/main/java/org/jackhuang/hmcl/setting/VersionSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,20 @@ public void setProcessPriority(ProcessPriority processPriority) {
processPriorityProperty.set(processPriority);
}

private final ObjectProperty<GraphicsAPI> graphicsBackend = new SimpleObjectProperty<>(this, "graphicsBackend", GraphicsAPI.DEFAULT);

public ObjectProperty<GraphicsAPI> graphicsBackendProperty() {
return graphicsBackend;
}

public GraphicsAPI getGraphicsBackend() {
return graphicsBackendProperty().get();
}

public void setGraphicsBackend(GraphicsAPI api) {
graphicsBackendProperty().set(api);
}

private final ObjectProperty<Renderer> rendererProperty = new SimpleObjectProperty<>(this, "renderer", Renderer.DEFAULT);

public Renderer getRenderer() {
Expand Down Expand Up @@ -820,6 +834,7 @@ public JsonElement serialize(VersionSetting src, Type typeOfSrc, JsonSerializati
}
obj.addProperty("java", java);

obj.addProperty("graphicsBackend", src.getGraphicsBackend().name());
obj.addProperty("renderer", src.getRenderer().name());
if (src.getRenderer() == Renderer.LLVMPIPE)
obj.addProperty("useSoftwareRenderer", true);
Expand Down Expand Up @@ -905,6 +920,15 @@ public VersionSetting deserialize(JsonElement json, Type typeOfT, JsonDeserializ
return useSoftwareRenderer ? Renderer.LLVMPIPE : Renderer.DEFAULT;
}));

vs.setGraphicsBackend(Optional.ofNullable(obj.get("graphicsBackend")).map(JsonElement::getAsString)
.flatMap(name -> {
try {
return Optional.of(GraphicsAPI.valueOf(name.toUpperCase(Locale.ROOT)));
} catch (IllegalArgumentException ignored) {
return Optional.empty();
}
}).orElseGet(() -> vs.getRenderer().getApi()));

return vs;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import javafx.collections.ObservableList;
import javafx.css.PseudoClass;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.input.*;
import javafx.scene.layout.StackPane;
Expand All @@ -49,6 +50,8 @@ public class LineSelectButton<T> extends LineButton {
private static final PseudoClass SELECTED_PSEUDO_CLASS = PseudoClass.getPseudoClass("selected");

private JFXPopup popup;
@SuppressWarnings({"FieldCanBeLocal", "unused"})
private ObservableList<Node> popupItems; // keep a reference

public LineSelectButton() {
this.getStyleClass().add(DEFAULT_STYLE_CLASS);
Expand Down Expand Up @@ -87,7 +90,7 @@ public void fire() {

ripplerContainer.addEventFilter(ScrollEvent.ANY, ignored -> popup.hide());

Bindings.bindContent(popupMenu.getContent(), MappedObservableList.create(itemsProperty(), item -> {
Bindings.bindContent(popupMenu.getContent(), popupItems = MappedObservableList.create(itemsProperty(), item -> {
VBox vbox = new VBox();

var itemTitleLabel = new Label();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import javafx.scene.control.Label;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.*;
import org.jackhuang.hmcl.game.GraphicsAPI;
import org.jackhuang.hmcl.game.NativesDirectoryType;
import org.jackhuang.hmcl.game.Renderer;
import org.jackhuang.hmcl.setting.Profile;
Expand All @@ -36,6 +37,7 @@
import org.jackhuang.hmcl.util.io.FileUtils;
import org.jackhuang.hmcl.util.platform.OperatingSystem;
import org.jackhuang.hmcl.util.platform.Platform;
import org.jackhuang.hmcl.util.versioning.GameVersionNumber;
import org.jetbrains.annotations.Nullable;

import java.nio.file.FileSystems;
Expand Down Expand Up @@ -69,6 +71,7 @@ public final class AdvancedVersionSettingPage extends StackPane implements Decor
private final ComponentSublist nativesDirSublist;
private final MultiFileItem<NativesDirectoryType> nativesDirItem;
private final MultiFileItem.FileOption<NativesDirectoryType> nativesDirCustomOption;
private final LineSelectButton<GraphicsAPI> graphicsBackendPane;
private final LineSelectButton<Renderer> rendererPane;

public AdvancedVersionSettingPage(Profile profile, @Nullable String versionId, VersionSetting versionSetting) {
Expand All @@ -79,6 +82,10 @@ public AdvancedVersionSettingPage(Profile profile, @Nullable String versionId, V
versionId == null ? i18n("settings.advanced") : i18n("settings.advanced.title", versionId)
));

@Nullable GameVersionNumber gameVersion = versionId != null
? GameVersionNumber.asGameVersion(profile.getRepository().getGameVersion(versionId))
: null;

this.getStyleClass().add("gray-background");

ScrollPane scrollPane = new ScrollPane();
Expand Down Expand Up @@ -185,14 +192,51 @@ public AdvancedVersionSettingPage(Profile profile, @Nullable String versionId, V
nativesDirHint.setText(i18n("settings.advanced.natives_directory.hint"));
nativesDirItem.getChildren().add(nativesDirHint);

graphicsBackendPane = new LineSelectButton<>();
graphicsBackendPane.setTitle(i18n("settings.advanced.graphics_backend"));
graphicsBackendPane.setConverter(backend -> i18n("settings.advanced.graphics_backend." + backend.name().toLowerCase(Locale.ROOT)));
graphicsBackendPane.setDescriptionConverter(backend -> switch (backend) {
case DEFAULT -> i18n("settings.advanced.graphics_backend.default.desc");
case OPENGL -> i18n("settings.advanced.graphics_backend.opengl.desc");
case VULKAN -> {
if (gameVersion == null)
yield i18n("settings.advanced.graphics_backend.vulkan.desc.global");
else if (gameVersion.compareTo("26.2-snapshot-2") < 0)
yield i18n("settings.advanced.graphics_backend.vulkan.desc.unsupported");
else
yield i18n("settings.advanced.graphics_backend.vulkan.desc");
}
default -> null;
});
graphicsBackendPane.setValue(GraphicsAPI.DEFAULT);
graphicsBackendPane.setItems(GraphicsAPI.values());

rendererPane = new LineSelectButton<>();
rendererPane.setTitle(i18n("settings.advanced.renderer"));
rendererPane.setConverter(e -> i18n("settings.advanced.renderer." + e.name().toLowerCase(Locale.ROOT)));
rendererPane.setDescriptionConverter(e -> {
String bundleKey = "settings.advanced.renderer." + e.name().toLowerCase(Locale.ROOT) + ".desc";
return I18n.hasKey(bundleKey) ? i18n(bundleKey) : null;
});
rendererPane.setItems(Renderer.values());
rendererPane.setValue(Renderer.DEFAULT);
rendererPane.setItems(Renderer.DEFAULT);

FXUtils.onChangeAndOperate(graphicsBackendPane.valueProperty(), backend -> {
if (backend == null) { // unbind
return;
}

rendererPane.setItems(Renderer.SUPPORTED.get(backend));
if (backend == GraphicsAPI.DEFAULT) {
rendererPane.setDisable(true);
rendererPane.setValue(Renderer.DEFAULT);
} else {
rendererPane.setDisable(false);
if (rendererPane.getValue() == null || !rendererPane.getValue().isSupported(backend)) {
rendererPane.setValue(Renderer.DEFAULT);
}
}
});

noJVMArgsPane = new LineToggleButton();
noJVMArgsPane.setTitle(i18n("settings.advanced.no_jvm_args"));
Expand All @@ -219,7 +263,7 @@ public AdvancedVersionSettingPage(Profile profile, @Nullable String versionId, V
useNativeOpenALPane.setSubtitle(i18n("settings.advanced.linux_freebsd_only"));

workaroundPane.getContent().setAll(
nativesDirSublist, rendererPane, noJVMArgsPane, noOptimizingJVMArgsPane, noGameCheckPane,
nativesDirSublist, graphicsBackendPane, rendererPane, noJVMArgsPane, noOptimizingJVMArgsPane, noGameCheckPane,
noJVMCheckPane, noNativesPatchPane
);

Expand Down Expand Up @@ -252,6 +296,7 @@ void bindProperties() {
FXUtils.bindString(txtPreLaunchCommand, versionSetting.preLaunchCommandProperty());
FXUtils.bindString(txtPostExitCommand, versionSetting.postExitCommandProperty());
rendererPane.valueProperty().bindBidirectional(versionSetting.rendererProperty());
graphicsBackendPane.valueProperty().bindBidirectional(versionSetting.graphicsBackendProperty());
noGameCheckPane.selectedProperty().bindBidirectional(versionSetting.notCheckGameProperty());
noJVMCheckPane.selectedProperty().bindBidirectional(versionSetting.notCheckJVMProperty());
noJVMArgsPane.selectedProperty().bindBidirectional(versionSetting.noJVMArgsProperty());
Expand Down Expand Up @@ -294,6 +339,7 @@ void unbindProperties() {
FXUtils.unbind(txtPreLaunchCommand, versionSetting.preLaunchCommandProperty());
FXUtils.unbind(txtPostExitCommand, versionSetting.postExitCommandProperty());
rendererPane.valueProperty().unbindBidirectional(versionSetting.rendererProperty());
graphicsBackendPane.valueProperty().unbindBidirectional(versionSetting.graphicsBackendProperty());
noGameCheckPane.selectedProperty().unbindBidirectional(versionSetting.notCheckGameProperty());
noJVMCheckPane.selectedProperty().unbindBidirectional(versionSetting.notCheckJVMProperty());
noJVMArgsPane.selectedProperty().unbindBidirectional(versionSetting.noJVMArgsProperty());
Expand Down
7 changes: 4 additions & 3 deletions HMCL/src/main/java/org/jackhuang/hmcl/util/NativePatcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -189,15 +189,16 @@ public static Version patchNative(DefaultGameRepository repository,
return version.setLibraries(newLibraries);
}

public static @Nullable Library getWindowsMesaLoader(@NotNull JavaRuntime javaVersion, @NotNull Renderer renderer, @NotNull OSVersion windowsVersion) {
/// @see <a href="https://github.com/HMCL-dev/mesa-loader-windows">Java Mesa Loader for Windows</a>
public static @Nullable Library getWindowsMesaLoader(@NotNull JavaRuntime java, @NotNull Renderer renderer, @NotNull OSVersion windowsVersion) {
if (renderer == Renderer.DEFAULT)
return null;

if (windowsVersion.isAtLeast(OSVersion.WINDOWS_10)) {
return getNatives(javaVersion.getPlatform()).get("mesa-loader");
return getNatives(java.getPlatform()).get("mesa-loader");
} else if (windowsVersion.isAtLeast(OSVersion.WINDOWS_7)) {
if (renderer == Renderer.LLVMPIPE)
return getNatives(javaVersion.getPlatform()).get("software-renderer-loader");
return getNatives(java.getPlatform()).get("software-renderer-loader");
else
return null;
} else {
Expand Down
21 changes: 17 additions & 4 deletions HMCL/src/main/resources/assets/lang/I18N.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1337,6 +1337,15 @@ settings.advanced.dont_patch_natives=Do not attempt to automatically replace nat
settings.advanced.environment_variables=Environment Variables
settings.advanced.game_dir.default=Default (".minecraft/")
settings.advanced.game_dir.independent=Isolated (".minecraft/versions/<instance name>/", except for assets and libraries)
settings.advanced.graphics_backend=Graphics API
settings.advanced.graphics_backend.default=Default
settings.advanced.graphics_backend.default.desc=Follow the game's settings
settings.advanced.graphics_backend.opengl=OpenGL
settings.advanced.graphics_backend.opengl.desc=Use OpenGL for rendering
settings.advanced.graphics_backend.vulkan=Vulkan
settings.advanced.graphics_backend.vulkan.desc=Use Vulkan for rendering
settings.advanced.graphics_backend.vulkan.desc.global=Use Vulkan for rendering (Since Minecraft 26.2)
settings.advanced.graphics_backend.vulkan.desc.unsupported=Use Vulkan for rendering (not supported for the current game version)
settings.advanced.java_permanent_generation_space=PermGen Space
settings.advanced.java_permanent_generation_space.prompt=in MiB
settings.advanced.jvm=JVM Options
Expand Down Expand Up @@ -1379,13 +1388,17 @@ settings.advanced.post_exit_command=Post-exit Command
settings.advanced.post_exit_command.prompt=Commands to execute after the game exits
settings.advanced.renderer=Renderer
settings.advanced.renderer.default=Default
settings.advanced.renderer.default.desc=OpenGL
settings.advanced.renderer.default.desc=Use System Default
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=DirectX 12 (Poor performance and compatibility)
settings.advanced.renderer.d3d12.desc=OpenGL renderer based on DirectX 12
settings.advanced.renderer.lavapipe=Mesa Lavapipe
settings.advanced.renderer.lavapipe.desc=Software Vulkan Renderer
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=Software (Poor performance, best compatibility)
settings.advanced.renderer.llvmpipe.desc=Software OpenGL Renderer
settings.advanced.renderer.dozen=Mesa Dozen
settings.advanced.renderer.dozen.desc=Vulkan renderer based on DirectX 12 (Experimental)
settings.advanced.renderer.zink=Mesa Zink
settings.advanced.renderer.zink.desc=Vulkan (Best performance, poor compatibility)
settings.advanced.renderer.zink.desc=OpenGL renderer based on Vulkan
settings.advanced.server_ip=Server Address
settings.advanced.server_ip.prompt=Automatically join after launching the game
settings.advanced.unsupported_system_options=Settings not applicable to the current system
Expand Down
4 changes: 0 additions & 4 deletions HMCL/src/main/resources/assets/lang/I18N_ar.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1364,13 +1364,9 @@ settings.advanced.post_exit_command=أمر ما بعد الإغلاق
settings.advanced.post_exit_command.prompt=أوامر تُنفَّذ بعد إغلاق اللعبة
settings.advanced.renderer=المُصيِّر
settings.advanced.renderer.default=افتراضي
settings.advanced.renderer.default.desc=OpenGL
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=DirectX 12 (أداء وتوافق ضعيفان)
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=برمجي (أداء ضعيف، توافق أفضل)
settings.advanced.renderer.zink=Mesa Zink
Comment on lines 1365 to 1369
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change removes existing localized renderer description keys. As a result, this locale will fall back to English for these descriptions (or show them missing depending on bundle fallback), which is a regression for non-English users. Please keep the previous translations or update them to match the new wording instead of deleting.

Copilot uses AI. Check for mistakes.
settings.advanced.renderer.zink.desc=Vulkan (أفضل أداء، توافق ضعيف)
settings.advanced.server_ip=عنوان الخادم
settings.advanced.server_ip.prompt=الانضمام تلقائياً بعد تشغيل اللعبة
settings.advanced.unsupported_system_options=إعدادات غير مطبّقة على النظام الحالي
Expand Down
4 changes: 0 additions & 4 deletions HMCL/src/main/resources/assets/lang/I18N_es.properties
Original file line number Diff line number Diff line change
Expand Up @@ -1268,13 +1268,9 @@ settings.advanced.post_exit_command=Comando post-salida
settings.advanced.post_exit_command.prompt=El comando se ejecuta después de que el juego se detenga
settings.advanced.renderer=Renderizador
settings.advanced.renderer.default=Por defecto
settings.advanced.renderer.default.desc=OpenGL
settings.advanced.renderer.d3d12=Mesa D3D12
settings.advanced.renderer.d3d12.desc=DirectX 12 (Rendimiento y compatibilidad deficientes)
settings.advanced.renderer.llvmpipe=Mesa LLVMpipe
settings.advanced.renderer.llvmpipe.desc=Software (Bajo rendimiento, máxima compatibilidad)
settings.advanced.renderer.zink=Mesa Zink
Comment on lines 1269 to 1273
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change removes existing localized renderer description keys. As a result, this locale will fall back to English for these descriptions (or show them missing depending on bundle fallback), which is a regression for non-English users. Please keep the previous translations or update them to match the new wording instead of deleting.

Copilot uses AI. Check for mistakes.
settings.advanced.renderer.zink.desc=Vulkan (Máximo rendimiento, baja compatibilidad)
settings.advanced.server_ip=Dirección del servidor
settings.advanced.server_ip.prompt=Entrar automáticamente después de ejecutar el juego
settings.advanced.unsupported_system_options=Configuración no aplicable al sistema actual
Expand Down
Loading