CraftBukkit/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java

125 lines
3.8 KiB
Java

package org.bukkit.craftbukkit.block;
import com.google.common.base.Preconditions;
import net.minecraft.server.EntityTypes;
import net.minecraft.server.MinecraftKey;
import net.minecraft.server.TileEntityMobSpawner;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.entity.EntityType;
public class CraftCreatureSpawner extends CraftBlockEntityState<TileEntityMobSpawner> implements CreatureSpawner {
public CraftCreatureSpawner(final Block block) {
super(block, TileEntityMobSpawner.class);
}
public CraftCreatureSpawner(final Material material, TileEntityMobSpawner te) {
super(material, te);
}
@Override
public EntityType getSpawnedType() {
MinecraftKey key = this.getSnapshot().getSpawner().getMobName();
return (key == null) ? EntityType.PIG : EntityType.fromName(key.getKey());
}
@Override
public void setSpawnedType(EntityType entityType) {
if (entityType == null || entityType.getName() == null) {
throw new IllegalArgumentException("Can't spawn EntityType " + entityType + " from mobspawners!");
}
this.getSnapshot().getSpawner().setMobName(EntityTypes.a(entityType.getName()).get());
}
@Override
public String getCreatureTypeName() {
return this.getSnapshot().getSpawner().getMobName().getKey();
}
@Override
public void setCreatureTypeByName(String creatureType) {
// Verify input
EntityType type = EntityType.fromName(creatureType);
if (type == null) {
return;
}
setSpawnedType(type);
}
@Override
public int getDelay() {
return this.getSnapshot().getSpawner().spawnDelay;
}
@Override
public void setDelay(int delay) {
this.getSnapshot().getSpawner().spawnDelay = delay;
}
@Override
public int getMinSpawnDelay() {
return this.getSnapshot().getSpawner().minSpawnDelay;
}
@Override
public void setMinSpawnDelay(int spawnDelay) {
Preconditions.checkArgument(spawnDelay <= getMaxSpawnDelay(), "Minimum Spawn Delay must be less than or equal to Maximum Spawn Delay");
this.getSnapshot().getSpawner().minSpawnDelay = spawnDelay;
}
@Override
public int getMaxSpawnDelay() {
return this.getSnapshot().getSpawner().maxSpawnDelay;
}
@Override
public void setMaxSpawnDelay(int spawnDelay) {
Preconditions.checkArgument(spawnDelay > 0, "Maximum Spawn Delay must be greater than 0.");
Preconditions.checkArgument(spawnDelay >= getMinSpawnDelay(), "Maximum Spawn Delay must be greater than or equal to Minimum Spawn Delay");
this.getSnapshot().getSpawner().maxSpawnDelay = spawnDelay;
}
@Override
public int getMaxNearbyEntities() {
return this.getSnapshot().getSpawner().maxNearbyEntities;
}
@Override
public void setMaxNearbyEntities(int maxNearbyEntities) {
this.getSnapshot().getSpawner().maxNearbyEntities = maxNearbyEntities;
}
@Override
public int getSpawnCount() {
return this.getSnapshot().getSpawner().spawnCount;
}
@Override
public void setSpawnCount(int count) {
this.getSnapshot().getSpawner().spawnCount = count;
}
@Override
public int getRequiredPlayerRange() {
return this.getSnapshot().getSpawner().requiredPlayerRange;
}
@Override
public void setRequiredPlayerRange(int requiredPlayerRange) {
this.getSnapshot().getSpawner().requiredPlayerRange = requiredPlayerRange;
}
@Override
public int getSpawnRange() {
return this.getSnapshot().getSpawner().spawnRange;
}
@Override
public void setSpawnRange(int spawnRange) {
this.getSnapshot().getSpawner().spawnRange = spawnRange;
}
}