96 lines
3.7 KiB
Java
96 lines
3.7 KiB
Java
package net.minecraft.client.gui.screens.options;
|
|
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.client.Options;
|
|
import net.minecraft.client.gui.components.Button;
|
|
import net.minecraft.client.gui.components.ObjectSelectionList;
|
|
import net.minecraft.client.gui.components.StringWidget;
|
|
import net.minecraft.client.gui.layouts.LinearLayout;
|
|
import net.minecraft.client.gui.screens.Screen;
|
|
import net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry;
|
|
import net.minecraft.client.resources.language.LanguageManager;
|
|
import net.minecraft.network.chat.CommonComponents;
|
|
import net.minecraft.network.chat.Component;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class LanguageSelectScreen extends OptionsSubScreen {
|
|
private static final Component WARNING_LABEL = Component.translatable("options.languageAccuracyWarning").withColor(-4539718);
|
|
private static final int FOOTER_HEIGHT = 53;
|
|
private LanguageSelectScreen.LanguageSelectionList languageSelectionList;
|
|
final LanguageManager languageManager;
|
|
|
|
public LanguageSelectScreen(Screen lastScreen, Options options, LanguageManager languageManager) {
|
|
super(lastScreen, options, Component.translatable("options.language.title"));
|
|
this.languageManager = languageManager;
|
|
this.layout.setFooterHeight(53);
|
|
}
|
|
|
|
@Override
|
|
protected void addContents() {
|
|
this.languageSelectionList = this.layout.addToContents(new LanguageSelectScreen.LanguageSelectionList(this.minecraft));
|
|
}
|
|
|
|
@Override
|
|
protected void addOptions() {
|
|
}
|
|
|
|
@Override
|
|
protected void addFooter() {
|
|
LinearLayout linearLayout = this.layout.addToFooter(LinearLayout.vertical()).spacing(8);
|
|
linearLayout.defaultCellSetting().alignHorizontallyCenter();
|
|
linearLayout.addChild(new StringWidget(WARNING_LABEL, this.font));
|
|
LinearLayout linearLayout2 = linearLayout.addChild(LinearLayout.horizontal().spacing(8));
|
|
linearLayout2.addChild(
|
|
Button.builder(Component.translatable("options.font"), button -> this.minecraft.setScreen(new FontOptionsScreen(this, this.options))).build()
|
|
);
|
|
linearLayout2.addChild(Button.builder(CommonComponents.GUI_DONE, button -> this.onDone()).build());
|
|
}
|
|
|
|
@Override
|
|
protected void repositionElements() {
|
|
super.repositionElements();
|
|
this.languageSelectionList.updateSize(this.width, this.layout);
|
|
}
|
|
|
|
void onDone() {
|
|
Entry entry = this.languageSelectionList.getSelected();
|
|
if (entry != null && !entry.code.equals(this.languageManager.getSelected())) {
|
|
this.languageManager.setSelected(entry.code);
|
|
this.options.languageCode = entry.code;
|
|
this.minecraft.reloadResourcePacks();
|
|
}
|
|
|
|
this.minecraft.setScreen(this.lastScreen);
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
class LanguageSelectionList extends ObjectSelectionList<net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry> {
|
|
public LanguageSelectionList(final Minecraft minecraft) {
|
|
super(minecraft, LanguageSelectScreen.this.width, LanguageSelectScreen.this.height - 33 - 53, 33, 18);
|
|
String string = LanguageSelectScreen.this.languageManager.getSelected();
|
|
LanguageSelectScreen.this.languageManager
|
|
.getLanguages()
|
|
.forEach(
|
|
(string2, languageInfo) -> {
|
|
net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry entry = new net.minecraft.client.gui.screens.options.LanguageSelectScreen.LanguageSelectionList.Entry(
|
|
this, string2, languageInfo
|
|
);
|
|
this.addEntry(entry);
|
|
if (string.equals(string2)) {
|
|
this.setSelected(entry);
|
|
}
|
|
}
|
|
);
|
|
if (this.getSelected() != null) {
|
|
this.centerScrollOn(this.getSelected());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getRowWidth() {
|
|
return super.getRowWidth() + 50;
|
|
}
|
|
}
|
|
}
|