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

114 lines
4.5 KiB
Java

package com.mojang.realmsclient.gui.screens;
import org.apache.logging.log4j.LogManager;
import com.mojang.realmsclient.client.RealmsClient;
import net.minecraft.realms.RealmsGuiEventListener;
import net.minecraft.realms.Realms;
import net.minecraft.realms.AbstractRealmsButton;
import com.mojang.realmsclient.gui.RealmsConstants;
import net.minecraft.realms.RealmsButton;
import com.mojang.realmsclient.dto.RealmsServer;
import net.minecraft.realms.RealmsEditBox;
import org.apache.logging.log4j.Logger;
import net.minecraft.realms.RealmsScreen;
public class RealmsInviteScreen extends RealmsScreen {
private static final Logger LOGGER;
private RealmsEditBox profileName;
private final RealmsServer serverData;
private final RealmsConfigureWorldScreen configureScreen;
private final RealmsScreen lastScreen;
private final int BUTTON_INVITE_ID = 0;
private final int BUTTON_CANCEL_ID = 1;
private RealmsButton inviteButton;
private final int PROFILENAME_EDIT_BOX = 2;
private String errorMsg;
private boolean showError;
public RealmsInviteScreen(final RealmsConfigureWorldScreen czs, final RealmsScreen realmsScreen, final RealmsServer realmsServer) {
this.configureScreen = czs;
this.lastScreen = realmsScreen;
this.serverData = realmsServer;
}
@Override
public void tick() {
this.profileName.tick();
}
@Override
public void init() {
this.setKeyboardHandlerSendRepeatsToGui(true);
this.buttonsAdd(this.inviteButton = new RealmsButton(0, this.width() / 2 - 100, RealmsConstants.row(10), RealmsScreen.getLocalizedString("mco.configure.world.buttons.invite")) {
@Override
public void onPress() {
RealmsInviteScreen.this.onInvite();
}
});
this.buttonsAdd(new RealmsButton(1, this.width() / 2 - 100, RealmsConstants.row(12), RealmsScreen.getLocalizedString("gui.cancel")) {
@Override
public void onPress() {
Realms.setScreen(RealmsInviteScreen.this.lastScreen);
}
});
this.focusOn(this.profileName = this.newEditBox(2, this.width() / 2 - 100, RealmsConstants.row(2), 200, 20, RealmsScreen.getLocalizedString("mco.configure.world.invite.profile.name")));
this.addWidget(this.profileName);
}
@Override
public void removed() {
this.setKeyboardHandlerSendRepeatsToGui(false);
}
private void onInvite() {
final RealmsClient cyy2 = RealmsClient.createRealmsClient();
if (this.profileName.getValue() == null || this.profileName.getValue().isEmpty()) {
this.showError(RealmsScreen.getLocalizedString("mco.configure.world.players.error"));
return;
}
try {
final RealmsServer realmsServer3 = cyy2.invite(this.serverData.id, this.profileName.getValue().trim());
if (realmsServer3 != null) {
this.serverData.players = realmsServer3.players;
Realms.setScreen(new RealmsPlayerScreen(this.configureScreen, this.serverData));
}
else {
this.showError(RealmsScreen.getLocalizedString("mco.configure.world.players.error"));
}
}
catch (Exception exception3) {
RealmsInviteScreen.LOGGER.error("Couldn't invite user");
this.showError(RealmsScreen.getLocalizedString("mco.configure.world.players.error"));
}
}
private void showError(final String string) {
this.showError = true;
Realms.narrateNow(this.errorMsg = string);
}
@Override
public boolean keyPressed(final int integer1, final int integer2, final int integer3) {
if (integer1 == 256) {
Realms.setScreen(this.lastScreen);
return true;
}
return super.keyPressed(integer1, integer2, integer3);
}
@Override
public void render(final int integer1, final int integer2, final float float3) {
this.renderBackground();
this.drawString(RealmsScreen.getLocalizedString("mco.configure.world.invite.profile.name"), this.width() / 2 - 100, RealmsConstants.row(1), 10526880);
if (this.showError) {
this.drawCenteredString(this.errorMsg, this.width() / 2, RealmsConstants.row(5), 16711680);
}
this.profileName.render(integer1, integer2, float3);
super.render(integer1, integer2, float3);
}
static {
LOGGER = LogManager.getLogger();
}
}