Установить скин нпс из citizens

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Код:
  public static void npcSetSkin(NPC npc, String skin) {
        npc.despawn();
        SkinTrait skinTrait = npc.getOrAddTrait(SkinTrait.class);
        skinTrait.setSkinName(skin);
        npc.spawn(npc.getStoredLocation());
    }

Юзаю такой код. Когда вызываю метод, нпс "респавнится" с обычным скином жителя.
Как заставить его "переодеться" ?
p.s. устанавливаю по никнейму
 
Для Citizens не подскажу, но для LibsDisguises примерно так:
PHP:
Entity entity = ...;
String value = ...;
String signature = ...;
PlayerDisguise playerDisguise = new PlayerDisguise(ChatColor.RESET.toString());
WrappedGameProfile profile = new WrappedGameProfile(UUID.randomUUID(), ChatColor.RESET.toString());
profile.getProperties().put("textures", new WrappedSignedProperty("textures", value, signature));
playerDisguise.setSkin(profile);
Disguise disguise = new DisguiseSkin(playerDisguise);
disguise.setEntity(entity);
disguise.startDisguise();
 
Последнее редактирование:
Для Citizens не подскажу, но для LibsDisguises примерно так:
PHP:
Entity entity = ...;
String value = ...;
String signature = ...;
PlayerDisguise playerDisguise = new PlayerDisguise(ChatColor.RESET.toString());
WrappedGameProfile profile = new WrappedGameProfile(UUID.randomUUID(), ChatColor.RESET.toString());
profile.getProperties().put("textures", new WrappedSignedProperty("textures", value, signature));
playerDisguise.setSkin(profile);
Disguise disguise = new DisguiseSkin(playerDisguise);
disguise.setEntity(entity);
disguise.startDisguise();
нужен онли citizens
Тем более, судя по твоему коду, ты устанавливаешь скин не по нику. Это мне так же не подходит
 
NPC npc = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, getConfig().getString("npcname"));
SkinTrait skinTrait = npc.getTrait(SkinTrait.class);
skinTrait.setSkinName(getConfig().getString("npcskin"));
npc.spawn(((Player) sender).getLocation());
 
Помогли коллеги со спигота.
Суть в том, что на энтити villager нельзя натягивать геймпрофайловские штуки, поэтому для таких вещей следует использовать энтити Player, как было показано этим кодом
NPC npc = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, getConfig().getString("npcname"));
SkinTrait skinTrait = npc.getTrait(SkinTrait.class);
skinTrait.setSkinName(getConfig().getString("npcskin"));
npc.spawn(((Player) sender).getLocation());
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх