Fixed fake player skin

This commit is contained in:
hhhzzzsss 2023-06-18 20:05:19 -05:00
parent ecf2d35161
commit c20acdd794
3 changed files with 48 additions and 3 deletions

View file

@ -1,10 +1,12 @@
package com.github.hhhzzzsss.songplayer;
import com.github.hhhzzzsss.songplayer.mixin.ClientPlayNetworkHandlerAccessor;
import com.github.hhhzzzsss.songplayer.playing.SongHandler;
import com.github.hhhzzzsss.songplayer.playing.Stage;
import com.mojang.authlib.GameProfile;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.network.OtherClientPlayerEntity;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.EntityPose;
import net.minecraft.entity.player.PlayerEntity;
@ -12,11 +14,13 @@ import net.minecraft.entity.player.PlayerEntity;
import java.util.UUID;
public class FakePlayerEntity extends OtherClientPlayerEntity {
public static final UUID FAKE_PLAYER_UUID = UUID.randomUUID();
ClientPlayerEntity player = SongPlayer.MC.player;
ClientWorld world = SongPlayer.MC.world;
public FakePlayerEntity() {
super(SongPlayer.MC.world, new GameProfile(UUID.randomUUID(), SongPlayer.MC.player.getGameProfile().getName()));
super(SongPlayer.MC.world, getProfile());
copyStagePosAndPlayerLook();
@ -54,4 +58,12 @@ public class FakePlayerEntity extends OtherClientPlayerEntity {
copyPositionAndRotation(player);
}
}
private static GameProfile getProfile() {
GameProfile profile = new GameProfile(FAKE_PLAYER_UUID, SongPlayer.MC.player.getGameProfile().getName());
profile.getProperties().putAll(SongPlayer.MC.player.getGameProfile().getProperties());
PlayerListEntry playerListEntry = new PlayerListEntry(SongPlayer.MC.player.getGameProfile(), false);
((ClientPlayNetworkHandlerAccessor)SongPlayer.MC.getNetworkHandler()).getPlayerListEntries().put(FAKE_PLAYER_UUID, playerListEntry);
return profile;
}
}

View file

@ -0,0 +1,32 @@
package com.github.hhhzzzsss.songplayer.mixin;
import com.github.hhhzzzsss.songplayer.CommandProcessor;
import com.github.hhhzzzsss.songplayer.Config;
import com.github.hhhzzzsss.songplayer.SongPlayer;
import com.github.hhhzzzsss.songplayer.playing.SongHandler;
import com.github.hhhzzzsss.songplayer.playing.Stage;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.client.network.PlayerListEntry;
import net.minecraft.entity.EntityPose;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerAbilitiesS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerRespawnS2CPacket;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Map;
import java.util.UUID;
@Mixin(ClientPlayNetworkHandler.class)
public interface ClientPlayNetworkHandlerAccessor {
@Accessor
Map<UUID, PlayerListEntry> getPlayerListEntries();
}

View file

@ -6,9 +6,10 @@
"mixins": [
],
"client": [
"ClientPlayNetworkHandlerMixin",
"ClientPlayerInteractionManagerAccessor",
"ChatInputSuggestorMixin",
"ClientPlayerInteractionManagerAccessor",
"ClientPlayNetworkHandlerAccessor",
"ClientPlayNetworkHandlerMixin",
"InGameHudMixin",
"MinecraftClientMixin"
],