Skip to content

Commit 8fe9f7a

Browse files
committed
assorted fixes and updates
1 parent bff4348 commit 8fe9f7a

14 files changed

+96
-46
lines changed

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
2-
id "fabric-loom" version "1.2-SNAPSHOT"
2+
id "fabric-loom" version "1.4-SNAPSHOT"
33
id "maven-publish"
4-
id "com.github.johnrengelman.shadow" version "7.1.2"
4+
id "com.github.johnrengelman.shadow" version "8.1.1"
55
}
66

77
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17

gradle.properties

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx2G
44
minecraft_version=1.20.2
55
yarn_mappings=1.20.2+build.1
66
loader_version=0.14.22
7-
fapi_version=0.89.0+1.20.2
7+
fapi_version=0.89.2+1.20.2
88

99
# Mod Properties
1010
mod_version=0.5.4
@@ -17,10 +17,10 @@ archives_base_name=meteor-client
1717
sodium_version=mc1.20.2-0.5.3
1818

1919
# Lithium (https://github.com/CaffeineMC/lithium-fabric)
20-
lithium_version=mc1.20.1-0.11.2
20+
lithium_version=mc1.20.2-0.12.0
2121

2222
# Iris (https://github.com/IrisShaders/Iris)
23-
iris_version=1.6.8+1.20.1
23+
iris_version=1.6.9+1.20.2
2424

2525
# Orbit (https://github.com/MeteorDevelopment/orbit)
2626
orbit_version=0.2.3
@@ -38,7 +38,7 @@ reflections_version=0.10.2
3838
netty_version=4.1.90.Final
3939

4040
# Mixin Extras (https://github.com/LlamaLad7/MixinExtras)
41-
mixin_extras_version=0.2.0-rc.4
41+
mixin_extras_version=0.2.0-rc.5
4242

4343
# Indium (https://github.com/comp500/Indium)
44-
indium_version=1.0.25+mc1.20.1
44+
indium_version=1.0.27+mc1.20.1
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.mixin;
7+
8+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
9+
import meteordevelopment.meteorclient.utils.network.Capes;
10+
import net.minecraft.client.network.AbstractClientPlayerEntity;
11+
import net.minecraft.client.render.VertexConsumerProvider;
12+
import net.minecraft.client.render.entity.feature.CapeFeatureRenderer;
13+
import net.minecraft.client.util.math.MatrixStack;
14+
import net.minecraft.util.Identifier;
15+
import org.spongepowered.asm.mixin.Mixin;
16+
import org.spongepowered.asm.mixin.injection.At;
17+
18+
@Mixin(CapeFeatureRenderer.class)
19+
public class CapeFeatureRendererMixin {
20+
@ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/SkinTextures;capeTexture()Lnet/minecraft/util/Identifier;"))
21+
private Identifier modifyCapeTexture(Identifier original, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, AbstractClientPlayerEntity abstractClientPlayerEntity, float f, float g, float h, float j, float k, float l) {
22+
return Capes.get(abstractClientPlayerEntity);
23+
}
24+
}

src/main/java/meteordevelopment/meteorclient/mixin/ChatHudMixin.java

