Normalize Unique fields in mixins

This commit is contained in:
FlorianMichael 2024-01-21 11:11:09 +01:00
parent 08f153f434
commit 68ecd55d8c
No known key found for this signature in database
GPG Key ID: C2FB87E71C425126
26 changed files with 167 additions and 120 deletions

View File

@ -1,11 +1,11 @@
package com.viaversion.fabric.common.gui; package com.viaversion.fabric.common.gui;
public interface ViaServerInfo { public interface ViaServerInfo {
boolean isViaTranslating(); boolean viaFabric$translating();
void setViaTranslating(boolean via); void viaFabric$setTranslating(boolean via);
int getViaServerVer(); int viaFabric$getServerVer();
void setViaServerVer(int ver); void viaFabric$setServerVer(int ver);
} }

View File

@ -27,8 +27,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -23,7 +23,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V"))
private void redirectPingIcon(TextureManager textureManager, Identifier identifier) { private void redirectPingIcon(TextureManager textureManager, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_LOCATION) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_LOCATION) && ((ViaServerInfo) this.server).viaFabric$translating()) {
textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png")); textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -32,7 +32,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/lang/String;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/lang/String;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, String text) { private void addServerVer(MultiplayerScreen multiplayerScreen, String text) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
StringBuilder builder = new StringBuilder(text); StringBuilder builder = new StringBuilder(text);
builder.append("\n"); builder.append("\n");
builder.append((new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())).asString()); builder.append((new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())).asString());

View File

@ -1,30 +1,35 @@
package com.viaversion.fabric.mc114.mixin.gui.client; package com.viaversion.fabric.mc114.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -27,8 +27,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -23,7 +23,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V"))
private void redirectPingIcon(TextureManager textureManager, Identifier identifier) { private void redirectPingIcon(TextureManager textureManager, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_LOCATION) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_LOCATION) && ((ViaServerInfo) this.server).viaFabric$translating()) {
textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png")); textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -32,7 +32,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/lang/String;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/lang/String;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, String text) { private void addServerVer(MultiplayerScreen multiplayerScreen, String text) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
StringBuilder builder = new StringBuilder(text); StringBuilder builder = new StringBuilder(text);
builder.append("\n"); builder.append("\n");
builder.append((new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())).asString()); builder.append((new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())).asString());

View File

@ -1,30 +1,35 @@
package com.viaversion.fabric.mc115.mixin.gui.client; package com.viaversion.fabric.mc115.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -27,8 +27,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -27,7 +27,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/texture/TextureManager;bindTexture(Lnet/minecraft/util/Identifier;)V"))
private void redirectPingIcon(TextureManager textureManager, Identifier identifier) { private void redirectPingIcon(TextureManager textureManager, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).viaFabric$translating()) {
textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png")); textureManager.bindTexture(new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -36,7 +36,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) { private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
List<Text> lines = new ArrayList<>(tooltipText); List<Text> lines = new ArrayList<>(tooltipText);
lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())); lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion()));
lines.add(this.server.version.copy()); lines.add(this.server.version.copy());

View File

