Smart Spawner - GUI Spawner Plugin✨ [1.20 - 1.21.3]️ icon

Smart Spawner - GUI Spawner Plugin✨ [1.20 - 1.21.3]️ -----

Enhances spawner use with GUI that generates mob drops and experience without spawning entity



Overview:

Inspired by Donut SMP’s Spawner mechanics, this plugin enhances minecraft spawner usage with a user-friendly GUI that generates mob drops and experience without spawning entities, reducing server load.

Key Features:
  • Intuitive GUI: A user-friendly interface that allows players to view, manage, and interact with spawners effortlessly.
[​IMG]
Spawner Main GUI


[​IMG]
Spawner Storage GUI

  • Spawner Stacking: Reduce server load with our robust stacking mechanics. Players can stack spawners with ease using intuitive interactions or a dedicated GUI.
  • Right-click on a spawner with a spawner in hand to add 1 to the stack.
  • Shift + Right-click to stack all spawner in your hand.
  • Or use the stacker GUI.

[​IMG]
Spawner Stacker GUI

[​IMG]
Stacking a Spawner

  • Mineable Spawner: Allows players to break and collect spawners using specific tools, Silk Touch enchantment,.. Fully customizable.
  • Shop Integration: Fully compatible with popular economy plugins, including EconomyShopGUI, EconomyShopGUI-Premium. For selling items directly from the Spawner Storage GUI, with plans to expand compatibility to more shop plugins in the future.
Supported mobs:
  • Blaze
  • Bogged (only 1.21+)
  • Breeze
  • Cave Spider
  • Chicken
  • Cow
  • Creeper
  • Drowned
  • Enderman
  • Evoker
  • Ghast
  • Glow Squid
  • Guardian
  • Hoglin
  • Husk
  • Iron Golem
  • Magma Cube
  • Mooshroom
  • Pig
  • Piglin
  • Piglin Brute
  • Pillager
  • Pufferfish
  • Rabbit
  • Ravager
  • Salmon
  • Sheep
  • Shulker
  • Silverfish
  • Skeleton
  • Slime
  • Spider
  • Squid
  • Stray
  • Strider
  • Tropical Fish
  • Vindicator
  • Witch
  • Wither Skeleton
  • Zoglin
  • Zombie
  • Zombie Villager
  • Zombified Piglin

Default Config & Language Files: Use this as a base for updates and translations
Code (YAML):

prefix
: "&8[&#3287A9&lSmartSpawner&8]&r"
#---------------------------------------------------
# Formatted Numbers
#---------------------------------------------------
format-number
:
  thousand
: "%sk"
  million
: "%sm"
  billion
: "%sb"
  trillion
: "%st"
  default
: "%s"

#---------------------------------------------------
# Formatted Mob Names
#---------------------------------------------------
mob_names
:
  BLAZE
: "Blaze"
  BREEZE
: "Breeze"
  CAVE_SPIDER
: "Cave Spider"
  CHICKEN
: "Chicken"
  COW
: "Cow"
  CREEPER
: "Creeper"
  DROWNED
: "Drowned"
  ENDERMAN
: "Enderman"
  EVOKER
: "Evoker"
  GHAST
: "Ghast"
  GLOW_SQUID
: "Glow Squid"
  GUARDIAN
: "Guardian"
  HOGLIN
: "Hoglin"
  HUSK
: "Husk"
  IRON_GOLEM
: "Iron Golem"
  MAGMA_CUBE
: "Magma Cube"
  MUSHROOM_COW
: "Mooshroom"
  PIG
: "Pig"
  PIGLIN
: "Piglin"
  PIGLIN_BRUTE
: "Piglin Brute"
  PILLAGER
: "Pillager"
  PUFFERFISH
: "Pufferfish"
  RABBIT
: "Rabbit"
  RAVAGER
: "Ravager"
  SALMON
: "Salmon"
  SHEEP
: "Sheep"
  SHULKER
: "Shulker"
  SILVERFISH
: "Silverfish"
  SKELETON
: "Skeleton"
  SLIME
: "Slime"
  SPIDER
: "Spider"
  SQUID
: "Squid"
  STRAY
: "Stray"
  STRIDER
: "Strider"
  TROPICAL_FISH
: "Tropical Fish"
  VINDICATOR
