mirror of
https://github.com/ViaVersion/ViaFabric.git
synced 2024-10-05 05:17:29 +02:00
Less ugly GUI
This commit is contained in:
parent
7b4248d2ae
commit
e460d59790
@ -39,6 +39,11 @@ import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
|
|||||||
import us.myles.ViaVersion.api.protocol.ProtocolVersion;
|
import us.myles.ViaVersion.api.protocol.ProtocolVersion;
|
||||||
import us.myles.ViaVersion.protocols.base.VersionProvider;
|
import us.myles.ViaVersion.protocols.base.VersionProvider;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@Mixin(MultiplayerScreen.class)
|
@Mixin(MultiplayerScreen.class)
|
||||||
public abstract class MixinMultiplayerGui extends Screen {
|
public abstract class MixinMultiplayerGui extends Screen {
|
||||||
private TextFieldWidget protocolVersion;
|
private TextFieldWidget protocolVersion;
|
||||||
@ -47,24 +52,42 @@ public abstract class MixinMultiplayerGui extends Screen {
|
|||||||
|
|
||||||
@Inject(method = "method_2540", at = @At("TAIL"))
|
@Inject(method = "method_2540", at = @At("TAIL"))
|
||||||
private void onInitWidgets(CallbackInfo ci) {
|
private void onInitWidgets(CallbackInfo ci) {
|
||||||
protocolVersion = new TextFieldWidget(fontRenderer, this.screenWidth / 2 + 70, 8, 45, 20);
|
protocolVersion = new TextFieldWidget(fontRenderer, this.screenWidth / 2 + 88, 13, 65, 15);
|
||||||
|
protocolVersion.method_1890(new VersionFormatFilter());
|
||||||
int clientSideVersion = ((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion;
|
int clientSideVersion = ((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion;
|
||||||
supportedProtocol = isSupported(clientSideVersion);
|
supportedProtocol = isSupported(clientSideVersion);
|
||||||
protocolVersion.setText(ProtocolVersion.isRegistered(clientSideVersion)
|
protocolVersion.setText(ProtocolVersion.isRegistered(clientSideVersion)
|
||||||
? ProtocolVersion.getProtocol(clientSideVersion).getName()
|
? ProtocolVersion.getProtocol(clientSideVersion).getName()
|
||||||
: Integer.toString(clientSideVersion));
|
: Integer.toString(clientSideVersion));
|
||||||
protocolVersion.method_1890(new VersionFormatFilter());
|
protocolVersion.method_1868(getTextColor()); // Set editable color
|
||||||
protocolVersion.setChangedListener((text) -> {
|
protocolVersion.setChangedListener((text) -> {
|
||||||
|
protocolVersion.setSuggestion(null);
|
||||||
int newVersion = ((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion;
|
int newVersion = ((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion;
|
||||||
validProtocol = true;
|
validProtocol = true;
|
||||||
try {
|
try {
|
||||||
newVersion = Integer.parseInt(text);
|
newVersion = Integer.parseInt(text);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
ProtocolVersion closest = ProtocolVersion.getClosest(text);
|
ProtocolVersion closest = ProtocolVersion.getClosest(text);
|
||||||
if (closest != null) newVersion = closest.getId();
|
if (closest != null) {
|
||||||
else validProtocol = false;
|
newVersion = closest.getId();
|
||||||
|
} else {
|
||||||
|
validProtocol = false;
|
||||||
|
List<String> completions = ProtocolVersion.getProtocols().stream()
|
||||||
|
.map(ProtocolVersion::getName)
|
||||||
|
.flatMap(str -> Stream.concat(
|
||||||
|
Arrays.stream(str.split("-")),
|
||||||
|
Arrays.stream(new String[]{str})
|
||||||
|
))
|
||||||
|
.distinct()
|
||||||
|
.filter(ver -> ver.startsWith(text))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (completions.size() == 1) {
|
||||||
|
protocolVersion.setSuggestion(completions.get(0).substring(text.length()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
supportedProtocol = isSupported(newVersion);
|
supportedProtocol = isSupported(newVersion);
|
||||||
|
protocolVersion.method_1868(getTextColor()); // Set editable color
|
||||||
((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion = newVersion;
|
((VRVersionProvider) Via.getManager().getProviders().get(VersionProvider.class)).clientSideModeVersion = newVersion;
|
||||||
});
|
});
|
||||||
this.listeners.add(protocolVersion);
|
this.listeners.add(protocolVersion);
|
||||||
@ -72,12 +95,6 @@ public abstract class MixinMultiplayerGui extends Screen {
|
|||||||
|
|
||||||
@Inject(method = "draw", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Screen;draw(IIF)V"))
|
@Inject(method = "draw", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Screen;draw(IIF)V"))
|
||||||
private void onDraw(int int_1, int int_2, float float_1, CallbackInfo ci) {
|
private void onDraw(int int_1, int int_2, float float_1, CallbackInfo ci) {
|
||||||
drawStringCentered(fontRenderer, I18n.translate("viafabric.gui.protocol_version"), this.screenWidth / 2, 11, 0xFFFFFF);
|
|
||||||
if (!validProtocol) {
|
|
||||||
drawString(fontRenderer, I18n.translate("viafabric.gui.invalid_protocol"), screenWidth / 2 + 120, 15, 0xff0000);
|
|
||||||
} else if (!supportedProtocol) {
|
|
||||||
drawString(fontRenderer, I18n.translate("viafabric.gui.unsupported_protocol"), screenWidth / 2 + 120, 15, 0xff0000);
|
|
||||||
}
|
|
||||||
protocolVersion.draw(int_1, int_2, float_1);
|
protocolVersion.draw(int_1, int_2, float_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +103,15 @@ public abstract class MixinMultiplayerGui extends Screen {
|
|||||||
protocolVersion.tick();
|
protocolVersion.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getTextColor() {
|
||||||
|
if (!validProtocol) {
|
||||||
|
return 0xff0000; // Red
|
||||||
|
} else if (!supportedProtocol) {
|
||||||
|
return 0xFFA500; // Orange
|
||||||
|
}
|
||||||
|
return 0xE0E0E0; // Default
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isSupported(int protocol) {
|
private boolean isSupported(int protocol) {
|
||||||
return ProtocolRegistry.getProtocolPath(ProtocolRegistry.SERVER_PROTOCOL, protocol) != null
|
return ProtocolRegistry.getProtocolPath(ProtocolRegistry.SERVER_PROTOCOL, protocol) != null
|
||||||
|| ProtocolRegistry.SERVER_PROTOCOL == protocol;
|
|| ProtocolRegistry.SERVER_PROTOCOL == protocol;
|
||||||
|
@ -1,5 +1,2 @@
|
|||||||
{
|
{
|
||||||
"viafabric.gui.protocol_version": "Protocol Version:",
|
|
||||||
"viafabric.gui.invalid_protocol": "INVALID",
|
|
||||||
"viafabric.gui.unsupported_protocol": "UNSUPPORTED"
|
|
||||||
}
|
}
|
@ -1,5 +1,2 @@
|
|||||||
{
|
{
|
||||||
"viafabric.gui.protocol_version": "Versão do protocolo:",
|
|
||||||
"viafabric.gui.invalid_protocol": "INVÁLIDO",
|
|
||||||
"viafabric.gui.unsupported_protocol": "SEM SUPORTE"
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user