2021-11-22 09:00:00 +11:00

82 lines
2.2 KiB
Java

package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import net.minecraft.world.entity.EntityInsentient;
import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Mob;
import org.bukkit.loot.LootTable;
public abstract class CraftMob extends CraftLivingEntity implements Mob {
public CraftMob(CraftServer server, EntityInsentient entity) {
super(server, entity);
}
@Override
public void setTarget(LivingEntity target) {
Preconditions.checkState(!getHandle().generation, "Cannot set target during world generation");
EntityInsentient entity = getHandle();
if (target == null) {
entity.setTarget(null, null, false);
} else if (target instanceof CraftLivingEntity) {
entity.setTarget(((CraftLivingEntity) target).getHandle(), null, false);
}
}
@Override
public CraftLivingEntity getTarget() {
if (getHandle().getTarget() == null) return null;
return (CraftLivingEntity) getHandle().getTarget().getBukkitEntity();
}
@Override
public void setAware(boolean aware) {
getHandle().aware = aware;
}
@Override
public boolean isAware() {
return getHandle().aware;
}
@Override
public EntityInsentient getHandle() {
return (EntityInsentient) entity;
}
@Override
public String toString() {
return "CraftMob";
}
@Override
public void setLootTable(LootTable table) {
getHandle().lootTable = (table == null) ? null : CraftNamespacedKey.toMinecraft(table.getKey());
}
@Override
public LootTable getLootTable() {
if (getHandle().lootTable == null) {
getHandle().lootTable = getHandle().getDefaultLootTable();
}
NamespacedKey key = CraftNamespacedKey.fromMinecraft(getHandle().lootTable);
return Bukkit.getLootTable(key);
}
@Override
public void setSeed(long seed) {
getHandle().lootTableSeed = seed;
}
@Override
public long getSeed() {
return getHandle().lootTableSeed;
}
}