: "Vindicator"
  WITCH
: "Witch"
  WITHER_SKELETON
: "Wither Skeleton"
  ZOGLIN
: "Zoglin"
  ZOMBIE
: "Zombie"
  ZOMBIE_VILLAGER
: "Zombie Villager"
  ZOMBIFIED_PIGLIN
: "Zombified Piglin"

#---------------------------------------------------
# Spawner Item Name With Entity
#---------------------------------------------------
spawner-name
: "&6%entity% Spawner"

#---------------------------------------------------
# Spawner Interaction
#---------------------------------------------------
messages
:
  activated
:
    message
: "&#d6e7edSpawner &#3287A9activated&#d6e7ed! Mobs won’t spawn naturally, collect loot and XP through the GUI instead."
    prefix
: true
    type
: CHAT
    sound
: block.beacon.activate

  entity-spawner-placed
:
    message
: "&#d6e7edThis spawner is &#3287A9not activated&#d6e7ed! Mobs will spawn naturally."
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  changed
:
    message
: "&#d6e7edSpawner changed to &#3287A9%type%&#d6e7ed!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  invalid-egg
:
    message
: "&cInvalid spawn egg! or spawn egg not supported!"
    prefix
: true
    type
: CHAT

  break-warning
:
    message
: "&c[!] Warning! All items and xp will be lost!"
    prefix
: false
    type
: ACTION_BAR
    sound
: block.note_block.chime

  required-tools
:
    message
: "&c[!] Can't break spawner with this tool!"
    prefix
: false
    type
: ACTION_BAR
    sound
: item.shield.block

  silk-touch-required
:
    message
: "&c[!] Required &#3287A9Silk Touch&c to break this spawner!"
    prefix
: false
    type
: ACTION_BAR
    sound
: block.note_block.pling

  #---------------------------------------------------
  # Selling Items from Spawner
  #---------------------------------------------------
  sell-all
:
    message
: "&#d6e7edYou sold a total of &#3287A9%amount% items&#d6e7ed for&a %price%$ &#d6e7ed!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.bell

  sell-all-tax
:
    message
: "&#d6e7edYou sold a total of &#3287A9%amount% items&#d6e7ed for&a %price%$ &#d6e7ed (Tax: &#ff6b6b%tax%%&#d6e7ed)!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.bell

  no-items
:
    message
: "&cThere are no items to sell in the spawner."
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  no-sellable-items
:
    message
: "&cNo items can be sold from this spawner."
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  #---------------------------------------------------
  # Spawner Stacking/Unstacking
  #---------------------------------------------------
  hand-stack
:
    message
: "&#00E689Successfully stacked &6%amount%&#00E689 spawners!"
    prefix
: false
    type
: ACTION_BAR
    sound
: entity.experience_orb.pickup

  items-lost
:
    message
: "&cSome items were lost due to unstacking!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  cannot-go-below-one
:
    message
: "&cCannot go below 1! Only decreasing by %amount%!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  stack-full
:
    message
: "&cStack limit reached! Cannot increase anymore!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  not-enough-spawners
:
    message
: "&cYou don't have enough spawners! Need %amountChange% but only have %amountAvailable%!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  stack-full-overflow
:
    message
: "&cStack limit reached! Only stack %amount% spawners!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  inventory-full-drop
:
    message
: "&cSome spawners were dropped at your feet due to full inventory!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  invalid-spawner
:
    message
: "&cInvalid spawner type!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  different-type
:
    message
: "&cYou can only stack spawners of the same type!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  #---------------------------------------------------
  # Spawner Experience Collection
  #---------------------------------------------------
  exp-collected
:
    message
: "&#d6e7edCollected &a%exp%&#d6e7ed experience points!"
    prefix
: true
    type
: CHAT

  exp-collected-with-mending
:
    message
: "&#d6e7edUsed &a%exp-mending%&&#d6e7ed experience points to repair items! Collected &a%exp%&&#d6e7ed experience points!"
    prefix
: true
    type
: CHAT

  no-exp
:
    message
: "&cThere is no experience to take!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  #---------------------------------------------------
  # Spawner Storage Interaction
  #---------------------------------------------------
  no-items-to-take
:
    message
: "&cThere are no items to take!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  inventory-full
:
    message
: "&cYour inventory is full!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  take-some-items
:
    message
