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:
parent
b91b87463a
commit
5e5f43d102
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user