下面列出了怎么用org.bukkit.inventory.EntityEquipment的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public boolean check(final Event e) {
return entities.check(e,
en -> types.check(e,
type -> {
EntityEquipment equipment = en.getEquipment();
if (equipment == null)
return false; // No equipment -> no item in hand
if (Skript.isRunningMinecraft(1, 9)) {
return (offTool ? type.isOfType(equipment.getItemInOffHand()) : type.isOfType(equipment.getItemInMainHand()));
} else {
@SuppressWarnings("deprecation")
ItemStack itemInHand = equipment.getItemInHand();
return type.isOfType(itemInHand);
}
}), isNegated());
}
@Override
public boolean check(final Event e) {
return entities.check(e,
en -> types.check(e,
t -> {
EntityEquipment equip = en.getEquipment();
if (equip == null)
return false; // No equipment -> not wearing anything
for (final ItemStack is : equip.getArmorContents()) {
if (t.isOfType(is) ^ t.isAll())
return !t.isAll();
}
return t.isAll();
}),
isNegated());
}
/**
* Returns whether an entity is invisible (when invisible targets are ignorable).
*/
public static boolean isInvisible(LivingEntity entity) {
if (!SentinelPlugin.instance.ignoreInvisible
|| !entity.hasPotionEffect(PotionEffectType.INVISIBILITY)) {
return false;
}
EntityEquipment eq = entity.getEquipment();
if (eq == null) {
return true;
}
if (SentinelVersionCompat.v1_9) {
if (!isAir(eq.getItemInMainHand()) || !isAir(eq.getItemInOffHand())) {
return false;
}
}
else {
if (!isAir(eq.getItemInHand())) {
return false;
}
}
return isAir(eq.getBoots()) && isAir(eq.getLeggings()) && isAir(eq.getChestplate()) && isAir(eq.getHelmet());
}
public void spawnOfflineZombieFor(Player player){
UhcPlayer uhcPlayer = getUhcPlayer(player);
Zombie zombie = (Zombie) player.getWorld().spawnEntity(player.getLocation(), EntityType.ZOMBIE);
zombie.setCustomName(uhcPlayer.getDisplayName());
zombie.setCustomNameVisible(true);
// 1.8 doesn't have setAI method so use VersionUtils.
VersionUtils.getVersionUtils().setEntityAI(zombie, false);
zombie.setBaby(false);
zombie.addPotionEffect(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 999999, 1, true, true));
EntityEquipment equipment = zombie.getEquipment();
equipment.setHelmet(VersionUtils.getVersionUtils().createPlayerSkull(player.getName(), player.getUniqueId()));
equipment.setChestplate(player.getInventory().getChestplate());
equipment.setLeggings(player.getInventory().getLeggings());
equipment.setBoots(player.getInventory().getBoots());
equipment.setItemInHand(player.getItemInHand());
uhcPlayer.getStoredItems().clear();
for (ItemStack item : player.getInventory().getContents()){
if (item != null){
uhcPlayer.getStoredItems().add(item);
}
}
uhcPlayer.setOfflineZombie(zombie);
}
@Override
@Nullable
public Slot convert(final LivingEntity e) {
final EntityEquipment eq = e.getEquipment();
if (eq == null)
return null;
return new EquipmentSlot(eq, slot, explicitSlot);
}
@SuppressWarnings("deprecation")
@Override
@Nullable
public ItemStack get(final EntityEquipment e) {
if (Skript.isRunningMinecraft(1, 9)) {
return e.getItemInMainHand();
}
return e.getItemInHand();
}
@SuppressWarnings("deprecation")
@Override
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
if (Skript.isRunningMinecraft(1, 9)) {
e.setItemInMainHand(item);
} else {
e.setItemInHand(item);
}
}
@Override
@Nullable
public ItemStack get(EntityEquipment e) {
if (Skript.isRunningMinecraft(1, 9)) {
return e.getItemInOffHand();
}
Skript.warning("No off hand support, but a skript would need that!");
return new ItemStack(Material.AIR);
}
@Override
public void set(EntityEquipment e, @Nullable ItemStack item) {
if (Skript.isRunningMinecraft(1, 9)) {
e.setItemInOffHand(item);
} else {
Skript.warning("No off hand support, but a skript would need that!");
}
}
@Override
protected Void execute(String playerID) throws QuestRuntimeException {
Location location = loc.getLocation(playerID);
int a = amount.getInt(playerID);
for (int i = 0; i < a; i++) {
Entity entity = location.getWorld().spawnEntity(location, type);
if (entity instanceof LivingEntity) {
LivingEntity living = (LivingEntity) entity;
EntityEquipment eq = living.getEquipment();
eq.setHelmet(helmet == null ? null : helmet.generate(1));
eq.setHelmetDropChance(0);
eq.setChestplate(chestplate == null ? null : chestplate.generate(1));
eq.setChestplateDropChance(0);
eq.setLeggings(leggings == null ? null : leggings.generate(1));
eq.setLeggingsDropChance(0);
eq.setBoots(boots == null ? null : boots.generate(1));
eq.setBootsDropChance(0);
eq.setItemInMainHand(mainHand == null ? null : mainHand.generate(1));
eq.setItemInMainHandDropChance(0);
eq.setItemInOffHand(offHand == null ? null : offHand.generate(1));
eq.setItemInOffHandDropChance(0);
}
int j = 0;
for (Item item : drops) {
entity.setMetadata("betonquest-drops-" + j,
new FixedMetadataValue(BetonQuest.getInstance(), item.getID().getFullID() + ":"
+ item.getAmount().getInt(playerID)));
j++;
}
if (name != null && entity instanceof LivingEntity) {
LivingEntity livingEntity = (LivingEntity) entity;
livingEntity.setCustomName(name);
}
if (marked != null) {
entity.setMetadata("betonquest-marked", new FixedMetadataValue(BetonQuest.getInstance(), marked));
}
}
return null;
}
public EntityEquipment getEquipment() {
return equipment;
}
@Override
@Nullable
public ItemStack get(final EntityEquipment e) {
return e.getHelmet();
}
@Override
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
e.setHelmet(item);
}
@Override
@Nullable
public ItemStack get(final EntityEquipment e) {
return e.getChestplate();
}
@Override
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
e.setChestplate(item);
}
@Override
@Nullable
public ItemStack get(final EntityEquipment e) {
return e.getLeggings();
}
@Override
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
e.setLeggings(item);
}
@Override
@Nullable
public ItemStack get(final EntityEquipment e) {
return e.getBoots();
}
@Override
public void set(final EntityEquipment e, final @Nullable ItemStack item) {
e.setBoots(item);
}
@Nullable
public abstract ItemStack get(EntityEquipment e);
public EquipmentSlot(final EntityEquipment e, final EquipSlot slot, final boolean slotToString) {
this.e = e;
this.slot = slot;
this.slotToString = slotToString;
}
public EquipmentSlot(final EntityEquipment e, final EquipSlot slot) {
this(e, slot, false);
}
private List<ItemStack> inventoryItemsConstructor(LivingEntity entity) {
EntityEquipment equipment = entity.getEquipment();
if (equipment.getItemInMainHand() != null && !equipment.getItemInMainHand().getType().equals(Material.AIR))
wornItems.add(equipment.getItemInMainHand());
if (equipment.getHelmet() != null)
wornItems.add(equipment.getHelmet());
if (equipment.getChestplate() != null)
wornItems.add(equipment.getChestplate());
if (equipment.getLeggings() != null)
wornItems.add(equipment.getLeggings());
if (equipment.getBoots() != null)
wornItems.add(equipment.getBoots());
return wornItems;
}
public EntityEquipment getEquipment() {
if (inventory == null) inventory = new CraftInventoryPlayer(((net.minecraft.entity.player.EntityPlayer) entity).inventory);
return inventory;
}
public EntityEquipment getEquipment() {
return equipment;
}
/**
* Gets the inventory with the equipment worn by the living entity.
*
* @return the living entity's inventory
*/
public EntityEquipment getEquipment();
public abstract void set(EntityEquipment e, @Nullable ItemStack item);