(Neo)forge impl, fabric cleanup
This commit is contained in:
parent
b1efc154be
commit
c6f805cfe2
|
|
@ -1,7 +1,6 @@
|
||||||
package org.embeddedt.modernfix.fabric.mixin.perf.cache_profile_texture_url;
|
package org.embeddedt.modernfix.fabric.mixin.perf.cache_profile_texture_url;
|
||||||
|
|
||||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
||||||
|
|
||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||||
import org.embeddedt.modernfix.duck.ICachedProfileTexture;
|
import org.embeddedt.modernfix.duck.ICachedProfileTexture;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package org.embeddedt.modernfix.fabric.mixin.perf.cache_profile_texture_url;
|
||||||
|
|
||||||
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
||||||
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
|
import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService;
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||||
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||||
|
|
@ -25,7 +24,7 @@ public abstract class YggdrasilGsonDeserializerMixin {
|
||||||
target = "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;getUrl()Ljava/lang/String;"
|
target = "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;getUrl()Ljava/lang/String;"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
private String setCachedURL(MinecraftProfileTexture texture, Operation<String> original) {
|
private String setCachedHash(MinecraftProfileTexture texture, Operation<String> original) {
|
||||||
// Because we don't have it set from deserialization
|
// Because we don't have it set from deserialization
|
||||||
String url = original.call(texture);
|
String url = original.call(texture);
|
||||||
((ICachedProfileTexture)texture).setCachedHash(url);
|
((ICachedProfileTexture)texture).setCachedHash(url);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
package org.embeddedt.modernfix.forge.mixin.perf.cache_profile_texture_url;
|
||||||
|
|
||||||
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||||
|
import net.minecraft.client.resources.SkinManager;
|
||||||
|
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Mixin(value=SkinManager.class)
|
||||||
|
@ClientOnlyMixin
|
||||||
|
public abstract class SkinManagerMixin {
|
||||||
|
/**
|
||||||
|
* @author Fury_Phoenix
|
||||||
|
* @reason No lib mixins on (neo)forge, yet
|
||||||
|
* **/
|
||||||
|
@Unique
|
||||||
|
private final Map<MinecraftProfileTexture, String> hashCache = CacheBuilder.newBuilder()
|
||||||
|
.expireAfterAccess(60, TimeUnit.SECONDS)
|
||||||
|
.concurrencyLevel(1)
|
||||||
|
// Excessive use of type hinting due to it assuming Object as the broadest correct type
|
||||||
|
.<MinecraftProfileTexture, String>build()
|
||||||
|
.asMap();
|
||||||
|
|
||||||
|
@WrapOperation
|
||||||
|
(
|
||||||
|
method = "registerTexture",
|
||||||
|
at = @At(
|
||||||
|
value = "INVOKE",
|
||||||
|
target = "Lcom/mojang/authlib/minecraft/MinecraftProfileTexture;getHash()Ljava/lang/String;",
|
||||||
|
remap = false
|
||||||
|
)
|
||||||
|
|
||||||
|
)
|
||||||
|
private String stashCachedHash(SkinManager manager, Operation<String> original, MinecraftProfileTexture texture) {
|
||||||
|
return hashCache.computeIfAbsent(texture, k -> original.call());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user