(feature) save featured servers

This commit is contained in:
kirillsaint 2024-02-16 22:43:00 +06:00
parent e87fd6d221
commit bee0757820
5 changed files with 85 additions and 13 deletions

View File

@ -6,6 +6,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.multiplayer.ServerList;
import net.minecraft.client.resources.data.IMetadataSerializer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Session;
@ -223,17 +224,18 @@ public class Client {
content.append(inputLine);
}
globalSettings.setConfig(new JSONObject(content.toString()).getString("config"));
globalSettings.setLite(new JSONObject(content.toString()).getBoolean("lite"));
globalSettings.setDisplayedTutorial(new JSONObject(content.toString()).getBoolean("displayedTutorial"));
globalSettings.setConfigsMigrated(new JSONObject(content.toString()).getBoolean("configsMigrated"));
globalSettings.setPacksPanoramaEnabled(new JSONObject(content.toString()).getBoolean("packsPanoramaEnabled"));
globalSettings = gson.fromJson(content.toString(), GlobalSettings.class);
Client.getInstance().updateWindowTitle();
in.close();
} catch (Exception err) {
Client.logger.catching(err);
}
if(globalSettings == null) {
globalSettings = new GlobalSettings();
}
globalSettings.save();
Client.getInstance().updateWindowTitle();
if(!globalSettings.configsMigrated && new File(Minecraft.getMinecraft().mcDataDir, "SilentClient").exists() && new File(Minecraft.getMinecraft().mcDataDir, "SilentClient").isDirectory()) {
@ -295,6 +297,20 @@ public class Client {
featuredServers.add(new ServerDataFeature(server.getName(), server.getIp()));
});
}
ServerList savedServerList = new ServerList(Minecraft.getMinecraft());
savedServerList.loadServerList();
ArrayList<FeaturedServers.FeaturedServerInfo> newSavedFeaturedServers = new ArrayList<>(globalSettings.getSavedFeaturedServers());
globalSettings.getSavedFeaturedServers().forEach((savedServer) -> {
if(FeaturedServers.findByIPServerDataFeature(savedServer.getIp(), featuredServers) == null) {
Client.logger.info("adding saved featured server to server list: " + savedServer.getIp());
savedServerList.addServerData(new ServerData(savedServer.getName(), savedServer.getIp(), false));
newSavedFeaturedServers.remove(savedServer);
}
});
globalSettings.setSavedFeaturedServers(newSavedFeaturedServers);
globalSettings.save();
savedServerList.saveServerList();
logger.info("STARTING > friends");
this.updateFriendsList();
@ -356,7 +372,7 @@ public class Client {
Client.logger.info("STARTING > config-manager-post-init");
configManager.postInit();
if(!globalSettings.displayedTutorial) {
if(!globalSettings.isDisplayedTutorial()) {
Minecraft.getMinecraft().displayGuiScreen(new UserTutorial());
}
} catch(Exception err) {

View File

@ -22,6 +22,7 @@ import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils;
import net.silentclient.client.gui.multiplayer.SilentMultiplayerGui;
import net.silentclient.client.gui.theme.Theme;
import net.silentclient.client.gui.util.RenderUtil;
import net.silentclient.client.utils.FeaturedServers;
import net.silentclient.client.utils.MouseCursorHandler;
import org.apache.commons.lang3.Validate;
@ -56,6 +57,7 @@ public class ServerComponent {
public MouseCursorHandler.CursorType draw(int serverIndex, int mouseX, int mouseY, float x, float y, boolean isSelected) {
MouseCursorHandler.CursorType cursorType = null;
boolean featured = this.server instanceof ServerDataFeature;
boolean unsaved = featured && FeaturedServers.findByIPFeaturedServerInfo(this.server.serverIP, Client.getInstance().getGlobalSettings().getSavedFeaturedServers()) == null;
if (!this.server.field_78841_f)
{
this.server.field_78841_f = true;
@ -122,7 +124,7 @@ public class ServerComponent {
boolean flag2 = flag || flag1;
String s2 = flag2 ? EnumChatFormatting.DARK_RED + this.server.gameVersion : this.server.populationInfo;
int j = this.mc.fontRendererObj.getStringWidth(s2);
this.mc.fontRendererObj.drawString(s2, (int) x + 240 - j - 15 - 2 - (featured ? 10 : 0), (int) y + 3, -1);
this.mc.fontRendererObj.drawString(s2, (int) x + 240 - j - 15 - 2 - (featured ? 10 : 0) - (unsaved ? 10 : 0), (int) y + 3, -1);
int k = 0;
String s = null;
int l;
@ -186,12 +188,17 @@ public class ServerComponent {
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(Gui.icons);
Gui.drawModalRectWithCustomSizedTexture((int) x + 240 - 15 - (featured ? 10 : 0), (int) y + 2, (float)(k * 10), (float)(176 + l * 8), 10, 8, 256.0F, 256.0F);
Tooltip.render(mouseX, mouseY, x + 240 - 15 - (featured ? 10 : 0), y + 2, 10, 8, s1);
Gui.drawModalRectWithCustomSizedTexture((int) x + 240 - 15 - (featured ? 10 : 0) - (unsaved ? 10 : 0), (int) y + 2, (float)(k * 10), (float)(176 + l * 8), 10, 8, 256.0F, 256.0F);
Tooltip.render(mouseX, mouseY, x + 240 - 15 - (featured ? 10 : 0) - (unsaved ? 10 : 0), y + 2, 10, 8, s1);
if(this.server instanceof ServerDataFeature) {
RenderUtil.drawImage(new ResourceLocation("silentclient/icons/star.png"), x + 240 - 13, y + 2, 8, 8);
Tooltip.render(mouseX, mouseY, x + 240 - 13, y + 2, 8, 8, "Featured Server");
if(featured) {
RenderUtil.drawImage(new ResourceLocation("silentclient/icons/star.png"), x + 240 - 13 - (unsaved ? 10 : 0), y + 2, 8, 8);
Tooltip.render(mouseX, mouseY, x + 240 - 13 - (unsaved ? 10 : 0), y + 2, 8, 8, "Featured Server");
if(unsaved) {
RenderUtil.drawImage(new ResourceLocation("silentclient/icons/save-icon.png"), x + 240 - 13, y + 2, 8, 8);
Tooltip.render(mouseX, mouseY, x + 240 - 13, y + 2, 8, 8, "Save Server");
}
}
return cursorType;
@ -213,6 +220,13 @@ public class ServerComponent {
return isHovered;
}
}
if(this.server instanceof ServerDataFeature) {
if(FeaturedServers.findByIPFeaturedServerInfo(this.server.serverIP, Client.getInstance().getGlobalSettings().getSavedFeaturedServers()) == null && MouseUtils.isInside(mouseX, mouseY, x + 240 - 13, y + 2, 8, 8)) {
Client.getInstance().getGlobalSettings().getSavedFeaturedServers().add(new FeaturedServers.FeaturedServerInfo(this.server.serverName, this.server.serverIP));
Client.getInstance().getGlobalSettings().save();
return isHovered;
}
}
if(!isSelected) {
this.owner.selectServer(serverIndex);
} else {

View File

@ -3,6 +3,7 @@ package net.silentclient.client.utils;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.silentclient.client.ServerDataFeature;
import java.lang.reflect.Type;
import java.util.ArrayList;
@ -22,10 +23,15 @@ public class FeaturedServers {
}
}
public class FeaturedServerInfo {
public static class FeaturedServerInfo {
public String name;
public String ip;
public FeaturedServerInfo(String name, String ip) {
this.name = name;
this.ip = ip;
}
public String getName() {
return name;
}
@ -34,4 +40,22 @@ public class FeaturedServers {
return ip;
}
}
public static ServerDataFeature findByIPServerDataFeature(String ip, ArrayList<ServerDataFeature> servers) {
for (ServerDataFeature server : servers) {
if (server.serverIP.equals(ip)) {
return server;
}
}
return null;
}
public static FeaturedServerInfo findByIPFeaturedServerInfo(String ip, ArrayList<FeaturedServerInfo> servers) {
for (FeaturedServerInfo server : servers) {
if (server.getIp().equals(ip)) {
return server;
}
}
return null;
}
}

View File

@ -1,8 +1,10 @@
package net.silentclient.client.utils.types;
import net.silentclient.client.Client;
import net.silentclient.client.utils.FeaturedServers;
import java.io.FileOutputStream;
import java.util.ArrayList;
public class GlobalSettings {
public String config;
@ -10,15 +12,20 @@ public class GlobalSettings {
public boolean displayedTutorial;
public boolean configsMigrated;
public boolean packsPanoramaEnabled;
public ArrayList<FeaturedServers.FeaturedServerInfo> savedFeaturedServers;
public GlobalSettings() {
this.config = "Default.txt";
this.lite = false;
this.displayedTutorial = false;
this.packsPanoramaEnabled = true;
this.savedFeaturedServers = new ArrayList<>();
}
public String getConfig() {
if(config == null) {
config = "Default.txt";
}
return config;
}
@ -55,6 +62,17 @@ public class GlobalSettings {
this.packsPanoramaEnabled = packsPanoramaEnabled;
}
public ArrayList<FeaturedServers.FeaturedServerInfo> getSavedFeaturedServers() {
if(savedFeaturedServers == null) {
this.savedFeaturedServers = new ArrayList<>();
}
return savedFeaturedServers;
}
public void setSavedFeaturedServers(ArrayList<FeaturedServers.FeaturedServerInfo> savedFeaturedServers) {
this.savedFeaturedServers = savedFeaturedServers;
}
public void save() {
try {
FileOutputStream outputStream = new FileOutputStream(Client.getInstance().getGlobalSettingsFile());

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B