Изменять скин игроков во время игры

Версия Minecraft
1.12.2
Всем привет. Перечитал все темы на форуме касающиеся моего вопроса, пробовал некоторые варианты, но так и не нашел решения.
Нужно менять скин игрока через GUI, но начать хочу с простого изменения скина игрока, при клике правой кнопкой мыши на предмете.
Не знаю как изменить скин, в классе AbstractClientPlayer так и не нашел решения, смотрел классы которые взаимодействуют с ним, но тоже нет никаких идей.
Прошу помощи.
 
7,099
324
1,509
AbstractClientPlayer#getPlayerInfo.playerTextures.put(Type.SKIN, resourceLocation)

Да, я пробовал этот способ:
Java:
public class BasicItem extends Item {



    public BasicItem(String name, int maxStackSize){

        this.setRegistryName(name);

        this.setUnlocalizedName(name);

        this.setMaxStackSize(maxStackSize);

    }



    @Override

    public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer entityPlayer, EnumHand hand){

        if(entityPlayer instanceof AbstractClientPlayer){

            AbstractClientPlayer abstractClientPlayer = (AbstractClientPlayer) entityPlayer;

            ResourceLocation resourceLocation = new ResourceLocation(MODID, "textures/skin/my_skin.png");

            abstractClientPlayer.getPlayerInfo().playerTextures.put(MinecraftProfileTexture.Type.SKIN, resourceLocation);

        }

        return super.onItemRightClick(world, entityPlayer, hand);

    }

}
Первая проблема это getPlayerInfo(), он protected. Даже если переопределить его как public, то playerTextures это private переменная, к которой обычным способом не подобраться. Так что вот, я не знаю, может я что то делаю не так?
 
Сверху