99 lines
2.5 KiB
Java
99 lines
2.5 KiB
Java
package org.bukkit.craftbukkit.entity;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
import net.minecraft.world.entity.monster.EntityCreeper;
|
|
import org.bukkit.craftbukkit.CraftServer;
|
|
import org.bukkit.entity.Creeper;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.event.entity.CreeperPowerEvent;
|
|
|
|
public class CraftCreeper extends CraftMonster implements Creeper {
|
|
|
|
public CraftCreeper(CraftServer server, EntityCreeper entity) {
|
|
super(server, entity);
|
|
}
|
|
|
|
@Override
|
|
public boolean isPowered() {
|
|
return getHandle().isPowered();
|
|
}
|
|
|
|
@Override
|
|
public void setPowered(boolean powered) {
|
|
CreeperPowerEvent.PowerCause cause = powered ? CreeperPowerEvent.PowerCause.SET_ON : CreeperPowerEvent.PowerCause.SET_OFF;
|
|
|
|
// only call event when we are not in world generation
|
|
if (getHandle().generation || !callPowerEvent(cause)) {
|
|
getHandle().setPowered(powered);
|
|
}
|
|
}
|
|
|
|
private boolean callPowerEvent(CreeperPowerEvent.PowerCause cause) {
|
|
CreeperPowerEvent event = new CreeperPowerEvent((Creeper) getHandle().getBukkitEntity(), cause);
|
|
server.getPluginManager().callEvent(event);
|
|
return event.isCancelled();
|
|
}
|
|
|
|
@Override
|
|
public void setMaxFuseTicks(int ticks) {
|
|
Preconditions.checkArgument(ticks >= 0, "ticks < 0");
|
|
|
|
getHandle().maxSwell = ticks;
|
|
}
|
|
|
|
@Override
|
|
public int getMaxFuseTicks() {
|
|
return getHandle().maxSwell;
|
|
}
|
|
|
|
@Override
|
|
public void setFuseTicks(int ticks) {
|
|
Preconditions.checkArgument(ticks >= 0, "ticks < 0");
|
|
Preconditions.checkArgument(ticks <= getMaxFuseTicks(), "ticks > maxFuseTicks");
|
|
|
|
getHandle().swell = ticks;
|
|
}
|
|
|
|
@Override
|
|
public int getFuseTicks() {
|
|
return getHandle().swell;
|
|
}
|
|
|
|
@Override
|
|
public void setExplosionRadius(int radius) {
|
|
Preconditions.checkArgument(radius >= 0, "radius < 0");
|
|
|
|
getHandle().explosionRadius = radius;
|
|
}
|
|
|
|
@Override
|
|
public int getExplosionRadius() {
|
|
return getHandle().explosionRadius;
|
|
}
|
|
|
|
@Override
|
|
public void explode() {
|
|
getHandle().explodeCreeper();
|
|
}
|
|
|
|
@Override
|
|
public void ignite() {
|
|
getHandle().ignite();
|
|
}
|
|
|
|
@Override
|
|
public EntityCreeper getHandle() {
|
|
return (EntityCreeper) entity;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "CraftCreeper";
|
|
}
|
|
|
|
@Override
|
|
public EntityType getType() {
|
|
return EntityType.CREEPER;
|
|
}
|
|
}
|