mirror of
https://github.com/Suiranoil/SkinRestorer.git
synced 2026-01-16 04:42:12 +00:00
Compare commits
7 Commits
3d92617e47
...
ef247f1ad3
| Author | SHA1 | Date | |
|---|---|---|---|
|
ef247f1ad3
|
|||
|
1eff73e9b3
|
|||
|
7e05f1eec9
|
|||
|
81d05fe991
|
|||
|
757d46b231
|
|||
|
3b15f7b341
|
|||
|
38a2fd7214
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -30,3 +30,4 @@ bin/
|
|||||||
|
|
||||||
.architectury-transformer/
|
.architectury-transformer/
|
||||||
run/
|
run/
|
||||||
|
scripts/
|
||||||
|
|||||||
@@ -3,12 +3,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
publishMods {
|
publishMods {
|
||||||
if (project.name == 'fabric')
|
file = project.layout.buildDirectory.file("libs/${project.archivesBaseName}-${project.version}.jar").map { it.asFile }.getOrNull()
|
||||||
file = remapJar.archiveFile
|
|
||||||
else if (project.name == 'neoforge')
|
|
||||||
file = jar.archiveFile
|
|
||||||
else
|
|
||||||
file = tasks.named('jarJar').get().archiveFile
|
|
||||||
|
|
||||||
modLoaders.add(project.name)
|
modLoaders.add(project.name)
|
||||||
type = STABLE
|
type = STABLE
|
||||||
|
|||||||
@@ -6,17 +6,26 @@ import net.minecraft.server.MinecraftServer;
|
|||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.server.network.CommonListenerCookie;
|
import net.minecraft.server.network.CommonListenerCookie;
|
||||||
import net.minecraft.server.players.PlayerList;
|
import net.minecraft.server.players.PlayerList;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
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.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mixin(PlayerList.class)
|
@Mixin(PlayerList.class)
|
||||||
public abstract class PlayerListMixin {
|
public abstract class PlayerListMixin {
|
||||||
|
|
||||||
|
@Shadow
|
||||||
|
public abstract List<ServerPlayer> getPlayers();
|
||||||
|
|
||||||
|
@Shadow @Final
|
||||||
|
private MinecraftServer server;
|
||||||
|
|
||||||
@Inject(method = "remove", at = @At("TAIL"))
|
@Inject(method = "remove", at = @At("TAIL"))
|
||||||
private void remove(ServerPlayer player, CallbackInfo ci) {
|
private void remove(ServerPlayer player, CallbackInfo ci) {
|
||||||
SkinRestorer.Events.onPlayerDisconnect(player);
|
SkinRestorer.Events.onPlayerDisconnect(player);
|
||||||
@@ -24,14 +33,13 @@ public abstract class PlayerListMixin {
|
|||||||
|
|
||||||
@Inject(method = "removeAll", at = @At("HEAD"))
|
@Inject(method = "removeAll", at = @At("HEAD"))
|
||||||
private void removeAll(CallbackInfo ci) {
|
private void removeAll(CallbackInfo ci) {
|
||||||
for (var player : ((PlayerList) (Object) this).getPlayers()) {
|
for (var player : getPlayers()) {
|
||||||
SkinRestorer.Events.onPlayerDisconnect(player);
|
SkinRestorer.Events.onPlayerDisconnect(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(method = "placeNewPlayer", at = @At("HEAD"))
|
@Inject(method = "placeNewPlayer", at = @At("HEAD"))
|
||||||
private void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) {
|
private void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) {
|
||||||
var server = ((PlayerList) (Object) this).getServer();
|
|
||||||
var delay = SkinRestorer.getConfig().skinApplyDelayOnJoin();
|
var delay = SkinRestorer.getConfig().skinApplyDelayOnJoin();
|
||||||
|
|
||||||
if (delay <= 0) {
|
if (delay <= 0) {
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
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;
|
|
||||||
|
|
||||||
@Mixin(ServerLoginPacketListenerImpl.class)
|
|
||||||
public interface ServerLoginPacketListenerImplAccessorInvoker {
|
|
||||||
|
|
||||||
@Accessor
|
|
||||||
GameProfile getAuthenticatedProfile();
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,9 @@ import net.lionarius.skinrestorer.skin.provider.SkinProviderContext;
|
|||||||
import net.lionarius.skinrestorer.util.PlayerUtils;
|
import net.lionarius.skinrestorer.util.PlayerUtils;
|
||||||
import net.lionarius.skinrestorer.util.Result;
|
import net.lionarius.skinrestorer.util.Result;
|
||||||
import net.minecraft.server.network.ServerLoginPacketListenerImpl;
|
import net.minecraft.server.network.ServerLoginPacketListenerImpl;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
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;
|
||||||
@@ -18,6 +20,9 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
@Mixin(ServerLoginPacketListenerImpl.class)
|
@Mixin(ServerLoginPacketListenerImpl.class)
|
||||||
public abstract class ServerLoginPacketListenerImplMixin {
|
public abstract class ServerLoginPacketListenerImplMixin {
|
||||||
|
|
||||||
|
@Shadow @Nullable
|
||||||
|
private GameProfile authenticatedProfile;
|
||||||
|
|
||||||
@Unique
|
@Unique
|
||||||
private CompletableFuture<Void> skinrestorer$pendingSkin;
|
private CompletableFuture<Void> skinrestorer$pendingSkin;
|
||||||
|
|
||||||
@@ -27,7 +32,7 @@ public abstract class ServerLoginPacketListenerImplMixin {
|
|||||||
public void waitForSkin(CallbackInfo ci) {
|
public void waitForSkin(CallbackInfo ci) {
|
||||||
if (skinrestorer$pendingSkin == null) {
|
if (skinrestorer$pendingSkin == null) {
|
||||||
skinrestorer$pendingSkin = CompletableFuture.supplyAsync(() -> {
|
skinrestorer$pendingSkin = CompletableFuture.supplyAsync(() -> {
|
||||||
final var profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).getAuthenticatedProfile();
|
final var profile = authenticatedProfile;
|
||||||
|
|
||||||
assert profile != null;
|
assert profile != null;
|
||||||
var originalSkin = PlayerUtils.getPlayerSkin(profile);
|
var originalSkin = PlayerUtils.getPlayerSkin(profile);
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
"ChunkMapAccessor",
|
"ChunkMapAccessor",
|
||||||
"PlayerListMixin",
|
"PlayerListMixin",
|
||||||
"ServerLoginPacketListenerImplAccessorInvoker",
|
|
||||||
"ServerLoginPacketListenerImplMixin",
|
"ServerLoginPacketListenerImplMixin",
|
||||||
"TrackedEntityAccessorInvoker"
|
"TrackedEntityAccessorInvoker"
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user