@ -1,30 +1,35 @@
package com.viaversion.fabric.mc116.mixin.gui.client; package com.viaversion.fabric.mc116.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -6,6 +6,7 @@ import net.minecraft.client.network.AllowedAddressResolver;
import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerAddress;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@ -29,10 +30,11 @@ public abstract class MixinAllowedAddressResolver {
ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort()); ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort());
cir.setReturnValue(resolve(realAddress).map(it -> viaFabricAddSuffix(it, viaAddr.getSuffixWithOptions()))); cir.setReturnValue(resolve(realAddress).map(it -> viaFabric$addSuffix(it, viaAddr.getSuffixWithOptions())));
} }
private Address viaFabricAddSuffix(Address it, String viaSuffix) { @Unique
private Address viaFabric$addSuffix(Address it, String viaSuffix) {
try { try {
return Address.create(new InetSocketAddress( return Address.create(new InetSocketAddress(
InetAddress.getByAddress(it.getHostName() + "." + viaSuffix, InetAddress.getByAddress(it.getHostName() + "." + viaSuffix,

View File

@ -22,8 +22,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -29,7 +29,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0,
target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/class_2960;)V")) target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/class_2960;)V"))
private void redirectPingIcon(int i, Identifier identifier) { private void redirectPingIcon(int i, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).viaFabric$translating()) {
RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png")); RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -38,7 +38,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) { private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
List<Text> lines = new ArrayList<>(tooltipText); List<Text> lines = new ArrayList<>(tooltipText);
lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())); lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion()));
lines.add(this.server.version.copy()); lines.add(this.server.version.copy());

View File

@ -3,27 +3,33 @@ package com.viaversion.fabric.mc117.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -6,6 +6,7 @@ import net.minecraft.client.network.AllowedAddressResolver;
import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerAddress;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@ -29,10 +30,11 @@ public abstract class MixinAllowedAddressResolver {
ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort()); ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort());
cir.setReturnValue(resolve(realAddress).map(it -> viaFabricAddSuffix(it, viaAddr.getSuffixWithOptions()))); cir.setReturnValue(resolve(realAddress).map(it -> viaFabric$addSuffix(it, viaAddr.getSuffixWithOptions())));
} }
private Address viaFabricAddSuffix(Address it, String viaSuffix) { @Unique
private Address viaFabric$addSuffix(Address it, String viaSuffix) {
try { try {
return Address.create(new InetSocketAddress( return Address.create(new InetSocketAddress(
InetAddress.getByAddress(it.getHostName() + "." + viaSuffix, InetAddress.getByAddress(it.getHostName() + "." + viaSuffix,

View File

@ -22,8 +22,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getConnection()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -29,7 +29,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0,
target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/class_2960;)V")) target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/class_2960;)V"))
private void redirectPingIcon(int i, Identifier identifier) { private void redirectPingIcon(int i, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).viaFabric$translating()) {
RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png")); RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -38,7 +38,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setTooltip(Ljava/util/List;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) { private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
List<Text> lines = new ArrayList<>(tooltipText); List<Text> lines = new ArrayList<>(tooltipText);
lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion())); lines.add(new TranslatableText("gui.ping_version.translated", proto.getName(), proto.getVersion()));
lines.add(this.server.version.copy()); lines.add(this.server.version.copy());

View File

@ -3,27 +3,33 @@ package com.viaversion.fabric.mc118.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -6,6 +6,7 @@ import net.minecraft.client.network.AllowedAddressResolver;
import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerAddress;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@ -29,10 +30,11 @@ public abstract class MixinAllowedAddressResolver {
ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort()); ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort());
cir.setReturnValue(resolve(realAddress).map(it -> viaFabricAddSuffix(it, viaAddr.getSuffixWithOptions()))); cir.setReturnValue(resolve(realAddress).map(it -> viaFabric$addSuffix(it, viaAddr.getSuffixWithOptions())));
} }
private Address viaFabricAddSuffix(Address it, String viaSuffix) { @Unique
private Address viaFabric$addSuffix(Address it, String viaSuffix) {
try { try {
return Address.create(new InetSocketAddress( return Address.create(new InetSocketAddress(
InetAddress.getByAddress(it.getHostName() + "." + viaSuffix, InetAddress.getByAddress(it.getHostName() + "." + viaSuffix,

View File

@ -26,8 +26,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -27,7 +27,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0,
target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/util/Identifier;)V")) target = "Lcom/mojang/blaze3d/systems/RenderSystem;setShaderTexture(ILnet/minecraft/util/Identifier;)V"))
private void redirectPingIcon(int i, Identifier identifier) { private void redirectPingIcon(int i, Identifier identifier) {
if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).isViaTranslating()) { if (identifier.equals(DrawableHelper.GUI_ICONS_TEXTURE) && ((ViaServerInfo) this.server).viaFabric$translating()) {
RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png")); RenderSystem.setShaderTexture(i, new Identifier("viafabric:textures/gui/icons.png"));
return; return;
} }
@ -36,7 +36,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) { private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
List<Text> lines = new ArrayList<>(tooltipText); List<Text> lines = new ArrayList<>(tooltipText);
lines.add(Text.translatable("gui.ping_version.translated", proto.getName(), proto.getVersion())); lines.add(Text.translatable("gui.ping_version.translated", proto.getName(), proto.getVersion()));
lines.add(this.server.version.copy()); lines.add(this.server.version.copy());

View File

@ -3,27 +3,33 @@ package com.viaversion.fabric.mc119.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }

View File

@ -6,6 +6,7 @@ import net.minecraft.client.network.AllowedAddressResolver;
import net.minecraft.client.network.ServerAddress; import net.minecraft.client.network.ServerAddress;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@ -29,10 +30,11 @@ public abstract class MixinAllowedAddressResolver {
ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort()); ServerAddress realAddress = new ServerAddress(viaAddr.serverAddress, address.getPort());
cir.setReturnValue(resolve(realAddress).map(it -> viaFabricAddSuffix(it, viaAddr.getSuffixWithOptions()))); cir.setReturnValue(resolve(realAddress).map(it -> viaFabric$addSuffix(it, viaAddr.getSuffixWithOptions())));
} }
private Address viaFabricAddSuffix(Address it, String viaSuffix) { @Unique
private Address viaFabric$addSuffix(Address it, String viaSuffix) {
try { try {
return Address.create(new InetSocketAddress( return Address.create(new InetSocketAddress(
InetAddress.getByAddress(it.getHostName() + "." + viaSuffix, InetAddress.getByAddress(it.getHostName() + "." + viaSuffix,

View File

@ -26,8 +26,8 @@ public abstract class MixinMultiplayerServerListPingerListener implements Client
FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel() FabricDecodeHandler decoder = ((MixinClientConnectionAccessor) this.getField_3774()).getChannel()
.pipeline().get(FabricDecodeHandler.class); .pipeline().get(FabricDecodeHandler.class);
if (decoder != null) { if (decoder != null) {
((ViaServerInfo) getField_3776()).setViaTranslating(decoder.getInfo().isActive()); ((ViaServerInfo) getField_3776()).viaFabric$setTranslating(decoder.getInfo().isActive());
((ViaServerInfo) getField_3776()).setViaServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion()); ((ViaServerInfo) getField_3776()).viaFabric$setServerVer(decoder.getInfo().getProtocolInfo().getServerProtocolVersion());
} }
} }
} }

View File

@ -25,7 +25,7 @@ public class MixinServerEntry {
@ModifyArg(method = "render", at = @At(value = "INVOKE", ordinal = 0, @ModifyArg(method = "render", at = @At(value = "INVOKE", ordinal = 0,
target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V")) target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"))
private Identifier redirectPingIcon(Identifier texture) { private Identifier redirectPingIcon(Identifier texture) {
if (((ViaServerInfo) this.server).isViaTranslating() && texture.getPath().startsWith("server_list/ping")) { if (((ViaServerInfo) this.server).viaFabric$translating() && texture.getPath().startsWith("server_list/ping")) {
return new Identifier("viafabric", texture.getPath()); return new Identifier("viafabric", texture.getPath());
} }
return texture; return texture;
@ -33,7 +33,7 @@ public class MixinServerEntry {
@Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V")) @Redirect(method = "render", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V"))
private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) { private void addServerVer(MultiplayerScreen multiplayerScreen, List<Text> tooltipText) {
ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).getViaServerVer()); ProtocolVersion proto = ProtocolVersion.getProtocol(((ViaServerInfo) this.server).viaFabric$getServerVer());
List<Text> lines = new ArrayList<>(tooltipText); List<Text> lines = new ArrayList<>(tooltipText);
lines.add(Text.translatable("gui.ping_version.translated", proto.getName(), proto.getVersion())); lines.add(Text.translatable("gui.ping_version.translated", proto.getName(), proto.getVersion()));
multiplayerScreen.setMultiplayerScreenTooltip(lines); multiplayerScreen.setMultiplayerScreenTooltip(lines);

View File

@ -3,27 +3,33 @@ package com.viaversion.fabric.mc120.mixin.gui.client;
import com.viaversion.fabric.common.gui.ViaServerInfo; import com.viaversion.fabric.common.gui.ViaServerInfo;
import net.minecraft.client.network.ServerInfo; import net.minecraft.client.network.ServerInfo;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
@Mixin(ServerInfo.class) @Mixin(ServerInfo.class)
public class MixinServerInfo implements ViaServerInfo { public class MixinServerInfo implements ViaServerInfo {
private boolean viaTranslating; @Unique
private int viaServerVer; private boolean viaFabric$translating;
public int getViaServerVer() { @Unique
return viaServerVer; private int viaFabric$serverVer;
}
public void setViaServerVer(int viaServerVer) { @Override
this.viaServerVer = viaServerVer; public int viaFabric$getServerVer() {
return viaFabric$serverVer;
} }
@Override @Override
public boolean isViaTranslating() { public void viaFabric$setServerVer(int ver) {
return viaTranslating; this.viaFabric$serverVer = ver;
} }
@Override @Override
public void setViaTranslating(boolean via) { public boolean viaFabric$translating() {
this.viaTranslating = via; return viaFabric$translating;
}
@Override
public void viaFabric$setTranslating(boolean via) {
this.viaFabric$translating = via;
} }
} }