Developer API
Getting Started
Section titled “Getting Started”Installation
Section titled “Installation”Add SmartSpawner API via JitPack
Maven:
<repository> <id>jitpack.io</id> <url>https://jitpack.io</url></repository>
<dependency> <groupId>com.github.NighterDevelopment</groupId> <artifactId>SmartSpawner</artifactId> <version>LATEST</version> <scope>provided</scope></dependency>Gradle:
repositories { maven { url 'https://jitpack.io' }}
dependencies { compileOnly 'com.github.NighterDevelopment:SmartSpawner:LATEST'}Note: Replace
LATESTwith the specific version number for production builds.
Plugin Configuration
Section titled “Plugin Configuration”Add SmartSpawner as dependency in plugin.yml:
name: YourPluginversion: 1.0.0main: com.yourpackage.YourPlugindepend: [SmartSpawner]# orsoftdepend: [SmartSpawner] # Optional dependencyAPI Usage
Section titled “API Usage”Basic Setup
Section titled “Basic Setup”import github.nighter.smartspawner.api.SmartSpawnerAPI;import github.nighter.smartspawner.api.SmartSpawnerProvider;
public class YourPlugin extends JavaPlugin {
private SmartSpawnerAPI api;
@Override public void onEnable() { // Initialize API api = SmartSpawnerProvider.getAPI(); if (api == null) { getLogger().warning("SmartSpawner not found!"); return; }
getLogger().info("SmartSpawner API connected successfully!"); }
public SmartSpawnerAPI getAPI() { return api; }}API Methods
Section titled “API Methods”| Method | Description | Return Type |
|---|---|---|
createSpawnerItem(EntityType) | Creates a SmartSpawner item | ItemStack |
createSpawnerItem(EntityType, int) | Creates many SmartSpawner items | ItemStack |
isValidSpawner(ItemStack) | Checks if item is valid SmartSpawner | boolean |
getSpawnerEntityType(ItemStack) | Gets entity type from SmartSpawner | EntityType |
createSpawnerItem()
Section titled “createSpawnerItem()”Creates a SmartSpawner item with the specified entity type.
import org.bukkit.entity.EntityType;import org.bukkit.inventory.ItemStack;
// Create a zombie spawnerItemStack zombieSpawner = api.createSpawnerItem(EntityType.ZOMBIE);
// Give to playerplayer.getInventory().addItem(zombieSpawner);Creates a SmartSpawner item with custom amount.
// Create 5 skeleton spawnersItemStack skeletonSpawners = api.createSpawnerItem(EntityType.SKELETON, 5);isValidSpawner()
Section titled “isValidSpawner()”Checks if an item is a valid SmartSpawner item.
@EventHandlerpublic void onPlayerInteract(PlayerInteractEvent event) { ItemStack item = event.getItem();
if (api.isValidSpawner(item)) { event.getPlayer().sendMessage("You're holding a spawner!"); }}getSpawnerEntityType()
Section titled “getSpawnerEntityType()”Gets the entity type from a SmartSpawner item.
ItemStack item = player.getItemInHand();EntityType entityType = api.getSpawnerEntityType(item);
if (entityType != null) { player.sendMessage("This spawner spawns: " + entityType.name());}API Events
Section titled “API Events”SmartSpawner provides various events to hook into spawner-related actions:
| Event | Description | Cancellable |
|---|---|---|
SpawnerBreakEvent | Spawner broken by a player or an explosion | ❌ |
SpawnerPlaceEvent | Spawner placed by player | ✅ |
SpawnerPlayerBreakEvent | Spawner broken by player | ✅ |
SpawnerStackEvent | Spawners stacking by hand | ✅ |
SpawnerSellEvent | Selling item from spawner storage | ✅ |
SpawnerExpClaimEvent | Experience claimed from spawner | ✅ |
SpawnerEggChangeEvent | Spawner type changed with egg | ✅ |
SpawnerExplodeEvent | Spawners destroyed by explosion | ❌ |
SpawnerRemoveEvent | Unstack spawners from the stacker GUI | ✅ |
SpawnerOpenGUIEvent | GUI opened by player | ✅ |
SpawnerBreakEvent
Section titled “SpawnerBreakEvent”Triggered when a spawner is broken by a player or explosion.
import github.nighter.smartspawner.api.events.SpawnerBreakEvent;
@EventHandlerpublic void onSpawnerBreak(SpawnerBreakEvent event) { Entity breaker = event.getEntity(); Location location = event.getLocation(); int quantity = event.getQuantity();
// Handle spawner break if (breaker instanceof Player) { Player player = (Player) breaker; player.sendMessage("You broke " + quantity + " spawner(s)!"); }}SpawnerPlaceEvent
Section titled “SpawnerPlaceEvent”Triggered when a spawner is placed.
import github.nighter.smartspawner.api.events.SpawnerPlaceEvent;
@EventHandlerpublic void onSpawnerPlace(SpawnerPlaceEvent event) { Player player = event.getPlayer(); Location location = event.getLocation();
// Handle spawner placement player.sendMessage("Spawner placed at " + location.toString());}SpawnerPlayerBreakEvent
Section titled “SpawnerPlayerBreakEvent”Triggered specifically when a player breaks a spawner.
import github.nighter.smartspawner.api.events.SpawnerPlayerBreakEvent;
@EventHandlerpublic void onPlayerBreakSpawner(SpawnerPlayerBreakEvent event) { Player player = event.getPlayer(); int quantity = event.getQuantity();
// Cancel if player doesn't have permission if (!player.hasPermission("spawner.break")) { event.setCancelled(true); player.sendMessage("No permission to break spawners!"); }}SpawnerStackEvent
Section titled “SpawnerStackEvent”Triggered when spawners are stacked by hand.
import github.nighter.smartspawner.api.events.SpawnerStackEvent;
@EventHandlerpublic void onSpawnerStack(SpawnerStackEvent event) { Player player = event.getPlayer(); int newStackSize = event.getNewStackSize();
player.sendMessage("Spawner stacked! New size: " + newStackSize);}SpawnerSellEvent
Section titled “SpawnerSellEvent”Triggered when items are sold from spawner storage.
import github.nighter.smartspawner.api.events.SpawnerSellEvent;
@EventHandlerpublic void onSpawnerSell(SpawnerSellEvent event) { Player player = event.getPlayer(); double price = event.getPrice();
// Add bonus money double bonus = price * 0.1; // 10% bonus // Give bonus to player via your economy plugin}SpawnerExpClaimEvent
Section titled “SpawnerExpClaimEvent”Triggered when experience is claimed from spawners.
import github.nighter.smartspawner.api.events.SpawnerExpClaimEvent;
@EventHandlerpublic void onExpClaim(SpawnerExpClaimEvent event) { Player player = event.getPlayer(); int expAmount = event.getExpAmount();
// Modify experience amount event.setExpAmount(expAmount * 2); // Double EXP}SpawnerEggChangeEvent
Section titled “SpawnerEggChangeEvent”Triggered when a spawner’s entity type is changed using spawn eggs.
import github.nighter.smartspawner.api.events.SpawnerEggChangeEvent;
@EventHandlerpublic void onSpawnerEggChange(SpawnerEggChangeEvent event) { Player player = event.getPlayer(); EntityType oldType = event.getOldEntityType(); EntityType newType = event.getNewEntityType();
player.sendMessage("Changed spawner from " + oldType + " to " + newType);}SpawnerExplodeEvent
Section titled “SpawnerExplodeEvent”Triggered when spawners are destroyed by explosions.
import github.nighter.smartspawner.api.events.SpawnerExplodeEvent;
@EventHandlerpublic void onSpawnerExplode(SpawnerExplodeEvent event) { Location location = event.getLocation(); int quantity = event.getQuantity();
// Log explosion getLogger().info("Spawners destroyed by explosion at " + location);}SpawnerRemoveEvent
Section titled “SpawnerRemoveEvent”Triggered when spawners are unstacked from the stacker GUI.
import github.nighter.smartspawner.api.events.SpawnerRemoveEvent;
@EventHandlerpublic void onSpawnerRemove(SpawnerRemoveEvent event) { Location location = event.getLocation();
// Handle spawner removal getLogger().info("Spawner removed at " + location);}SpawnerOpenGUIEvent
Section titled “SpawnerOpenGUIEvent”Triggered when a player opens the spawner GUI.
import github.nighter.smartspawner.api.events.SpawnerOpenGUIEvent;
@EventHandlerpublic void onSpawnerOpenGUI(SpawnerOpenGUIEvent event) { Player player = event.getPlayer(); EntityType entityType = event.getEntityType(); boolean isRefresh = event.isRefresh();
// Handle GUI open if (!player.hasPermission("spawner.gui.open")) { event.setCancelled(true); player.sendMessage("No permission to open spawner GUI!"); }}Last update: October 4, 2025 08:48:21