Skip to content

Commit

Permalink
Add horses and pigs to equip command.
Browse files Browse the repository at this point in the history
  • Loading branch information
Fortifier42 committed Oct 27, 2015
1 parent b56d77f commit 3da8e4a
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 14 deletions.
53 changes: 51 additions & 2 deletions src/main/java/net/aufdemrand/denizen/objects/dEntity.java
Expand Up @@ -1560,13 +1560,62 @@ public String getAttribute(Attribute attribute) {
// INVENTORY ATTRIBUTES
/////////////////


// <--[tag]
// @attribute <e@entity.saddle>
// @returns dItem
// @group inventory
// @description
// If the entity is a horse or pig, returns the saddle as a dItem, or i@air if none.
// -->
if (attribute.startsWith("saddle")) {
if (getLivingEntity().getType() == EntityType.HORSE)
return new dItem(((Horse) getLivingEntity()).getInventory().getSaddle())
.getAttribute(attribute.fulfill(1));
else if (getLivingEntity().getType() == EntityType.PIG) {
if (((Pig) getLivingEntity()).hasSaddle())
return new dItem(Material.SADDLE).getAttribute(attribute.fulfill(1));
else
return new dItem(Material.AIR).getAttribute(attribute.fulfill(1));
}
}

// <--[tag]
// @attribute <e@entity.horse_armor>
// @returns dItem
// @group inventory
// @description
// If the entity is a horse, returns the item equipped as the horses armor, or i@air if none.
// -->
if (attribute.startsWith("horse_armor") || attribute.startsWith("horse_armour")) {
if (getLivingEntity().getType() == EntityType.HORSE)
return new dItem(((Horse) getLivingEntity()).getInventory().getArmor())
.getAttribute(attribute.fulfill(1));
}

// <--[tag]
// @attribute <e@entity.has_saddle>
// @returns Element(Boolean)
// @group inventory
// @description
// If the entity s a pig or horse, returns whether it has a saddle equipped.
// -->
if (attribute.startsWith("has_saddle")) {
if (getLivingEntity().getType() == EntityType.HORSE)
return new Element(((Horse) getLivingEntity()).getInventory().getSaddle().getType() == Material.SADDLE)
.getAttribute(attribute.fulfill(1));
else if (getLivingEntity().getType() == EntityType.PIG) {
return new Element(((Pig) getLivingEntity()).hasSaddle())
.getAttribute(attribute.fulfill(1));
}
}

// <--[tag]
// @attribute <e@entity.item_in_hand>
// @returns dItem
// @group inventory
// @description
// returns the item the entity is holding, or i@air
// if none.
// Returns the item the entity is holding, or i@air if none.
// -->
if (attribute.startsWith("item_in_hand") ||
attribute.startsWith("iteminhand"))
Expand Down
Expand Up @@ -877,7 +877,7 @@ public void registerCoreMembers() {

// <--[command]
// @Name Equip
// @Syntax equip (<entity>|...) (hand:<item>) (head:<item>) (chest:<item>) (legs:<item>) (boots:<item>)
// @Syntax equip (<entity>|...) (hand:<item>) (head:<item>) (chest:<item>) (legs:<item>) (boots:<item>) (saddle:<item>) (horse_armor:<item>)
// @Required 1
// @Stable stable
// @Short Equips items and armor on a list of entities.
Expand All @@ -897,9 +897,15 @@ public void registerCoreMembers() {
// @Usage
// Use to unequip all armor off the player.
// - equip <player> head:i@air chest:i@air legs:i@air boots:i@air
// @Usage
// Use to equip a saddle on a horse.
// - equip e@horse saddle:i@saddle
// @Usage
// Use to equip a saddle on a pig.
// - equip e@pig saddle:i@saddle
// -->
registerCoreMember(EquipCommand.class,
"EQUIP", "equip (<entity>|...) (hand:<item>) (head:<item>) (chest:<item>) (legs:<item>) (boots:<item>)", 1);
"EQUIP", "equip (<entity>|...) (hand:<item>) (head:<item>) (chest:<item>) (legs:<item>) (boots:<item>) (saddle:<item>) (horse_armor:<item>)", 1);


// <--[command]
Expand Down
Expand Up @@ -12,7 +12,11 @@
import net.aufdemrand.denizencore.scripts.ScriptEntry;
import net.aufdemrand.denizencore.scripts.commands.AbstractCommand;
import net.citizensnpcs.api.trait.trait.Equipment;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Horse;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Pig;

import java.util.Arrays;
import java.util.HashMap;
Expand Down Expand Up @@ -55,6 +59,16 @@ else if (arg.matchesArgumentType(dItem.class)
equipment.put("boots", dItem.valueOf(arg.getValue()));
}

else if (arg.matchesArgumentType(dItem.class)
&& arg.matchesPrefix("saddle")) {
equipment.put("saddle", dItem.valueOf(arg.getValue()));
}

else if (arg.matchesArgumentType(dItem.class)
&& arg.matchesPrefix("horse_armor", "horse_armour")) {
equipment.put("horse_armor", dItem.valueOf(arg.getValue()));
}

// Default to item in hand if no prefix is used
else if (arg.matchesArgumentType(dItem.class)) {
equipment.put("hand", dItem.valueOf(arg.getValue()));
Expand Down Expand Up @@ -119,16 +133,34 @@ else if (entity.isCitizensNPC()) {

if (livingEntity != null) {

if (equipment.get("hand") != null)
livingEntity.getEquipment().setItemInHand(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 (livingEntity.getType() == EntityType.HORSE) {
if (equipment.get("saddle") != null)
((Horse) livingEntity).getInventory().setSaddle(equipment.get("saddle").getItemStack());
if (equipment.get("horse_armor") != null)
((Horse) livingEntity).getInventory().setArmor(equipment.get("horse_armor").getItemStack());
}
else if (livingEntity.getType() == EntityType.PIG) {
if (equipment.get("saddle") != null) {
dItem saddle = equipment.get("saddle");
if (saddle.getItemStack().getType() == Material.SADDLE)
((Pig) livingEntity).setSaddle(true);
else
((Pig) livingEntity).setSaddle(false);
}
}
else {

if (equipment.get("hand") != null)
livingEntity.getEquipment().setItemInHand(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());
}
}
}
}
Expand Down

0 comments on commit 3da8e4a

Please sign in to comment.