
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