mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2025-02-23 12:44:32 +01:00
78 lines
2.8 KiB
Java
78 lines
2.8 KiB
Java
package com.minelittlepony.client.hdskins;
|
|
|
|
import com.minelittlepony.client.MineLittlePony;
|
|
import com.minelittlepony.client.SkinsProxy;
|
|
import com.minelittlepony.client.model.ClientPonyModel;
|
|
import com.minelittlepony.common.event.ClientReadyCallback;
|
|
import com.minelittlepony.hdskins.client.SkinCacheClearCallback;
|
|
import com.minelittlepony.hdskins.client.ducks.ClientPlayerInfo;
|
|
import com.minelittlepony.hdskins.client.dummy.DummyPlayer;
|
|
import com.minelittlepony.hdskins.client.gui.GuiSkins;
|
|
import com.minelittlepony.hdskins.client.resources.LocalTexture;
|
|
import com.minelittlepony.hdskins.mixin.client.MixinClientPlayer;
|
|
import com.minelittlepony.hdskins.profile.SkinType;
|
|
|
|
import com.mojang.authlib.GameProfile;
|
|
|
|
import net.fabricmc.api.ClientModInitializer;
|
|
import net.minecraft.client.network.AbstractClientPlayerEntity;
|
|
import net.minecraft.item.Items;
|
|
import net.minecraft.util.Identifier;
|
|
|
|
import com.minelittlepony.client.pony.PonyManager;
|
|
import com.minelittlepony.client.render.EquineRenderManager;
|
|
import com.minelittlepony.hdskins.client.HDSkins;
|
|
|
|
/**
|
|
* All the interactions with HD Skins.
|
|
*/
|
|
public class MineLPHDSkins extends SkinsProxy implements ClientModInitializer {
|
|
|
|
static SkinType seaponySkinType;
|
|
|
|
|
|
@Override
|
|
public void onInitializeClient() {
|
|
SkinsProxy.instance = this;
|
|
|
|
seaponySkinType = SkinType.register(new Identifier("minelp", "seapony"), Items.COD_BUCKET.getDefaultStack());
|
|
|
|
ClientReadyCallback.EVENT.register(client -> {
|
|
// Clear ponies when skins are cleared
|
|
PonyManager ponyManager = (PonyManager) MineLittlePony.getInstance().getManager();
|
|
SkinCacheClearCallback.EVENT.register(ponyManager::clearCache);
|
|
|
|
// Ponify the skins GUI.
|
|
GuiSkins.setSkinsGui(GuiSkinsMineLP::new);
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public Identifier getSeaponySkin(EquineRenderManager<AbstractClientPlayerEntity, ClientPonyModel<AbstractClientPlayerEntity>> manager, AbstractClientPlayerEntity player) {
|
|
if (player instanceof DummyPlayer) {
|
|
LocalTexture tex = ((DummyPlayer)player).getTextures().get(seaponySkinType);
|
|
Identifier id = tex.getId();
|
|
return id == null ? tex.getDefault() : id;
|
|
} else {
|
|
ClientPlayerInfo info = (ClientPlayerInfo)((MixinClientPlayer)player).getBackingClientData();
|
|
Identifier tex = info.getSkins().getSkin(seaponySkinType);
|
|
if (tex != null) {
|
|
return tex;
|
|
}
|
|
}
|
|
|
|
return super.getSeaponySkin(manager, player);
|
|
}
|
|
|
|
@Override
|
|
public Identifier getSkinTexture(GameProfile profile) {
|
|
|
|
Identifier skin = HDSkins.getInstance().getProfileRepository().getTextures(profile).get(SkinType.SKIN);
|
|
|
|
if (skin != null) {
|
|
return skin;
|
|
}
|
|
|
|
return super.getSkinTexture(profile);
|
|
}
|
|
}
|