: "&#d6e7edYou have taken &#3287A9%amount%&#d6e7ed items! Your inventory is now full!"
    prefix
: true
    type
: CHAT

  take-all-items
:
    message
: "&#d6e7edSuccessfully taken &#3287A9%amount%&#d6e7ed items!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.chime

  #---------------------------------------------------
  # Hopper Interaction
  #---------------------------------------------------
  hopper-paused
:
    message
: "&cHopper has been paused while interacting with the spawner!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

  hopper-resumed
:
    message
: "&aHopper has been resumed!"
    prefix
: true
    type
: CHAT
    sound
: block.note_block.chime

  #---------------------------------------------------
  # Spawner List Teleport Message
  #---------------------------------------------------
  teleported
:
    message
: "&aSuccessfully teleported to &6Spawner #%spawnerId%"
    prefix
: true
    type
: CHAT
    sound
: entity.enderman.teleport

  not-found
:
    message
: "&cCould not teleport to that Spawner! Spawner not found."
    prefix
: true
    type
: CHAT
    sound
: block.note_block.pling

#---------------------------------------------------
# GUI Titles
#---------------------------------------------------
gui-title
:
  menu
: "%entity% Spawner"
  stacked-menu
: "%amount% %entity% Spawner"
  stacker-menu
: "Spawner Stacker"
  loot-menu
: "Spawner Storage"

#---------------------------------------------------
# Main Menu GUI
#---------------------------------------------------
spawner-loot-item
:
  name
: "&#FCD05C&lLoot Storage"
  lore
:
    chest
: |
 
      &8▪ &#FCD05CSlots: &f%current_items%&7/&f%max_slots%

      &8▪ & #FCD05CStorage: &a%percent_storage%&a%&f full
 
      & #FCD05C➜ &7Click to open storage

spawner-info-item
:
  name
: "&#4fc3f7&lSpawner Info"
  lore
:
    spawner-info
: |

      &8▪ &#81d4faEntity: &f%entity%

      &8▪ & #81d4faRange: &f%range% &7blocks
      &8▪ & #81d4faStack Size: &f%stack_size%
      &8▪ & #81d4faMob Rate: &f%min_mobs% &7- &f%max_mobs%
      &8▪ & #81d4faSpawn Delay: &f%delay%&7s
      &8▪ & #81d4faNext Spawn: &e
 
      & #81d4fa➜ &7Click to open stack menu
  lore-change
: "&8▪ &#81d4faNext Spawn: &e"
  lore-inactive
: "&cSpawner is inactive!"
  lore-now
: "&cNow!"
  lore-error
: "&cError in spawn time! Please restart the server."

exp-info-item
:
  name
: "&#00F898&lStored Exp: &e%current_exp%&#00F898"
  lore
:
    exp-bottle
: |
 
      &8▪ &#00E689Current: &e%current_exp%&7/&e%max_exp% &7XP

      &8▪ & #00E689Stored: &e%percent_exp%&e% &7XP
 
      & #00E689➜ &7Click to collect XP

#---------------------------------------------------
# Spawner Stacker GUI
#---------------------------------------------------
button
:
  name
:
    spawner
: "&#4fc3f7%entity% Spawner"
    decrease-64
: "&c-64 Spawners"
    decrease-16
: "&c-16 Spawners"
    decrease-1
: "&c-1 Spawner"
    increase-64
: "&a+64 Spawners"
    increase-16
: "&a+16 Spawners"
    increase-1
: "&a+1 Spawner"
  lore
:
    remove
: |
     &7Click to remove %amount% spawner
      &7from the stack
      &7Current stack: &e%stack_size%

    add
: |
     &7Click to add %amount% spawner
      &7to the stack
      &7Current stack: &e%stack_size%

    spawner
: |
 
      &8▪ &#81d4faEntity: &f%entity%

      &8▪ & #81d4faStack Size: &f%stack_size%
      &8▪ & #81d4faMax Stack Size: &f%max_stack_size%
 
      & #81d4fa➜ &7Click to return main menu

#---------------------------------------------------
# Spawner Storage GUI
#---------------------------------------------------
navigation-button
:
  previous
:
    name
: "&#81d4faPrevious Page"
    lore
: |
     &#81d4faClick to go to page %target_page%
  next