+6
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ private void onAddMessage(Text message, @Nullable MessageSignatureData signature
121121
@ModifyExpressionValue(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V",
122122
slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/ChatHud;visibleMessages:Ljava/util/List;")), at = @At(value = "INVOKE", target = "Ljava/util/List;size()I"))
123123
private int addMessageListSizeProxy(int size) {
124+
if (Modules.get() == null) return size;
125+
124126
BetterChat betterChat = getBetterChat();
125127
if (betterChat.isLongerChat() && betterChat.getChatLength() >= 100) return size - betterChat.getChatLength();
126128
return size;
@@ -151,12 +153,16 @@ private MessageIndicator onRender_modifyIndicator(MessageIndicator indicator) {
151153
@Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V",
152154
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;isChatFocused()Z"), locals = LocalCapture.CAPTURE_FAILSOFT)
153155
private void onBreakChatMessageLines(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci, int i, List<OrderedText> list) {
156+
if (Modules.get() == null) return; // baritone calls addMessage before we initialise
157+
154158
getBetterChat().lines.add(0, list.size());
155159
}
156160

157161
@Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V",
158162
slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/ChatHud;messages:Ljava/util/List;")), at = @At(value = "INVOKE", target = "Ljava/util/List;remove(I)Ljava/lang/Object;"))
159163
private void onRemoveMessage(Text message, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) {
164+
if (Modules.get() == null) return;
165+
160166
BetterChat betterChat = getBetterChat();
161167
int size = betterChat.lines.size() - (betterChat.isLongerChat() && betterChat.getChatLength() >= 100 ? betterChat.getChatLength() : 0);
162168

src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionMixin.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ private void disconnect(Text disconnectReason, CallbackInfo ci) {
5959
}
6060
}
6161

62-
@Inject(method = "connect", at = @At("HEAD"))
63-
private static void onConnect(InetSocketAddress address, boolean useEpoll, CallbackInfoReturnable<?> cir) {
62+
@Inject(method = "connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", at = @At("HEAD"))
63+
private static void onConnect(InetSocketAddress address, boolean useEpoll, ClientConnection connection, CallbackInfoReturnable<?> cir) {
6464
MeteorClient.EVENT_BUS.post(ServerConnectEndEvent.get(address));
6565
}
6666

src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java

+12-4
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
import net.minecraft.client.gui.screen.Screen;
1313
import net.minecraft.client.gui.screen.TitleScreen;
1414
import net.minecraft.client.gui.widget.ButtonWidget;
15-
import net.minecraft.client.gui.widget.GridWidget;
15+
import net.minecraft.client.gui.widget.DirectionalLayoutWidget;
1616
import net.minecraft.text.Text;
17+
import org.spongepowered.asm.mixin.Final;
1718
import org.spongepowered.asm.mixin.Mixin;
19+
import org.spongepowered.asm.mixin.Shadow;
1820
import org.spongepowered.asm.mixin.Unique;
1921
import org.spongepowered.asm.mixin.injection.At;
2022
import org.spongepowered.asm.mixin.injection.Inject;
@@ -25,6 +27,9 @@
2527

2628
@Mixin(DisconnectedScreen.class)
2729
public abstract class DisconnectedScreenMixin extends Screen {
30+
@Shadow
31+
@Final
32+
private DirectionalLayoutWidget grid;
2833
@Unique private ButtonWidget reconnectBtn;
2934
@Unique private double time = Modules.get().get(AutoReconnect.class).time.get() * 20;
3035

@@ -33,13 +38,14 @@ protected DisconnectedScreenMixin(Text title) {
3338
}
3439

3540
@Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/DirectionalLayoutWidget;refreshPositions()V", shift = At.Shift.BEFORE), locals = LocalCapture.CAPTURE_FAILHARD)
36-
private void addButtons(CallbackInfo ci, ButtonWidget buttonWidget, GridWidget.Adder adder) {
41+
private void addButtons(CallbackInfo ci, ButtonWidget buttonWidget) {
3742
AutoReconnect autoReconnect = Modules.get().get(AutoReconnect.class);
3843

3944
if (autoReconnect.lastServerConnection != null) {
40-
reconnectBtn = adder.add(new ButtonWidget.Builder(Text.literal(getText()), button -> tryConnecting()).build());
45+
reconnectBtn = new ButtonWidget.Builder(Text.literal(getText()), button -> tryConnecting()).build();
46+
grid.add(reconnectBtn);
4147

42-
adder.add(
48+
grid.add(
4349
new ButtonWidget.Builder(Text.literal("Toggle Auto Reconnect"), button -> {
4450
autoReconnect.toggle();
4551
reconnectBtn.setMessage(Text.literal(getText()));
@@ -62,12 +68,14 @@ public void tick() {
6268
}
6369
}
6470

71+
@Unique
6572
private String getText() {
6673
String reconnectText = "Reconnect";
6774
if (Modules.get().isActive(AutoReconnect.class)) reconnectText += " " + String.format("(%.1f)", time / 20);
6875
return reconnectText;
6976
}
7077

78+
@Unique
7179
private void tryConnecting() {
7280
var lastServer = Modules.get().get(AutoReconnect.class).lastServerConnection;
7381
ConnectScreen.connect(new TitleScreen(), mc, lastServer.left(), lastServer.right(), false);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client).
3+
* Copyright (c) Meteor Development.
4+
*/
5+
6+
package meteordevelopment.meteorclient.mixin;
7+
8+
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
9+
import meteordevelopment.meteorclient.utils.network.Capes;
10+
import net.minecraft.client.network.AbstractClientPlayerEntity;
11+
import net.minecraft.client.render.VertexConsumerProvider;
12+
import net.minecraft.client.render.entity.feature.ElytraFeatureRenderer;
13+
import net.minecraft.client.render.entity.feature.FeatureRenderer;
14+
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
15+
import net.minecraft.client.render.entity.model.EntityModel;
16+
import net.minecraft.client.util.math.MatrixStack;
17+
import net.minecraft.entity.LivingEntity;
18+
import net.minecraft.util.Identifier;
19+
import org.spongepowered.asm.mixin.Mixin;
20+
import org.spongepowered.asm.mixin.injection.At;
21+
22+
@Mixin(ElytraFeatureRenderer.class)
23+
public abstract class ElytraFeatureRendererMixin<T extends LivingEntity, M extends EntityModel<T>> extends FeatureRenderer<T, M> {
24+
public ElytraFeatureRendererMixin(FeatureRendererContext<T, M> context) {
25+
super(context);
26+
}
27+
28+
@ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/SkinTextures;capeTexture()Lnet/minecraft/util/Identifier;"))
29+
private Identifier modifyCapeTexture(Identifier original, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, T livingEntity, float f, float g, float h, float j, float k, float l) {
30+
if (!(livingEntity instanceof AbstractClientPlayerEntity playerEntity)) return original;
31+
return Capes.get(playerEntity);
32+
}
33+
}

src/main/java/meteordevelopment/meteorclient/mixin/PlayerListEntryMixin.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import net.minecraft.client.MinecraftClient;
1212
import net.minecraft.client.network.PlayerListEntry;
1313
import net.minecraft.client.util.DefaultSkinHelper;
14-
import net.minecraft.util.Identifier;
14+
import net.minecraft.client.util.SkinTextures;
1515
import org.spongepowered.asm.mixin.Mixin;
1616
import org.spongepowered.asm.mixin.Shadow;
1717
import org.spongepowered.asm.mixin.injection.At;
@@ -24,10 +24,10 @@ public abstract class PlayerListEntryMixin {
2424
public abstract GameProfile getProfile();
2525

2626
@Inject(method = "getSkinTextures", at = @At("HEAD"), cancellable = true)
27-
private void onGetTexture(CallbackInfoReturnable<Identifier> info) {
27+
private void onGetTexture(CallbackInfoReturnable<SkinTextures> info) {
2828
if (getProfile().getName().equals(MinecraftClient.getInstance().getSession().getUsername())) {
2929
if (Modules.get().get(NameProtect.class).skinProtect()) {
30-
info.setReturnValue(DefaultSkinHelper.getTexture());
30+
info.setReturnValue(DefaultSkinHelper.getTexture(getProfile()));
3131
}
3232
}
3333
}

src/main/java/meteordevelopment/meteorclient/mixin/SkinTexturesMixin.java

-24
This file was deleted.

src/main/java/meteordevelopment/meteorclient/mixin/YggdrasilMinecraftSessionServiceAccessor.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,17 @@
66
package meteordevelopment.meteorclient.mixin;
77

88
import com.mojang.authlib.Environment;
9-
import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
9+
import com.mojang.authlib.yggdrasil.ServicesKeySet;
1010
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
1111
import org.spongepowered.asm.mixin.Mixin;
1212
import org.spongepowered.asm.mixin.gen.Invoker;
1313

14+
import java.net.Proxy;
15+
1416
@Mixin(YggdrasilMinecraftSessionService.class)
1517
public interface YggdrasilMinecraftSessionServiceAccessor {
1618
@Invoker("<init>")
17-
static YggdrasilMinecraftSessionService createYggdrasilMinecraftSessionService(final YggdrasilAuthenticationService service, final Environment env) {
19+
static YggdrasilMinecraftSessionService createYggdrasilMinecraftSessionService(final ServicesKeySet servicesKeySet, final Proxy proxy, final Environment env) {
1820
throw new UnsupportedOperationException();
1921
}
2022
}

src/main/java/meteordevelopment/meteorclient/systems/accounts/types/EasyMCAccount.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public boolean fetchInfo() {
5151

5252
@Override
5353
public boolean login() {
54-
applyLoginEnvironment(SERVICE, YggdrasilMinecraftSessionServiceAccessor.createYggdrasilMinecraftSessionService(SERVICE, ENVIRONMENT));
54+
applyLoginEnvironment(SERVICE, YggdrasilMinecraftSessionServiceAccessor.createYggdrasilMinecraftSessionService(SERVICE.getServicesKeySet(), SERVICE.getProxy(), ENVIRONMENT));
5555
setSession(new Session(cache.username, cache.uuid, name, Optional.empty(), Optional.empty(), Session.AccountType.MOJANG));
5656

5757
cache.loadHead();

src/main/java/meteordevelopment/meteorclient/systems/accounts/types/TheAlteningAccount.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public boolean fetchInfo() {
4141

4242
@Override
4343
public boolean login() {
44-
applyLoginEnvironment(SERVICE, YggdrasilMinecraftSessionServiceAccessor.createYggdrasilMinecraftSessionService(SERVICE, ENVIRONMENT));
44+
applyLoginEnvironment(SERVICE, YggdrasilMinecraftSessionServiceAccessor.createYggdrasilMinecraftSessionService(SERVICE.getServicesKeySet(), SERVICE.getProxy(), ENVIRONMENT));
4545

4646
/*YggdrasilUserAuthentication auth = getAuth();
4747

src/main/resources/meteor-client.mixins.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"BufferRendererAccessor",
3838
"CameraMixin",
3939
"CapabilityTrackerMixin",
40+
"CapeFeatureRendererMixin",
4041
"ChatHudAccessor",
4142
"ChatHudLineMixin",
4243
"ChatHudLineVisibleMixin",
@@ -69,6 +70,7 @@
6970
"DefaultSkinHelperMixin",
7071
"DisconnectedScreenMixin",
7172
"DrawContextMixin",
73+
"ElytraFeatureRendererMixin",
7274
"EnchantingTableBlockEntityRendererMixin",
7375
"EndCrystalEntityRendererMixin",
7476
"EntityAccessor",
@@ -147,7 +149,6 @@
147149
"SimpleEntityLookupAccessor",
148150
"SimpleOptionMixin",
149151
"SimpleRegistryMixin",
150-
"SkinTexturesMixin",
151152
"SlimeBlockMixin",
152153
"SlotMixin",
153154
"SoundSystemMixin",

0 commit comments

Comments
 (0)