0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-20 01:12:13 +02:00

Improve CleanUpScreen

This commit is contained in:
Alexander01998 2020-10-15 12:19:28 +02:00
parent b91b87463a
commit 5e5f43d102

View File

@ -16,6 +16,7 @@ import org.lwjgl.glfw.GLFW;
import net.minecraft.SharedConstants;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerServerListWidget;
import net.minecraft.client.gui.widget.AbstractButtonWidget;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.network.ServerInfo;
@ -23,7 +24,6 @@ import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.LiteralText;
import net.minecraft.text.Text;
import net.wurstclient.mixinterface.IMultiplayerScreen;
import net.wurstclient.mixinterface.IServerList;
public class CleanUpScreen extends Screen
{
@ -106,36 +106,12 @@ public class CleanUpScreen extends Screen
private void cleanUp()
{
if(removeAll)
{
((IServerList)prevScreen.getServerList()).clear();
prevScreen.getServerList().saveFile();
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setSelected(null);
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setServers(prevScreen.getServerList());
client.openScreen(prevScreen);
return;
}
for(int i = prevScreen.getServerList().size() - 1; i >= 0; i--)
{
ServerInfo server = prevScreen.getServerList().get(i);
if(cleanupUnknown
&& "\u00a74Can\'t resolve hostname"
.equals(server.label.getString())
|| cleanupOutdated && server.protocolVersion != SharedConstants
.getGameVersion().getProtocolVersion()
|| cleanupFailed && server.ping != -2L && server.ping < 0L
|| cleanupGriefMe && server.name.startsWith("Grief me"))
{
if(removeAll || shouldRemove(server))
prevScreen.getServerList().remove(server);
prevScreen.getServerList().saveFile();
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setSelected(null);
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setServers(prevScreen.getServerList());
}
}
if(cleanupRename)
@ -143,16 +119,71 @@ public class CleanUpScreen extends Screen
{
ServerInfo server = prevScreen.getServerList().get(i);
server.name = "Grief me #" + (i + 1);
prevScreen.getServerList().saveFile();
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setSelected(null);
((IMultiplayerScreen)prevScreen).getServerListSelector()
.setServers(prevScreen.getServerList());
}
saveServerList();
client.openScreen(prevScreen);
}
private boolean shouldRemove(ServerInfo server)
{
if(server == null)
return false;
if(cleanupUnknown && isUnknownHost(server))
return true;
if(cleanupOutdated && !isSameProtocol(server))
return true;
if(cleanupFailed && isFailedPing(server))
return true;
if(cleanupGriefMe && isGriefMeServer(server))
return true;
return false;
}
private boolean isUnknownHost(ServerInfo server)
{
if(server.label == null)
return false;
if(server.label.getString() == null)
return false;
return server.label.getString()
.equals("\u00a74Can\'t resolve hostname");
}
private boolean isSameProtocol(ServerInfo server)
{
return server.protocolVersion == SharedConstants.getGameVersion()
.getProtocolVersion();
}
private boolean isFailedPing(ServerInfo server)
{
return server.ping != -2L && server.ping < 0L;
}
private boolean isGriefMeServer(ServerInfo server)
{
return server.name != null && server.name.startsWith("Grief me");
}
private void saveServerList()
{
prevScreen.getServerList().saveFile();
MultiplayerServerListWidget serverListSelector =
((IMultiplayerScreen)prevScreen).getServerListSelector();
serverListSelector.setSelected(null);
serverListSelector.setServers(prevScreen.getServerList());
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int int_3)
{
@ -172,6 +203,7 @@ public class CleanUpScreen extends Screen
drawCenteredString(matrixStack, textRenderer,
"Please select the servers you want to remove:", width / 2, 36,
10526880);
super.render(matrixStack, mouseX, mouseY, partialTicks);
renderButtonTooltip(matrixStack, mouseX, mouseY);
}
@ -184,11 +216,11 @@ public class CleanUpScreen extends Screen
if(!button.isHovered() || !(button instanceof CleanUpButton))
continue;
CleanUpButton woButton = (CleanUpButton)button;
if(woButton.tooltip.isEmpty())
CleanUpButton cuButton = (CleanUpButton)button;
if(cuButton.tooltip.isEmpty())
continue;
renderTooltip(matrixStack, woButton.tooltip, mouseX, mouseY);
renderTooltip(matrixStack, cuButton.tooltip, mouseX, mouseY);
break;
}
}
@ -217,8 +249,6 @@ public class CleanUpScreen extends Screen
this.tooltip = Arrays.asList(lines2);
}
addButton(this);
}
@Override