301 lines
16 KiB
Java
301 lines
16 KiB
Java
package com.mojang.realmsclient.gui.screens;
|
|
|
|
import net.minecraft.realms.AbstractRealmsButton;
|
|
import net.minecraft.realms.RealmsGuiEventListener;
|
|
import com.mojang.realmsclient.gui.RealmsConstants;
|
|
import net.minecraft.realms.Realms;
|
|
import net.minecraft.realms.RealmsLabel;
|
|
import net.minecraft.realms.RealmsSliderButton;
|
|
import net.minecraft.realms.RealmsButton;
|
|
import com.mojang.realmsclient.dto.RealmsServer;
|
|
import com.mojang.realmsclient.dto.RealmsWorldOptions;
|
|
import net.minecraft.realms.RealmsEditBox;
|
|
import net.minecraft.realms.RealmsScreen;
|
|
|
|
public class RealmsSlotOptionsScreen extends RealmsScreen {
|
|
private RealmsEditBox nameEdit;
|
|
protected final RealmsConfigureWorldScreen parent;
|
|
private int column1_x;
|
|
private int column_width;
|
|
private int column2_x;
|
|
private final RealmsWorldOptions options;
|
|
private final RealmsServer.WorldType worldType;
|
|
private final int activeSlot;
|
|
private int difficultyIndex;
|
|
private int gameModeIndex;
|
|
private Boolean pvp;
|
|
private Boolean spawnNPCs;
|
|
private Boolean spawnAnimals;
|
|
private Boolean spawnMonsters;
|
|
private Integer spawnProtection;
|
|
private Boolean commandBlocks;
|
|
private Boolean forceGameMode;
|
|
private RealmsButton pvpButton;
|
|
private RealmsButton spawnAnimalsButton;
|
|
private RealmsButton spawnMonstersButton;
|
|
private RealmsButton spawnNPCsButton;
|
|
private RealmsSliderButton spawnProtectionButton;
|
|
private RealmsButton commandBlocksButton;
|
|
private RealmsButton forceGameModeButton;
|
|
String[] difficulties;
|
|
String[] gameModes;
|
|
String[][] gameModeHints;
|
|
private RealmsLabel titleLabel;
|
|
private RealmsLabel warningLabel;
|
|
|
|
public RealmsSlotOptionsScreen(final RealmsConfigureWorldScreen czs, final RealmsWorldOptions realmsWorldOptions, final RealmsServer.WorldType c, final int integer) {
|
|
this.parent = czs;
|
|
this.options = realmsWorldOptions;
|
|
this.worldType = c;
|
|
this.activeSlot = integer;
|
|
}
|
|
|
|
@Override
|
|
public void removed() {
|
|
this.setKeyboardHandlerSendRepeatsToGui(false);
|
|
}
|
|
|
|
@Override
|
|
public void tick() {
|
|
this.nameEdit.tick();
|
|
}
|
|
|
|
@Override
|
|
public boolean keyPressed(final int integer1, final int integer2, final int integer3) {
|
|
switch (integer1) {
|
|
case 256: {
|
|
Realms.setScreen(this.parent);
|
|
return true;
|
|
}
|
|
default: {
|
|
return super.keyPressed(integer1, integer2, integer3);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void init() {
|
|
this.column_width = 170;
|
|
this.column1_x = this.width() / 2 - this.column_width * 2 / 2;
|
|
this.column2_x = this.width() / 2 + 10;
|
|
this.createDifficultyAndGameMode();
|
|
this.difficultyIndex = this.options.difficulty;
|
|
this.gameModeIndex = this.options.gameMode;
|
|
if (this.worldType.equals(RealmsServer.WorldType.NORMAL)) {
|
|
this.pvp = this.options.pvp;
|
|
this.spawnProtection = this.options.spawnProtection;
|
|
this.forceGameMode = this.options.forceGameMode;
|
|
this.spawnAnimals = this.options.spawnAnimals;
|
|
this.spawnMonsters = this.options.spawnMonsters;
|
|
this.spawnNPCs = this.options.spawnNPCs;
|
|
this.commandBlocks = this.options.commandBlocks;
|
|
}
|
|
else {
|
|
String string2;
|
|
if (this.worldType.equals(RealmsServer.WorldType.ADVENTUREMAP)) {
|
|
string2 = RealmsScreen.getLocalizedString("mco.configure.world.edit.subscreen.adventuremap");
|
|
}
|
|
else if (this.worldType.equals(RealmsServer.WorldType.INSPIRATION)) {
|
|
string2 = RealmsScreen.getLocalizedString("mco.configure.world.edit.subscreen.inspiration");
|
|
}
|
|
else {
|
|
string2 = RealmsScreen.getLocalizedString("mco.configure.world.edit.subscreen.experience");
|
|
}
|
|
this.warningLabel = new RealmsLabel(string2, this.width() / 2, 26, 16711680);
|
|
this.pvp = true;
|
|
this.spawnProtection = 0;
|
|
this.forceGameMode = false;
|
|
this.spawnAnimals = true;
|
|
this.spawnMonsters = true;
|
|
this.spawnNPCs = true;
|
|
this.commandBlocks = true;
|
|
}
|
|
(this.nameEdit = this.newEditBox(11, this.column1_x + 2, RealmsConstants.row(1), this.column_width - 4, 20, RealmsScreen.getLocalizedString("mco.configure.world.edit.slot.name"))).setMaxLength(10);
|
|
this.nameEdit.setValue(this.options.getSlotName(this.activeSlot));
|
|
this.focusOn(this.nameEdit);
|
|
this.buttonsAdd(this.pvpButton = new RealmsButton(4, this.column2_x, RealmsConstants.row(1), this.column_width, 20, this.pvpTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.pvp = !RealmsSlotOptionsScreen.this.pvp;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.pvpTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(new RealmsButton(3, this.column1_x, RealmsConstants.row(3), this.column_width, 20, this.gameModeTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.gameModeIndex = (RealmsSlotOptionsScreen.this.gameModeIndex + 1) % RealmsSlotOptionsScreen.this.gameModes.length;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.gameModeTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(this.spawnAnimalsButton = new RealmsButton(5, this.column2_x, RealmsConstants.row(3), this.column_width, 20, this.spawnAnimalsTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.spawnAnimals = !RealmsSlotOptionsScreen.this.spawnAnimals;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.spawnAnimalsTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(new RealmsButton(2, this.column1_x, RealmsConstants.row(5), this.column_width, 20, this.difficultyTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.difficultyIndex = (RealmsSlotOptionsScreen.this.difficultyIndex + 1) % RealmsSlotOptionsScreen.this.difficulties.length;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.difficultyTitle());
|
|
if (RealmsSlotOptionsScreen.this.worldType.equals(RealmsServer.WorldType.NORMAL)) {
|
|
RealmsSlotOptionsScreen.this.spawnMonstersButton.active(RealmsSlotOptionsScreen.this.difficultyIndex != 0);
|
|
RealmsSlotOptionsScreen.this.spawnMonstersButton.setMessage(RealmsSlotOptionsScreen.this.spawnMonstersTitle());
|
|
}
|
|
}
|
|
});
|
|
this.buttonsAdd(this.spawnMonstersButton = new RealmsButton(6, this.column2_x, RealmsConstants.row(5), this.column_width, 20, this.spawnMonstersTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.spawnMonsters = !RealmsSlotOptionsScreen.this.spawnMonsters;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.spawnMonstersTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(this.spawnProtectionButton = new SettingsSlider(8, this.column1_x, RealmsConstants.row(7), this.column_width, this.spawnProtection, 0.0f, 16.0f));
|
|
this.buttonsAdd(this.spawnNPCsButton = new RealmsButton(7, this.column2_x, RealmsConstants.row(7), this.column_width, 20, this.spawnNPCsTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.spawnNPCs = !RealmsSlotOptionsScreen.this.spawnNPCs;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.spawnNPCsTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(this.forceGameModeButton = new RealmsButton(10, this.column1_x, RealmsConstants.row(9), this.column_width, 20, this.forceGameModeTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.forceGameMode = !RealmsSlotOptionsScreen.this.forceGameMode;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.forceGameModeTitle());
|
|
}
|
|
});
|
|
this.buttonsAdd(this.commandBlocksButton = new RealmsButton(9, this.column2_x, RealmsConstants.row(9), this.column_width, 20, this.commandBlocksTitle()) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.commandBlocks = !RealmsSlotOptionsScreen.this.commandBlocks;
|
|
this.setMessage(RealmsSlotOptionsScreen.this.commandBlocksTitle());
|
|
}
|
|
});
|
|
if (!this.worldType.equals(RealmsServer.WorldType.NORMAL)) {
|
|
this.pvpButton.active(false);
|
|
this.spawnAnimalsButton.active(false);
|
|
this.spawnNPCsButton.active(false);
|
|
this.spawnMonstersButton.active(false);
|
|
this.spawnProtectionButton.active(false);
|
|
this.commandBlocksButton.active(false);
|
|
this.spawnProtectionButton.active(false);
|
|
this.forceGameModeButton.active(false);
|
|
}
|
|
if (this.difficultyIndex == 0) {
|
|
this.spawnMonstersButton.active(false);
|
|
}
|
|
this.buttonsAdd(new RealmsButton(1, this.column1_x, RealmsConstants.row(13), this.column_width, 20, RealmsScreen.getLocalizedString("mco.configure.world.buttons.done")) {
|
|
@Override
|
|
public void onPress() {
|
|
RealmsSlotOptionsScreen.this.saveSettings();
|
|
}
|
|
});
|
|
this.buttonsAdd(new RealmsButton(0, this.column2_x, RealmsConstants.row(13), this.column_width, 20, RealmsScreen.getLocalizedString("gui.cancel")) {
|
|
@Override
|
|
public void onPress() {
|
|
Realms.setScreen(RealmsSlotOptionsScreen.this.parent);
|
|
}
|
|
});
|
|
this.addWidget(this.nameEdit);
|
|
this.addWidget(this.titleLabel = new RealmsLabel(RealmsScreen.getLocalizedString("mco.configure.world.buttons.options"), this.width() / 2, 17, 16777215));
|
|
if (this.warningLabel != null) {
|
|
this.addWidget(this.warningLabel);
|
|
}
|
|
this.narrateLabels();
|
|
}
|
|
|
|
private void createDifficultyAndGameMode() {
|
|
this.difficulties = new String[] { RealmsScreen.getLocalizedString("options.difficulty.peaceful"), RealmsScreen.getLocalizedString("options.difficulty.easy"), RealmsScreen.getLocalizedString("options.difficulty.normal"), RealmsScreen.getLocalizedString("options.difficulty.hard") };
|
|
this.gameModes = new String[] { RealmsScreen.getLocalizedString("selectWorld.gameMode.survival"), RealmsScreen.getLocalizedString("selectWorld.gameMode.creative"), RealmsScreen.getLocalizedString("selectWorld.gameMode.adventure") };
|
|
this.gameModeHints = new String[][] { { RealmsScreen.getLocalizedString("selectWorld.gameMode.survival.line1"), RealmsScreen.getLocalizedString("selectWorld.gameMode.survival.line2") }, { RealmsScreen.getLocalizedString("selectWorld.gameMode.creative.line1"), RealmsScreen.getLocalizedString("selectWorld.gameMode.creative.line2") }, { RealmsScreen.getLocalizedString("selectWorld.gameMode.adventure.line1"), RealmsScreen.getLocalizedString("selectWorld.gameMode.adventure.line2") } };
|
|
}
|
|
|
|
private String difficultyTitle() {
|
|
final String string2 = RealmsScreen.getLocalizedString("options.difficulty");
|
|
return string2 + ": " + this.difficulties[this.difficultyIndex];
|
|
}
|
|
|
|
private String gameModeTitle() {
|
|
final String string2 = RealmsScreen.getLocalizedString("selectWorld.gameMode");
|
|
return string2 + ": " + this.gameModes[this.gameModeIndex];
|
|
}
|
|
|
|
private String pvpTitle() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.pvp") + ": " + RealmsScreen.getLocalizedString(((boolean)this.pvp) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
private String spawnAnimalsTitle() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.spawnAnimals") + ": " + RealmsScreen.getLocalizedString(((boolean)this.spawnAnimals) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
private String spawnMonstersTitle() {
|
|
if (this.difficultyIndex == 0) {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.spawnMonsters") + ": " + RealmsScreen.getLocalizedString("mco.configure.world.off");
|
|
}
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.spawnMonsters") + ": " + RealmsScreen.getLocalizedString(((boolean)this.spawnMonsters) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
private String spawnNPCsTitle() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.spawnNPCs") + ": " + RealmsScreen.getLocalizedString(((boolean)this.spawnNPCs) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
private String commandBlocksTitle() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.commandBlocks") + ": " + RealmsScreen.getLocalizedString(((boolean)this.commandBlocks) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
private String forceGameModeTitle() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.forceGameMode") + ": " + RealmsScreen.getLocalizedString(((boolean)this.forceGameMode) ? "mco.configure.world.on" : "mco.configure.world.off");
|
|
}
|
|
|
|
@Override
|
|
public void render(final int integer1, final int integer2, final float float3) {
|
|
this.renderBackground();
|
|
final String string5 = RealmsScreen.getLocalizedString("mco.configure.world.edit.slot.name");
|
|
this.drawString(string5, this.column1_x + this.column_width / 2 - this.fontWidth(string5) / 2, RealmsConstants.row(0) - 5, 16777215);
|
|
this.titleLabel.render(this);
|
|
if (this.warningLabel != null) {
|
|
this.warningLabel.render(this);
|
|
}
|
|
this.nameEdit.render(integer1, integer2, float3);
|
|
super.render(integer1, integer2, float3);
|
|
}
|
|
|
|
private String getSlotName() {
|
|
if (this.nameEdit.getValue().equals(this.options.getDefaultSlotName(this.activeSlot))) {
|
|
return "";
|
|
}
|
|
return this.nameEdit.getValue();
|
|
}
|
|
|
|
private void saveSettings() {
|
|
if (this.worldType.equals(RealmsServer.WorldType.ADVENTUREMAP) || this.worldType.equals(RealmsServer.WorldType.EXPERIENCE) || this.worldType.equals(RealmsServer.WorldType.INSPIRATION)) {
|
|
this.parent.saveSlotSettings(new RealmsWorldOptions(this.options.pvp, this.options.spawnAnimals, this.options.spawnMonsters, this.options.spawnNPCs, this.options.spawnProtection, this.options.commandBlocks, this.difficultyIndex, this.gameModeIndex, this.options.forceGameMode, this.getSlotName()));
|
|
}
|
|
else {
|
|
this.parent.saveSlotSettings(new RealmsWorldOptions(this.pvp, this.spawnAnimals, this.spawnMonsters, this.spawnNPCs, this.spawnProtection, this.commandBlocks, this.difficultyIndex, this.gameModeIndex, this.forceGameMode, this.getSlotName()));
|
|
}
|
|
}
|
|
|
|
class SettingsSlider extends RealmsSliderButton {
|
|
public SettingsSlider(final int integer2, final int integer3, final int integer4, final int integer5, final int integer6, final float float7, final float float8) {
|
|
super(integer2, integer3, integer4, integer5, integer6, float7, float8);
|
|
}
|
|
|
|
@Override
|
|
public void applyValue() {
|
|
if (!RealmsSlotOptionsScreen.this.spawnProtectionButton.active()) {
|
|
return;
|
|
}
|
|
RealmsSlotOptionsScreen.this.spawnProtection = (int)this.toValue(this.getValue());
|
|
}
|
|
|
|
@Override
|
|
public String getMessage() {
|
|
return RealmsScreen.getLocalizedString("mco.configure.world.spawnProtection") + ": " + ((RealmsSlotOptionsScreen.this.spawnProtection == 0) ? RealmsScreen.getLocalizedString("mco.configure.world.off") : RealmsSlotOptionsScreen.this.spawnProtection);
|
|
}
|
|
}
|
|
}
|