use of net.citizensnpcs.api.trait.trait.Equipment in project Denizen-For-Bukkit by DenizenScript.
the class EquipCommand method execute.
@Override
public void execute(ScriptEntry scriptEntry) {
Map<String, ItemTag> equipment = (Map<String, ItemTag>) scriptEntry.getObject("equipment");
List<EntityTag> entities = (List<EntityTag>) scriptEntry.getObject("entities");
if (scriptEntry.dbCallShouldDebug()) {
Debug.report(scriptEntry, getName(), db("entities", entities), db("equipment", equipment));
}
for (EntityTag entity : entities) {
if (entity.isGeneric()) {
Debug.echoError(scriptEntry, "Cannot equip generic entity " + entity.identify() + "!");
} else if (entity.isCitizensNPC()) {
NPCTag npc = entity.getDenizenNPC();
if (npc != null) {
Equipment trait = npc.getEquipmentTrait();
if (equipment.get("hand") != null) {
trait.set(0, equipment.get("hand").getItemStack());
}
if (equipment.get("head") != null) {
trait.set(1, equipment.get("head").getItemStack());
}
if (equipment.get("chest") != null) {
trait.set(2, equipment.get("chest").getItemStack());
}
if (equipment.get("legs") != null) {
trait.set(3, equipment.get("legs").getItemStack());
}
if (equipment.get("boots") != null) {
trait.set(4, equipment.get("boots").getItemStack());
}
if (equipment.get("offhand") != null) {
trait.set(5, equipment.get("offhand").getItemStack());
}
if (npc.isSpawned()) {
LivingEntity livingEntity = npc.getLivingEntity();
// TODO: Citizens API for this blob?
if (livingEntity instanceof AbstractHorse) {
if (equipment.get("saddle") != null) {
((AbstractHorse) livingEntity).getInventory().setSaddle(equipment.get("saddle").getItemStack());
}
if (equipment.get("horse_armor") != null) {
if (((AbstractHorse) livingEntity).getInventory() instanceof HorseInventory) {
((HorseInventory) ((AbstractHorse) livingEntity).getInventory()).setArmor(equipment.get("horse_armor").getItemStack());
}
}
} else if (livingEntity instanceof Steerable) {
if (equipment.get("saddle") != null) {
ItemTag saddle = equipment.get("saddle");
if (saddle.getBukkitMaterial() == Material.SADDLE) {
((Steerable) livingEntity).setSaddle(true);
} else {
((Steerable) livingEntity).setSaddle(false);
}
}
}
}
}
} else {
LivingEntity livingEntity = entity.getLivingEntity();
if (livingEntity != null) {
if (livingEntity instanceof AbstractHorse) {
if (equipment.get("saddle") != null) {
((AbstractHorse) livingEntity).getInventory().setSaddle(equipment.get("saddle").getItemStack());
}
if (equipment.get("horse_armor") != null) {
if (((AbstractHorse) livingEntity).getInventory() instanceof HorseInventory) {
((HorseInventory) ((AbstractHorse) livingEntity).getInventory()).setArmor(equipment.get("horse_armor").getItemStack());
}
}
} else if (livingEntity instanceof Steerable) {
if (equipment.get("saddle") != null) {
ItemTag saddle = equipment.get("saddle");
if (saddle.getBukkitMaterial() == Material.SADDLE) {
((Steerable) livingEntity).setSaddle(true);
} else {
((Steerable) livingEntity).setSaddle(false);
}
}
} else {
if (equipment.get("hand") != null) {
livingEntity.getEquipment().setItemInMainHand(equipment.get("hand").getItemStack());
}
if (equipment.get("head") != null) {
livingEntity.getEquipment().setHelmet(equipment.get("head").getItemStack());
}
if (equipment.get("chest") != null) {
livingEntity.getEquipment().setChestplate(equipment.get("chest").getItemStack());
}
if (equipment.get("legs") != null) {
livingEntity.getEquipment().setLeggings(equipment.get("legs").getItemStack());
}
if (equipment.get("boots") != null) {
livingEntity.getEquipment().setBoots(equipment.get("boots").getItemStack());
}
if (equipment.get("offhand") != null) {
livingEntity.getEquipment().setItemInOffHand(equipment.get("offhand").getItemStack());
}
}
}
}
}
}
use of net.citizensnpcs.api.trait.trait.Equipment in project Denizen-For-Bukkit by DenizenScript.
the class HeadCommand method execute.
@Override
public void execute(ScriptEntry scriptEntry) {
Deprecations.headCommand.warn(scriptEntry);
List<EntityTag> entities = (List<EntityTag>) scriptEntry.getObject("entities");
ElementTag skin = scriptEntry.getElement("skin");
MaterialTag material = scriptEntry.getObjectTag("material");
if (scriptEntry.dbCallShouldDebug()) {
Debug.report(scriptEntry, getName(), db("entities", entities), skin, material);
}
ItemStack item = null;
if (skin != null) {
item = new ItemStack(Material.PLAYER_HEAD);
ItemMeta itemMeta = item.getItemMeta();
((SkullMeta) itemMeta).setOwner(skin.asString());
item.setItemMeta(itemMeta);
} else if (material != null) {
item = new ItemStack(material.getMaterial());
}
for (EntityTag entity : entities) {
if (entity.isCitizensNPC()) {
if (!entity.getDenizenNPC().getCitizen().hasTrait(Equipment.class)) {
entity.getDenizenNPC().getCitizen().addTrait(Equipment.class);
}
Equipment trait = entity.getDenizenNPC().getCitizen().getOrAddTrait(Equipment.class);
trait.set(1, item);
} else if (entity.isPlayer()) {
entity.getPlayer().getInventory().setHelmet(item);
} else {
if (entity.isLivingEntity() && entity.getLivingEntity().getEquipment() != null) {
entity.getLivingEntity().getEquipment().setHelmet(item);
} else {
Debug.echoError(scriptEntry, entity.identify() + " is not a living entity!");
}
}
}
}
Aggregations