Skip to content

Developer API

Add SmartSpawner API via JitPack

Latest Version: Latest Release

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 LATEST with the specific version number for production builds.

Add SmartSpawner as dependency in plugin.yml:

name: YourPlugin
version: 1.0.0
main: com.yourpackage.YourPlugin
depend: [SmartSpawner]
# or
softdepend: [SmartSpawner] # Optional dependency
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;
}
}
MethodDescriptionReturn Type
createSpawnerItem(EntityType)Creates a SmartSpawner itemItemStack
createSpawnerItem(EntityType, int)Creates many SmartSpawner itemsItemStack
isValidSpawner(ItemStack)Checks if item is valid SmartSpawnerboolean
getSpawnerEntityType(ItemStack)Gets entity type from SmartSpawnerEntityType

Creates a SmartSpawner item with the specified entity type.

import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
// Create a zombie spawner
ItemStack zombieSpawner = api.createSpawnerItem(EntityType.ZOMBIE);
// Give to player
player.getInventory().addItem(zombieSpawner);

Creates a SmartSpawner item with custom amount.

// Create 5 skeleton spawners
ItemStack skeletonSpawners = api.createSpawnerItem(EntityType.SKELETON, 5);

Checks if an item is a valid SmartSpawner item.

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
ItemStack item = event.getItem();
if (api.isValidSpawner(item)) {
event.getPlayer().sendMessage("You're holding a spawner!");
}
}

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());
}

SmartSpawner provides various events to hook into spawner-related actions:

EventDescriptionCancellable
SpawnerBreakEventSpawner broken by a player or an explosion
SpawnerPlaceEventSpawner placed by player
SpawnerPlayerBreakEventSpawner broken by player
SpawnerStackEventSpawners stacking by hand
SpawnerSellEventSelling item from spawner storage
SpawnerExpClaimEventExperience claimed from spawner
SpawnerEggChangeEventSpawner type changed with egg
SpawnerExplodeEventSpawners destroyed by explosion
SpawnerRemoveEventUnstack spawners from the stacker GUI
SpawnerOpenGUIEventGUI opened by player

Triggered when a spawner is broken by a player or explosion.

import github.nighter.smartspawner.api.events.SpawnerBreakEvent;
@EventHandler
public 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)!");
}
}

Triggered when a spawner is placed.

import github.nighter.smartspawner.api.events.SpawnerPlaceEvent;
@EventHandler
public void onSpawnerPlace(SpawnerPlaceEvent event) {
Player player = event.getPlayer();
Location location = event.getLocation();
// Handle spawner placement
player.sendMessage("Spawner placed at " + location.toString());
}

Triggered specifically when a player breaks a spawner.

import github.nighter.smartspawner.api.events.SpawnerPlayerBreakEvent;
@EventHandler
public 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!");
}
}

Triggered when spawners are stacked by hand.

import github.nighter.smartspawner.api.events.SpawnerStackEvent;
@EventHandler
public void onSpawnerStack(SpawnerStackEvent event) {
Player player = event.getPlayer();
int newStackSize = event.getNewStackSize();
player.sendMessage("Spawner stacked! New size: " + newStackSize);
}

Triggered when items are sold from spawner storage.

import github.nighter.smartspawner.api.events.SpawnerSellEvent;
@EventHandler
public 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
}

Triggered when experience is claimed from spawners.

import github.nighter.smartspawner.api.events.SpawnerExpClaimEvent;
@EventHandler
public void onExpClaim(SpawnerExpClaimEvent event) {
Player player = event.getPlayer();
int expAmount = event.getExpAmount();
// Modify experience amount
event.setExpAmount(expAmount * 2); // Double EXP
}

Triggered when a spawner’s entity type is changed using spawn eggs.

import github.nighter.smartspawner.api.events.SpawnerEggChangeEvent;
@EventHandler
public void onSpawnerEggChange(SpawnerEggChangeEvent event) {
Player player = event.getPlayer();
EntityType oldType = event.getOldEntityType();
EntityType newType = event.getNewEntityType();
player.sendMessage("Changed spawner from " + oldType + " to " + newType);
}

Triggered when spawners are destroyed by explosions.

import github.nighter.smartspawner.api.events.SpawnerExplodeEvent;
@EventHandler
public void onSpawnerExplode(SpawnerExplodeEvent event) {
Location location = event.getLocation();
int quantity = event.getQuantity();
// Log explosion
getLogger().info("Spawners destroyed by explosion at " + location);
}

Triggered when spawners are unstacked from the stacker GUI.

import github.nighter.smartspawner.api.events.SpawnerRemoveEvent;
@EventHandler
public void onSpawnerRemove(SpawnerRemoveEvent event) {
Location location = event.getLocation();
// Handle spawner removal
getLogger().info("Spawner removed at " + location);
}

Triggered when a player opens the spawner GUI.

import github.nighter.smartspawner.api.events.SpawnerOpenGUIEvent;
@EventHandler
public 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