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

139 lines
5.3 KiB
Java

package com.mojang.realmsclient.gui.screens;
import net.minecraft.realms.Tezzelator;
import net.minecraft.realms.RealmsSimpleScrolledSelectionList;
import java.util.Locale;
import net.minecraft.realms.RealmsGuiEventListener;
import net.minecraft.realms.AbstractRealmsButton;
import net.minecraft.realms.Realms;
import net.minecraft.realms.RealmsButton;
import java.util.Iterator;
import java.util.Map;
import com.google.common.collect.Lists;
import java.util.List;
import com.mojang.realmsclient.dto.Backup;
import net.minecraft.realms.RealmsScreen;
public class RealmsBackupInfoScreen extends RealmsScreen {
private final RealmsScreen lastScreen;
private final int BUTTON_BACK_ID = 0;
private final Backup backup;
private final List<String> keys;
private BackupInfoList backupInfoList;
String[] difficulties;
String[] gameModes;
public RealmsBackupInfoScreen(final RealmsScreen realmsScreen, final Backup backup) {
this.keys = Lists.newArrayList();
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.lastScreen = realmsScreen;
this.backup = backup;
if (backup.changeList != null) {
for (final Map.Entry<String, String> entry5 : backup.changeList.entrySet()) {
this.keys.add(entry5.getKey());
}
}
}
@Override
public void tick() {
}
@Override
public void init() {
this.setKeyboardHandlerSendRepeatsToGui(true);
this.buttonsAdd(new RealmsButton(0, this.width() / 2 - 100, this.height() / 4 + 120 + 24, RealmsScreen.getLocalizedString("gui.back")) {
@Override
public void onPress() {
Realms.setScreen(RealmsBackupInfoScreen.this.lastScreen);
}
});
this.addWidget(this.backupInfoList = new BackupInfoList());
this.focusOn(this.backupInfoList);
}
@Override
public void removed() {
this.setKeyboardHandlerSendRepeatsToGui(false);
}
@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.drawCenteredString("Changes from last backup", this.width() / 2, 10, 16777215);
this.backupInfoList.render(integer1, integer2, float3);
super.render(integer1, integer2, float3);
}
private String checkForSpecificMetadata(final String string1, final String string2) {
final String string3 = string1.toLowerCase(Locale.ROOT);
if (string3.contains("game") && string3.contains("mode")) {
return this.gameModeMetadata(string2);
}
if (string3.contains("game") && string3.contains("difficulty")) {
return this.gameDifficultyMetadata(string2);
}
return string2;
}
private String gameDifficultyMetadata(final String string) {
try {
return this.difficulties[Integer.parseInt(string)];
}
catch (Exception exception3) {
return "UNKNOWN";
}
}
private String gameModeMetadata(final String string) {
try {
return this.gameModes[Integer.parseInt(string)];
}
catch (Exception exception3) {
return "UNKNOWN";
}
}
class BackupInfoList extends RealmsSimpleScrolledSelectionList {
public BackupInfoList() {
super(RealmsBackupInfoScreen.this.width(), RealmsBackupInfoScreen.this.height(), 32, RealmsBackupInfoScreen.this.height() - 64, 36);
}
@Override
public int getItemCount() {
return RealmsBackupInfoScreen.this.backup.changeList.size();
}
@Override
public boolean isSelectedItem(final int integer) {
return false;
}
@Override
public int getMaxPosition() {
return this.getItemCount() * 36;
}
@Override
public void renderBackground() {
}
public void renderItem(final int integer1, final int integer2, final int integer3, final int integer4, final Tezzelator tezzelator, final int integer6, final int integer7) {
final String string9 = RealmsBackupInfoScreen.this.keys.get(integer1);
RealmsBackupInfoScreen.this.drawString(string9, this.width() / 2 - 40, integer3, 10526880);
final String string10 = RealmsBackupInfoScreen.this.backup.changeList.get(string9);
RealmsBackupInfoScreen.this.drawString(RealmsBackupInfoScreen.this.checkForSpecificMetadata(string9, string10), this.width() / 2 - 40, integer3 + 12, 16777215);
}
}
}