CraftBukkit/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
blablubbabc 9bda413457 SPIGOT-4943: Zombie villager conversion player API.
Also resetting the conversion player when stopping a conversion.
2019-05-18 10:58:58 +10:00

84 lines
2.7 KiB
Java

package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import java.util.Locale;
import java.util.UUID;
import net.minecraft.server.EntityZombieVillager;
import net.minecraft.server.IRegistry;
import net.minecraft.server.MinecraftKey;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Villager;
import org.bukkit.entity.ZombieVillager;
public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
public CraftVillagerZombie(CraftServer server, EntityZombieVillager entity) {
super(server, entity);
}
@Override
public EntityZombieVillager getHandle() {
return (EntityZombieVillager) super.getHandle();
}
@Override
public String toString() {
return "CraftVillagerZombie";
}
@Override
public EntityType getType() {
return EntityType.ZOMBIE_VILLAGER;
}
@Override
public Villager.Profession getVillagerProfession() {
return Villager.Profession.valueOf(IRegistry.VILLAGER_PROFESSION.getKey(getHandle().getVillagerData().getProfession()).getKey().toUpperCase(Locale.ROOT));
}
@Override
public void setVillagerProfession(Villager.Profession profession) {
Validate.notNull(profession);
getHandle().setVillagerData(getHandle().getVillagerData().withProfession(IRegistry.VILLAGER_PROFESSION.get(new MinecraftKey(profession.name().toLowerCase(Locale.ROOT)))));
}
@Override
public boolean isConverting() {
return getHandle().isConverting();
}
@Override
public int getConversionTime() {
Preconditions.checkState(isConverting(), "Entity not converting");
return getHandle().conversionTime;
}
@Override
public void setConversionTime(int time) {
if (time < 0) {
getHandle().conversionTime = -1;
getHandle().getDataWatcher().set(EntityZombieVillager.CONVERTING, false);
getHandle().persistent = false; // CraftBukkit - SPIGOT-4684 update persistence
getHandle().conversionPlayer = null;
} else {
getHandle().startConversion((UUID) null, time);
}
}
@Override
public OfflinePlayer getConversionPlayer() {
return (getHandle().conversionPlayer == null) ? null : Bukkit.getOfflinePlayer(getHandle().conversionPlayer);
}
@Override
public void setConversionPlayer(OfflinePlayer conversionPlayer) {
if (!this.isConverting()) return;
getHandle().conversionPlayer = (conversionPlayer == null) ? null : conversionPlayer.getUniqueId();
}
}