All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.inventory.CraftEntityEquipment Maven / Gradle / Ivy

package org.bukkit.craftbukkit.inventory;

import net.minecraft.server.EntityInsentient;
import org.bukkit.craftbukkit.entity.CraftLivingEntity;
import org.bukkit.entity.Entity;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.ItemStack;

public class CraftEntityEquipment implements EntityEquipment {
  private static final int WEAPON_SLOT = 0;
  private static final int HELMET_SLOT = 4;
  private static final int CHEST_SLOT = 3;
  private static final int LEG_SLOT = 2;
  private static final int BOOT_SLOT = 1;
  private static final int INVENTORY_SLOTS = 5;

  private final CraftLivingEntity entity;

  public CraftEntityEquipment(CraftLivingEntity entity) {
    this.entity = entity;
  }

  public ItemStack getItemInHand() {
    return getEquipment(WEAPON_SLOT);
  }

  public void setItemInHand(ItemStack stack) {
    setEquipment(WEAPON_SLOT, stack);
  }

  public ItemStack getHelmet() {
    return getEquipment(HELMET_SLOT);
  }

  public void setHelmet(ItemStack helmet) {
    setEquipment(HELMET_SLOT, helmet);
  }

  public ItemStack getChestplate() {
    return getEquipment(CHEST_SLOT);
  }

  public void setChestplate(ItemStack chestplate) {
    setEquipment(CHEST_SLOT, chestplate);
  }

  public ItemStack getLeggings() {
    return getEquipment(LEG_SLOT);
  }

  public void setLeggings(ItemStack leggings) {
    setEquipment(LEG_SLOT, leggings);
  }

  public ItemStack getBoots() {
    return getEquipment(BOOT_SLOT);
  }

  public void setBoots(ItemStack boots) {
    setEquipment(BOOT_SLOT, boots);
  }

  public ItemStack[] getArmorContents() {
    ItemStack[] armor = new ItemStack[INVENTORY_SLOTS - 1];
    for (int slot = WEAPON_SLOT + 1; slot < INVENTORY_SLOTS; slot++) {
      armor[slot - 1] = getEquipment(slot);
    }
    return armor;
  }

  public void setArmorContents(ItemStack[] items) {
    for (int slot = WEAPON_SLOT + 1; slot < INVENTORY_SLOTS; slot++) {
      ItemStack equipment = items != null && slot <= items.length ? items[slot - 1] : null;
      setEquipment(slot, equipment);
    }
  }

  private ItemStack getEquipment(int slot) {
    return CraftItemStack.asBukkitCopy(entity.getHandle().getEquipment(slot));
  }

  private void setEquipment(int slot, ItemStack stack) {
    entity.getHandle().setEquipment(slot, CraftItemStack.asNMSCopy(stack));
  }

  public void clear() {
    for (int i = 0; i < INVENTORY_SLOTS; i++) {
      setEquipment(i, null);
    }
  }

  public Entity getHolder() {
    return entity;
  }

  public float getItemInHandDropChance() {
    return getDropChance(WEAPON_SLOT);
  }

  public void setItemInHandDropChance(float chance) {
    setDropChance(WEAPON_SLOT, chance);
  }

  public float getHelmetDropChance() {
    return getDropChance(HELMET_SLOT);
  }

  public void setHelmetDropChance(float chance) {
    setDropChance(HELMET_SLOT, chance);
  }

  public float getChestplateDropChance() {
    return getDropChance(CHEST_SLOT);
  }

  public void setChestplateDropChance(float chance) {
    setDropChance(CHEST_SLOT, chance);
  }

  public float getLeggingsDropChance() {
    return getDropChance(LEG_SLOT);
  }

  public void setLeggingsDropChance(float chance) {
    setDropChance(LEG_SLOT, chance);
  }

  public float getBootsDropChance() {
    return getDropChance(BOOT_SLOT);
  }

  public void setBootsDropChance(float chance) {
    setDropChance(BOOT_SLOT, chance);
  }

  private void setDropChance(int slot, float chance) {
    ((EntityInsentient) entity.getHandle()).dropChances[slot] = chance - 0.1F;
  }

  private float getDropChance(int slot) {
    return ((EntityInsentient) entity.getHandle()).dropChances[slot] + 0.1F;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy