package org.bukkit.entity;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Represents a {@link Zombie} which was once a {@link Villager}.
*/
public interface ZombieVillager extends Zombie {
/**
* Sets the villager profession of this zombie.
*/
@Override
void setVillagerProfession(@NotNull Villager.Profession profession); // Paper
/**
* Returns the villager profession of this zombie.
*
* @return the profession
*/
@Override
@NotNull // Paper
Villager.Profession getVillagerProfession();
/**
* Gets the current type of this villager.
*
* @return Current type.
*/
@NotNull
public Villager.Type getVillagerType();
/**
* Sets the new type of this villager.
*
* @param type New type.
*/
public void setVillagerType(@NotNull Villager.Type type);
/**
* Get if this entity is in the process of converting to a Villager as a
* result of being cured.
*
* @return conversion status
*/
@Override
boolean isConverting();
/**
* Gets the amount of ticks until this entity will be converted to a
* Villager as a result of being cured.
*
* When this reaches 0, the entity will be converted.
*
* @return conversion time
* @throws IllegalStateException if {@link #isConverting()} is false.
*/
@Override
int getConversionTime();
/**
* Sets the amount of ticks until this entity will be converted to a
* Villager as a result of being cured.
*
* When this reaches 0, the entity will be converted. A value of less than 0
* will stop the current conversion process without converting the current
* entity.
*
* @param time new conversion time
*/
@Override
void setConversionTime(int time);
/**
* Gets the player who initiated the conversion.
*
* @return the player, or null if the player is unknown or the
* entity isn't converting currently
*/
@Nullable
OfflinePlayer getConversionPlayer();
/**
* Sets the player who initiated the conversion.
*
* This has no effect if this entity isn't converting currently. * * @param conversionPlayer the player */ void setConversionPlayer(@Nullable OfflinePlayer conversionPlayer); }