1
0
mirror of https://github.com/Suiranoil/SkinRestorer.git synced 2026-01-16 04:42:12 +00:00

Compare commits

...

25 Commits

Author SHA1 Message Date
bd983e10ec Merge branch '1.19.4-multiloader' into 1.19.3-multiloader 2025-06-01 14:09:42 +03:00
c695e66a94 Merge branch '1.20-multiloader' into 1.19.4-multiloader 2025-06-01 14:07:07 +03:00
c07497cddb Merge branch '1.20.2-multiloader' into 1.20-multiloader 2025-06-01 14:06:02 +03:00
418397d3d2 Merge branch '1.20.3-multiloader' into 1.20.2-multiloader 2025-06-01 14:03:19 +03:00
7af35cda9f Merge branch '1.20.5-multiloader' into 1.20.3-multiloader 2025-06-01 14:02:05 +03:00
3d92617e47 Merge branch '1.21-multiloader' into 1.20.5-multiloader 2025-06-01 14:00:34 +03:00
f357e6c985 Merge branch '1.21.5-multiloader' into 1.21-multiloader 2025-06-01 13:57:15 +03:00
e4c9e1b3cd bump version 2025-06-01 13:55:20 +03:00
3ef3318ed3 update CHANGELOG.md 2025-06-01 13:48:54 +03:00
c9bf691544 Merge branch '1.19.4-multiloader' into 1.19.3-multiloader 2025-05-30 22:56:56 +03:00
1a6327f91c Merge branch '1.20-multiloader' into 1.19.4-multiloader 2025-05-30 22:56:48 +03:00
56655bca36 backport to 1.20 2025-05-30 22:39:37 +03:00
90ca995907 Merge branch '1.20.2-multiloader' into 1.20-multiloader
# Conflicts:
#	common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java
2025-05-30 22:38:16 +03:00
0823ed6669 Merge branch '1.20.3-multiloader' into 1.20.2-multiloader 2025-05-30 22:37:22 +03:00
3fff2eb920 Merge branch '1.20.5-multiloader' into 1.20.3-multiloader 2025-05-30 22:37:11 +03:00
50a49b33a2 Merge branch '1.21-multiloader' into 1.20.5-multiloader 2025-05-30 22:36:56 +03:00
8de7f3a16f Merge branch '1.21.5-multiloader' into 1.21-multiloader 2025-05-30 22:36:25 +03:00
5b384c32d6 remove shadow from ServerLoginPacketListenerImplMixin 2025-05-30 22:35:56 +03:00
7fb647b3ba Merge branch '1.20.2-multiloader' into 1.20-multiloader
# Conflicts:
#	common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java
2025-05-30 21:50:53 +03:00
907566e12b Merge branch '1.20.3-multiloader' into 1.20.2-multiloader 2025-05-30 21:48:30 +03:00
8a730c7c61 Merge branch '1.20.5-multiloader' into 1.20.3-multiloader 2025-05-30 21:48:01 +03:00
0feba3f4b2 Merge branch '1.21-multiloader' into 1.20.5-multiloader 2025-05-30 21:47:51 +03:00
fcd76d9a87 Merge branch '1.21.5-multiloader' into 1.21-multiloader 2025-05-30 21:47:45 +03:00
8119a08c80 remove shadow of server from PlayerListMixin 2025-05-30 21:46:42 +03:00
6c159d6aa2 remove shadow of public method getPlayers 2025-05-30 21:29:42 +03:00
7 changed files with 32 additions and 20 deletions

View File

@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.3.3] - 2025-06-01
### Fixed
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
### Removed
- Removed minecraft 1.19 support
## [2.3.2] - 2025-05-24
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))

View File

@@ -1,2 +1,4 @@
### Fixed
- Fixed mixin incompatibility with ModernFix (closes [#42](https://github.com/Suiranoil/SkinRestorer/issues/52))
- Fixed forge mixin crash (closes [#54](https://github.com/Suiranoil/SkinRestorer/issues/53))
### Removed
- Removed minecraft 1.19 support

View File

@@ -5,26 +5,17 @@ import net.minecraft.network.Connection;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
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.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.Collections;
import java.util.List;
@Mixin(PlayerList.class)
public abstract class PlayerListMixin {
@Shadow
public abstract List<ServerPlayer> getPlayers();
@Shadow @Final
private MinecraftServer server;
@Inject(method = "remove", at = @At("TAIL"))
private void remove(ServerPlayer player, CallbackInfo ci) {
SkinRestorer.Events.onPlayerDisconnect(player);
@@ -32,13 +23,14 @@ public abstract class PlayerListMixin {
@Inject(method = "removeAll", at = @At("HEAD"))
private void removeAll(CallbackInfo ci) {
for (var player : getPlayers()) {
for (var player : ((PlayerList) (Object) this).getPlayers()) {
SkinRestorer.Events.onPlayerDisconnect(player);
}
}
@Inject(method = "placeNewPlayer", at = @At("HEAD"))
private void placeNewPlayer(Connection connection, ServerPlayer player, CallbackInfo ci) {
var server = ((PlayerList) (Object) this).getServer();
var delay = SkinRestorer.getConfig().skinApplyDelayOnJoin();
if (delay <= 0) {

View File

@@ -0,0 +1,17 @@
package net.lionarius.skinrestorer.mixin;
import com.mojang.authlib.GameProfile;
import net.minecraft.server.network.ServerLoginPacketListenerImpl;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.gen.Invoker;
@Mixin(ServerLoginPacketListenerImpl.class)
public interface ServerLoginPacketListenerImplAccessorInvoker {
@Accessor
GameProfile getGameProfile();
@Invoker
GameProfile invokeCreateFakeProfile(GameProfile original);
}

View File

@@ -20,24 +20,18 @@ import java.util.concurrent.CompletableFuture;
@Mixin(ServerLoginPacketListenerImpl.class)
public abstract class ServerLoginPacketListenerImplMixin {
@Shadow @Nullable
private GameProfile gameProfile;
@Unique
private CompletableFuture<Void> skinrestorer$pendingSkin;
@Shadow
protected abstract GameProfile createFakeProfile(GameProfile original);
@Inject(method = "handleAcceptedLogin", at = @At(value = "HEAD"), cancellable = true)
public void waitForSkin(CallbackInfo ci) {
if (skinrestorer$pendingSkin == null) {
skinrestorer$pendingSkin = CompletableFuture.supplyAsync(() -> {
var profile = gameProfile;
var profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).getGameProfile();
assert profile != null;
if (!profile.isComplete())
profile = createFakeProfile(profile);
profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).invokeCreateFakeProfile(profile);
var originalSkin = PlayerUtils.getPlayerSkin(profile);

View File

@@ -8,6 +8,7 @@
"mixins": [
"ChunkMapAccessor",
"PlayerListMixin",
"ServerLoginPacketListenerImplAccessorInvoker",
"ServerLoginPacketListenerImplMixin",
"TrackedEntityAccessorInvoker"
],

View File

@@ -8,7 +8,7 @@ minecraft_version_list=1.19.3
minecraft_version_range=[1.19.3,1.19.4)
mod_id=skinrestorer
mod_name=SkinRestorer
mod_version=2.3.2
mod_version=2.3.3
mod_author=Lionarius
mod_homepage=https://modrinth.com/mod/skinrestorer
mod_sources=https://github.com/Suiranoil/SkinRestorer