SPIGOT-4526: Add conversion time API for Zombie & subclasses

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2018-12-13 14:10:36 +11:00
parent 83baf22bde
commit bbf578d00a
5 changed files with 93 additions and 7 deletions

View File

@@ -41,4 +41,19 @@ public class CraftPigZombie extends CraftZombie implements PigZombie {
public EntityType getType() {
return EntityType.PIG_ZOMBIE;
}
@Override
public boolean isConverting() {
return false;
}
@Override
public int getConversionTime() {
throw new UnsupportedOperationException("Not supported by this Entity.");
}
@Override
public void setConversionTime(int time) {
throw new UnsupportedOperationException("Not supported by this Entity.");
}
}

View File

@@ -1,5 +1,7 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import java.util.UUID;
import net.minecraft.server.EntityZombieVillager;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
@@ -36,4 +38,26 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
public void setVillagerProfession(Villager.Profession profession) {
getHandle().setProfession(profession == null ? 0 : profession.ordinal() - Villager.Profession.FARMER.ordinal());
}
@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.a, false);
} else {
getHandle().a((UUID) null, time);
}
}
}

View File

@@ -1,5 +1,6 @@
package org.bukkit.craftbukkit.entity;
import com.google.common.base.Preconditions;
import net.minecraft.server.EntityZombie;
import net.minecraft.server.EntityZombieVillager;
@@ -54,4 +55,26 @@ public class CraftZombie extends CraftMonster implements Zombie {
public Villager.Profession getVillagerProfession() {
return null;
}
@Override
public boolean isConverting() {
return getHandle().isDrownConverting();
}
@Override
public int getConversionTime() {
Preconditions.checkState(isConverting(), "Entity not converting");
return getHandle().drownedConversionTime;
}
@Override
public void setConversionTime(int time) {
if (time < 0) {
getHandle().drownedConversionTime = -1;
getHandle().getDataWatcher().set(EntityZombie.bF, false);
} else {
getHandle().a(time);
}
}
}