Skip to content

Commit 4df9bbb

Browse files
committed
Fix accidentally undid head fix, add null check
Signed-off-by: roadhog360 <[email protected]>
1 parent c47b262 commit 4df9bbb

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/main/java/roadhog360/simpleskinbackport/core/Utils.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public static boolean isDefaultSkinSlim(UUID uuid) {
5757

5858
public static boolean getSlimFromBase64Data(String base64) {
5959
JsonObject props = new Gson().fromJson(new String(Base64.getDecoder().decode(base64), StandardCharsets.UTF_8), JsonObject.class);
60-
return props.getAsJsonObject("textures").getAsJsonObject("SKIN").getAsJsonObject("metadata").get("model").getAsString().equals("slim");
60+
JsonObject medatata = props.getAsJsonObject("textures").getAsJsonObject("SKIN").getAsJsonObject("metadata");
61+
return medatata != null && medatata.get("model").getAsString().equals("slim");
6162
}
6263

6364
/**

src/main/java/roadhog360/simpleskinbackport/mixins/early/MixinSkinManager.java

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import com.mojang.authlib.minecraft.MinecraftProfileTexture;
77
import net.minecraft.client.renderer.ImageBufferDownload;
88
import net.minecraft.client.resources.SkinManager;
9+
import net.minecraft.entity.player.EntityPlayer;
910
import net.minecraft.util.ResourceLocation;
1011
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.Unique;
1113
import org.spongepowered.asm.mixin.injection.At;
1214
import org.spongepowered.asm.mixin.injection.Inject;
1315
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@@ -24,7 +26,7 @@ private ResourceLocation changeDownloadLocation(String p_i1293_1_, Operation<Res
2426
@Local(argsOnly = true) final MinecraftProfileTexture.Type p_152789_2_,
2527
@Local(argsOnly = true) final SkinManager.SkinAvailableCallback p_152789_3_
2628
) {
27-
if(p_152789_2_ == MinecraftProfileTexture.Type.SKIN) {
29+
if(simpleSkinBackport$isNewPlayerWithPlayerData(p_152789_2_, p_152789_3_)) {
2830
return new ResourceLocation(SimpleSkinBackport.MODID, p_i1293_1_);
2931
}
3032
return original.call(p_i1293_1_);
@@ -34,7 +36,7 @@ private ResourceLocation changeDownloadLocation(String p_i1293_1_, Operation<Res
3436
private ImageBufferDownload changeDownloadBufferManager(Operation<ImageBufferDownload> original,
3537
@Local(argsOnly = true) final MinecraftProfileTexture.Type p_152789_2_,
3638
@Local(argsOnly = true) SkinManager.SkinAvailableCallback p_152789_3_) {
37-
if(p_152789_2_ == MinecraftProfileTexture.Type.SKIN) {
39+
if(simpleSkinBackport$isNewPlayerWithPlayerData(p_152789_2_, p_152789_3_)) {
3840
return new ImageBufferDownloadPlayerSkin();
3941
}
4042
return original.call();
@@ -44,10 +46,15 @@ private ImageBufferDownload changeDownloadBufferManager(Operation<ImageBufferDow
4446
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/SkinManager$SkinAvailableCallback;func_152121_a(Lcom/mojang/authlib/minecraft/MinecraftProfileTexture$Type;Lnet/minecraft/util/ResourceLocation;)V",
4547
shift = At.Shift.AFTER))
4648
private void injectCallbackSkinCheck(MinecraftProfileTexture p_152789_1_, MinecraftProfileTexture.Type p_152789_2_, SkinManager.SkinAvailableCallback p_152789_3_, CallbackInfoReturnable<ResourceLocation> cir) {
47-
if(p_152789_2_ == MinecraftProfileTexture.Type.SKIN && p_152789_3_ instanceof INewModelData playerData) {
49+
if(simpleSkinBackport$isNewPlayerWithPlayerData(p_152789_2_, p_152789_3_) && p_152789_3_ instanceof INewModelData playerData) {
4850
if(Objects.equals(p_152789_1_.getMetadata("model"), "slim")) {
4951
playerData.simpleSkinBackport$setSlim(true);
5052
}
5153
}
5254
}
55+
56+
@Unique
57+
private boolean simpleSkinBackport$isNewPlayerWithPlayerData(final MinecraftProfileTexture.Type type, SkinManager.SkinAvailableCallback callback) {
58+
return type == MinecraftProfileTexture.Type.SKIN && callback instanceof EntityPlayer;
59+
}
5360
}

0 commit comments

Comments
 (0)