:
    name
: "&#81d4faNext Page"
    lore
: |
     &#81d4faClick to go to page %target_page%

page-indicator
:
  name
: "&#ffd700Page [%current_page%/&#ffd700%total_pages%]"
  lore
: |
    &7Total Items
: &f%current_items%&7/&f%max_slots%

shop-page-indicator
:
  name
: "&#ffd700Page [%current_page%/&#ffd700%total_pages%]"
  lore
: |

    &8▪ &#ffd700Total Items: &f%current_items%&7/&f%max_slots%

    &8▪ & #ffd700Storage: &a%percent_storage%&a%&f full
 
    & #ffd700➜ &7Click to sell all items in storage

return-button
:
  name
: "&#ff6b6b Return to Main Menu"

take-all-button
:
  name
: "&#00E689Take All Items"

equipment-toggle
:
  name
: "&#f4d842Equipment Drops"
  lore
:
    enabled
: |
      &7Status
: &a&lAllowed
    disabled
: |
      &7Status
: &c&lBlocked

#---------------------------------------------------
# Spawner List GUI (Command)
#---------------------------------------------------
spawner-list
:
  gui-title
:
    world-selection
: "&#3287A9&lSpawner List"
    page-title
: "{world} &r- [{current}/{total}]"

  world-buttons
:
    overworld
:
      name
: "&a&lOverworld"
      lore
: |
        &8▪ &7Total spawners
: &a{total}
   
        &a➜ &7Click to view Overworld spawners
    nether
:
      name
: "&c&lNether"
      lore
: |
        &8▪ &7Total spawners
: &c{total}
   
        &c➜ &7Click to view Nether spawners
    end
:
      name
: "&5&lThe End"
      lore
: |
        &8▪ &7Total spawners
: &5{total}
   
        &5➜ &7Click to view The End spawners

  spawner-item
:
    name
: "&#4fc3f7&lSpawner #{id}"
    id_pattern
: "Spawner #([A-Za-z0-9]+)"     # Pattern to match the spawner id for teleportation
    lore
:
      separator
: "&8&m------------------------"
      location
: "&8▪ &7Location: &f{x}, {y}, {z}"
      entity
: "&8▪ &7Entity: &f{entity}"
      stack_size
: "&8▪ &7Stack Size: &6{size}"
      status
:
        active
: "&8▪ &7Status: &a&lACTIVE"
        inactive
: "&8▪ &7Status: &c&lINACTIVE"
      teleport
: "&#3287A9➜ &eClick to teleport"

  navigation
:
    previous-page
: "&e&lPrevious Page"
    next-page
: "&e&lNext Page"
    back
: "&c&lBack to World Selection"

#---------------------------------------------------
# Command & Update Messages
#---------------------------------------------------
command
:
  usage
: |
    &aCommands Usage
:
   &f/smartspawner reload &7- Reload the plugin configuration
    &f/smartspawner list &7- Open the spawner list (for admin management )
    &f/smartspawner give <player> <mobtype> <amount> &7- Give spawners to a player
  reload
:
    usage
: "&cUsage: /smartspawner reload"
    success
: "&aPlugin reloaded successfully!"
    error
: "&cError reloading plugin. Check console for details."
  give
:
    usage
: "&cUsage: /smartspawner give <player> <mobtype> <amount>"
    player-not-found
: "&cPlayer not found!"
    amount-too-large
: "&cMaximum amount allowed is %max%!"
    invalid-amount
: "&cInvalid amount! Please enter a number between 1 and 64."
    inventory-full
: "&eYour inventory is full! Some items have been dropped on the ground."
    invalid-mob-type
: "&cInvalid mob type! Use tab completion to see available types."
    spawner-received
: "&aYou have received %amount% %entity% spawner(s)!"
    spawner-given
: "&aYou have given %player% %amount% %entity% spawner(s)!"
    spawner-given-dropped
: "&eYou have given %player% %amount% %entity% spawner(s) (some items were dropped on the ground)"

no-permission
:
  message
: "&cYou do not have permission to do that!"
  prefix
: true
  type
: CHAT
  sound
: block.note_block.pling

update
:
  title
: "[Smart Spawner] Update Available!"
  current_version
: "▪ Your version: v%current_version%"
  last_version
: "▪ Latest version: v%new_version%"
  download_button
