minecraft-source/src/com/mojang/realmsclient/gui/screens/RealmsCreateRealmScreen.java

116 lines
4.8 KiB
Java

package com.mojang.realmsclient.gui.screens;
import com.mojang.realmsclient.gui.LongRunningTask;
import com.mojang.realmsclient.util.RealmsTasks;
import net.minecraft.realms.RealmsGuiEventListener;
import net.minecraft.realms.Realms;
import net.minecraft.realms.AbstractRealmsButton;
import net.minecraft.realms.RealmsLabel;
import net.minecraft.realms.RealmsButton;
import net.minecraft.realms.RealmsEditBox;
import com.mojang.realmsclient.RealmsMainScreen;
import com.mojang.realmsclient.dto.RealmsServer;
import net.minecraft.realms.RealmsScreen;
public class RealmsCreateRealmScreen extends RealmsScreen {
private final RealmsServer server;
private final RealmsMainScreen lastScreen;
private RealmsEditBox nameBox;
private RealmsEditBox descriptionBox;
private RealmsButton createButton;
private RealmsLabel createRealmLabel;
public RealmsCreateRealmScreen(final RealmsServer realmsServer, final RealmsMainScreen cyu) {
this.server = realmsServer;
this.lastScreen = cyu;
}
@Override
public void tick() {
if (this.nameBox != null) {
this.nameBox.tick();
}
if (this.descriptionBox != null) {
this.descriptionBox.tick();
}
}
@Override
public void init() {
this.setKeyboardHandlerSendRepeatsToGui(true);
this.buttonsAdd(this.createButton = new RealmsButton(0, this.width() / 2 - 100, this.height() / 4 + 120 + 17, 97, 20, RealmsScreen.getLocalizedString("mco.create.world")) {
@Override
public void onPress() {
RealmsCreateRealmScreen.this.createWorld();
}
});
this.buttonsAdd(new RealmsButton(1, this.width() / 2 + 5, this.height() / 4 + 120 + 17, 95, 20, RealmsScreen.getLocalizedString("gui.cancel")) {
@Override
public void onPress() {
Realms.setScreen(RealmsCreateRealmScreen.this.lastScreen);
}
});
this.createButton.active(false);
this.addWidget(this.nameBox = this.newEditBox(3, this.width() / 2 - 100, 65, 200, 20, RealmsScreen.getLocalizedString("mco.configure.world.name")));
this.focusOn(this.nameBox);
this.addWidget(this.descriptionBox = this.newEditBox(4, this.width() / 2 - 100, 115, 200, 20, RealmsScreen.getLocalizedString("mco.configure.world.description")));
this.addWidget(this.createRealmLabel = new RealmsLabel(RealmsScreen.getLocalizedString("mco.selectServer.create"), this.width() / 2, 11, 16777215));
this.narrateLabels();
}
@Override
public void removed() {
this.setKeyboardHandlerSendRepeatsToGui(false);
}
@Override
public boolean charTyped(final char character, final int integer) {
this.createButton.active(this.valid());
return false;
}
@Override
public boolean keyPressed(final int integer1, final int integer2, final int integer3) {
switch (integer1) {
case 256: {
Realms.setScreen(this.lastScreen);
return true;
}
default: {
this.createButton.active(this.valid());
return false;
}
}
}
private void createWorld() {
if (this.valid()) {
final RealmsResetWorldScreen daf2 = new RealmsResetWorldScreen(this.lastScreen, this.server, this.lastScreen.newScreen(), RealmsScreen.getLocalizedString("mco.selectServer.create"), RealmsScreen.getLocalizedString("mco.create.world.subtitle"), 10526880, RealmsScreen.getLocalizedString("mco.create.world.skip"));
daf2.setResetTitle(RealmsScreen.getLocalizedString("mco.create.world.reset.title"));
final RealmsTasks.WorldCreationTask j3 = new RealmsTasks.WorldCreationTask(this.server.id, this.nameBox.getValue(), this.descriptionBox.getValue(), daf2);
final RealmsLongRunningMcoTaskScreen czz4 = new RealmsLongRunningMcoTaskScreen(this.lastScreen, j3);
czz4.start();
Realms.setScreen(czz4);
}
}
private boolean valid() {
return this.nameBox.getValue() != null && !this.nameBox.getValue().trim().isEmpty();
}
@Override
public void render(final int integer1, final int integer2, final float float3) {
this.renderBackground();
this.createRealmLabel.render(this);
this.drawString(RealmsScreen.getLocalizedString("mco.configure.world.name"), this.width() / 2 - 100, 52, 10526880);
this.drawString(RealmsScreen.getLocalizedString("mco.configure.world.description"), this.width() / 2 - 100, 102, 10526880);
if (this.nameBox != null) {
this.nameBox.render(integer1, integer2, float3);
}
if (this.descriptionBox != null) {
this.descriptionBox.render(integer1, integer2, float3);
}
super.render(integer1, integer2, float3);
}
}