package org.bukkit.block; import org.bukkit.entity.EntityType; import org.jetbrains.annotations.Nullable; /** * Represents a captured state of a creature spawner. */ public interface CreatureSpawner extends TileState { /** * Get the spawner's creature type. * * @return The creature type or null if it not set. */ @Nullable public EntityType getSpawnedType(); /** * Set the spawner's creature type. * * @param creatureType The creature type or null to clear. */ public void setSpawnedType(@Nullable EntityType creatureType); /** * Set the spawner mob type. * * @param creatureType The creature type's name or null to clear. * @deprecated magic value, use * {@link #setSpawnedType(org.bukkit.entity.EntityType)}. */ @Deprecated public void setCreatureTypeByName(@Nullable String creatureType); /** * Get the spawner's creature type. * * @return The creature type's name if is set. * @deprecated magic value, use {@link #getSpawnedType()}. */ @Deprecated @Nullable public String getCreatureTypeName(); /** * Get the spawner's delay. *
* This is the delay, in ticks, until the spawner will spawn its next mob. * * @return The delay. */ public int getDelay(); /** * Set the spawner's delay. *
* If set to -1, the spawn delay will be reset to a random value between * {@link #getMinSpawnDelay} and {@link #getMaxSpawnDelay()}. * * @param delay The delay. */ public void setDelay(int delay); /** * The minimum spawn delay amount (in ticks). *
* This value is used when the spawner resets its delay (for any reason). * It will choose a random number between {@link #getMinSpawnDelay()} * and {@link #getMaxSpawnDelay()} for its next {@link #getDelay()}. *
* Default value is 200 ticks. * * @return the minimum spawn delay amount */ public int getMinSpawnDelay(); /** * Set the minimum spawn delay amount (in ticks). * * @param delay the minimum spawn delay amount * @see #getMinSpawnDelay() */ public void setMinSpawnDelay(int delay); /** * The maximum spawn delay amount (in ticks). *
* This value is used when the spawner resets its delay (for any reason). * It will choose a random number between {@link #getMinSpawnDelay()} * and {@link #getMaxSpawnDelay()} for its next {@link #getDelay()}. *
* This value must be greater than 0 and less than or equal to * {@link #getMaxSpawnDelay()}. *
* Default value is 800 ticks. * * @return the maximum spawn delay amount */ public int getMaxSpawnDelay(); /** * Set the maximum spawn delay amount (in ticks). *
* This value must be greater than 0, as well as greater than or * equal to {@link #getMinSpawnDelay()} * * @param delay the new maximum spawn delay amount * @see #getMaxSpawnDelay() */ public void setMaxSpawnDelay(int delay); /** * Get how many mobs attempt to spawn. *
* Default value is 4. * * @return the current spawn count */ public int getSpawnCount(); /** * Set how many mobs attempt to spawn. * * @param spawnCount the new spawn count */ public void setSpawnCount(int spawnCount); /** * Set the new maximum amount of similar entities that are allowed to be * within spawning range of this spawner. *
* If more than the maximum number of entities are within range, the spawner * will not spawn and try again with a new {@link #getDelay()}. *
* Default value is 16. * * @return the maximum number of nearby, similar, entities */ public int getMaxNearbyEntities(); /** * Set the maximum number of similar entities that are allowed to be within * spawning range of this spawner. *
* Similar entities are entities that are of the same {@link EntityType} * * @param maxNearbyEntities the maximum number of nearby, similar, entities */ public void setMaxNearbyEntities(int maxNearbyEntities); /** * Get the maximum distance(squared) a player can be in order for this * spawner to be active. *
* If this value is less than or equal to 0, this spawner is always active * (given that there are players online). *
* Default value is 16. * * @return the maximum distance(squared) a player can be in order for this * spawner to be active. */ public int getRequiredPlayerRange(); /** * Set the maximum distance (squared) a player can be in order for this * spawner to be active. *
* Setting this value to less than or equal to 0 will make this spawner * always active (given that there are players online). * * @param requiredPlayerRange the maximum distance (squared) a player can be * in order for this spawner to be active. */ public void setRequiredPlayerRange(int requiredPlayerRange); /** * Get the radius around which the spawner will attempt to spawn mobs in. *
* This area is square, includes the block the spawner is in, and is * centered on the spawner's x,z coordinates - not the spawner itself. *
* It is 2 blocks high, centered on the spawner's y-coordinate (its bottom); * thus allowing mobs to spawn as high as its top surface and as low * as 1 block below its bottom surface. *
* Default value is 4. * * @return the spawn range */ public int getSpawnRange(); /** * Set the new spawn range. *
* * @param spawnRange the new spawn range * @see #getSpawnRange() */ public void setSpawnRange(int spawnRange); }