: "→ [Download]"
  download_hover
: "Click to download the latest version!"
 
Code (YAML):

# ===============================================================
#                       Global Settings
# ===============================================================
settings
:
  # Language Selection
  # Supported: en (English), vi (Vietnamese)
  language
: en

  # Debug Mode (for printing debug messages to console)
  debug
: false

  # Data Persistence Interval
  # 20 ticks = 1 second, default: 5 minutes
  save-interval
: 6000

# ===============================================================
#                      Spawner Core Mechanics
# ===============================================================
spawner
:
  # Spawner Configuration
  default-entity
: PIG
  min-mobs
: 1                 # Minimum mob spawn count
  max-mobs
: 4                 # Maximum mob spawn count
  range
: 16                   # Player proximity for activation (blocks)
  delay
: 600                   # Base spawn delay (ticks) - 30 seconds

  # Resource Management
  max-storage-pages
: 1         # Storage page(s) per spawner (1 page = 45 slots)
  max-stored-exp
: 1000         # Maximum storable experience points
  max-stack-size
: 1000         # Maximum spawner stack size

  # Advanced Features
  allow-exp-mending
: true     # Repair items using stored experience
  allow-toggle-equipment-drops
: true
  allow-grief
: false           # Prevent explosions destroying spawners
  activate-on-place
: true     # Immediate spawner activation

# ===============================================================
#                   Spawner Breaking Mechanics
# ===============================================================
spawner-break
:
  enabled
: true

  # Permitted Breaking Tools
  required-tools
:
   - IRON_PICKAXE
    - GOLDEN_PICKAXE
    - DIAMOND_PICKAXE
    - NETHERITE_PICKAXE

  # Breaking Penalties
  durability-loss-per-spawner
: 1

  # Silk Touch Requirements
  silk-touch
:
    required
: true
    level
: 1

  # Dropping Configurations
  drop-stack
:
    amount
: 64   # Maximum dropped items per break

# ===============================================================
#                     Economic Integration
# ===============================================================

# Available options: disabled, EconomyShopGUI, EconomyShopGUI-Premium
shop-integration
: EconomyShopGUI

# Supported currencies: ITEM, LEVELS, EXP, VAULT, PLAYER_POINTS
# Formating price with currency symbol: k, m, b, t (for VAULT only)
formated-price
: true

tax
:
  enabled
: false
  rate
: 10.0   # % tax on sales

# ===============================================================
#                  Hopper Mechanics (Experimental)
# ===============================================================
# Not recommended for large servers
hopper
:
  enabled
: false
  items-per-transfer
: 1
  check-interval
: 20

# ===============================================================
#                   Performance Optimizations
# ===============================================================
performance
:
  # Batch Processing for Mob Drops
  # Higher values = more consistent, lower resource usage
  batch-size
: 3

# ===============================================================
#                     Plugin Update Checker
# ===============================================================
update-checker
:
  enabled
: true
  check-interval
: 24           # Hours between update checks
  notify-ops
: true             # Alert server operators
  notify-on-join
: true         # Notify on server entry (for players have update permission)
 

Commands: Aliases: /ss, /spawner, /smartspawner
  • /smartspawner reload: Reload the SmartSpawner plugin settings.
  • /smartspawner give <player> <mobtype> <amount>: Gives a spawner to a player or yourself.
  • /smartspawner list: Opens the spawner list GUI for admin management
Permissions:
  • smartspawner.reload - Reloads the plugin (default: OP).
  • smartspawner.give - Allow giving spawners to yourself or other players (default: OP).
  • smartspawner.list - Allows accessing the spawner list command (default: OP)
  • smartspawner.stack - Allows stacking in the GUI or by right-click (default: true).
  • smartspawner.changetype - Permits spawner type changes using spawn eggs (default: true).
  • smartspawner.break - Allows players to break spawners (default: true).
  • smartspawner.sellall - Allows selling items in the spawner storage GUI (default: true).
Important:
Since this is my first plugin, there may be bugs. Please report any issues directly on my Discord server instead of posting them in the review section. [ Discord Server Link]
Resource Information
Author:
----------
Total Downloads: 1,019
First Release: Nov 11, 2024
Last Update: Nov 30, 2024
Category: ---------------
All-Time Rating:
6 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings