126 lines
3.8 KiB
Java
126 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()));
|
|
}
|
|
|
|
@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;
|
|
}
|
|
}
|