Skip to content

Commit 7dbb60d

Browse files
committed
fix: mitigate sodium bug in another way
For some reason this didn't get into 1.21.6+, but now here it is Cherry-picked from bb70ca6
1 parent 3d59b88 commit 7dbb60d

File tree

4 files changed

+47
-10
lines changed

4 files changed

+47
-10
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.ishland.c2me.base.common.theinterface;
2+
3+
public interface PlayerEntityExtension {
4+
5+
void c2me$onForcedLoaded();
6+
7+
}
Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package com.ishland.c2me.base.mixin.client_movement;
22

3-
import com.ishland.c2me.base.mixin.access.IPlayerEntity;
4-
import com.mojang.authlib.GameProfile;
5-
import net.minecraft.client.network.AbstractClientPlayerEntity;
3+
import com.ishland.c2me.base.common.theinterface.PlayerEntityExtension;
4+
import net.minecraft.client.network.ClientPlayNetworkHandler;
65
import net.minecraft.client.network.ClientPlayerEntity;
7-
import net.minecraft.client.world.ClientWorld;
6+
import net.minecraft.network.packet.c2s.play.PlayerLoadedC2SPacket;
7+
import org.spongepowered.asm.mixin.Final;
88
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Shadow;
910

1011
@Mixin(ClientPlayerEntity.class)
11-
public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity {
12+
public class MixinClientPlayerEntity implements PlayerEntityExtension {
1213

13-
public MixinClientPlayerEntity(ClientWorld world, GameProfile profile) {
14-
super(world, profile);
15-
}
14+
@Shadow @Final public ClientPlayNetworkHandler networkHandler;
1615

1716
@Override
18-
public boolean isLoaded() {
19-
return ((IPlayerEntity) this).getLoaded();
17+
public void c2me$onForcedLoaded() {
18+
this.networkHandler.sendPacket(new PlayerLoadedC2SPacket());
2019
}
2120

2221
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.ishland.c2me.base.mixin.client_movement;
2+
3+
import com.ishland.c2me.base.common.theinterface.PlayerEntityExtension;
4+
import net.minecraft.entity.player.PlayerEntity;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Shadow;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10+
11+
@Mixin(PlayerEntity.class)
12+
public class MixinPlayerEntity implements PlayerEntityExtension {
13+
14+
@Shadow private boolean loaded;
15+
16+
@Shadow protected int remainingLoadTicks;
17+
18+
@Override
19+
public void c2me$onForcedLoaded() {
20+
// no-op, intended to be overridden
21+
}
22+
23+
@Inject(method = "tickLoaded", at = @At("RETURN"))
24+
private void onForcedLoaded(CallbackInfo ci) {
25+
if (!this.loaded && this.remainingLoadTicks == 0) {
26+
this.c2me$onForcedLoaded();
27+
}
28+
}
29+
30+
}

c2me-base/src/main/resources/c2me-base.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"access.IXoroshiro128PlusPlusRandomDeriver",
5757
"access.IXoroshiro128PlusPlusRandomImpl",
5858
"access.fapi.IArrayBackedEvent",
59+
"client_movement.MixinPlayerEntity",
5960
"instrumentation.MixinServerChunkManager",
6061
"report.MixinDedicatedServerWatchdog",
6162
"scheduler.MixinServerChunkManager",

0 commit comments

Comments
 (0)