{"id":127202,"date":"2026-06-07T14:34:14","date_gmt":"2026-06-07T11:34:14","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/"},"modified":"2026-06-07T14:34:14","modified_gmt":"2026-06-07T11:34:14","slug":"pyspigot","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/","title":{"rendered":"PySpigot"},"content":{"rendered":"<p># Description<\/p>\n<p>PySpigot is a Python scripting engine for your Minecraft server. It allows you to create scripts, which act as &#8220;mini-plugins&#8221;: they can register event listeners, commands, schedule tasks, and more!<\/p>\n<p>PySpigot is a lot like Skript, but **much more powerful**. PySpigot utilizes Jython, a Python implementation that runs entirely on Java. This means that PySpigot scripts have full access to the entire Bukkit\/Spigot API, as well as APIs of any other loaded plugins. In general, a PySpigot script can do anything Python can do, and anything a plugin can do as well.<\/p>\n<p>**Currently supports Bukkit server implementations, including Spigot, Paper, and Purpur, on Minecraft versions 1.16 and newer**. There is currently an unofficial, preliminary release of PySpigot for BungeeCord available for open testing. Download it here.<\/p>\n<p>For complete documentation on the plugin and writing scripts, visit the official documentation.<\/p>\n<p><\/p>\n<p align=\"center\">\n<p>    <img decoding=\"async\" src=\"https:\/\/cdn.prod.website-files.com\/6257adef93867e50d84d30e2\/636e0b5061df29d55a92d945_full_logo_blurple_RGB.svg\" width=300><\/p>\n<p>\n  <i>Join the discord for support and to stay in the loop regarding updates!<\/i>\n<\/p>\n<p># Features<\/p>\n<p>&#8211; Load scripts on server start and via commands<br \/>\n&#8211; Stop, reload, and unload server scripts via commands<br \/>\n&#8211; Support for both single-file scripts and multi-file projects<br \/>\n&#8211; Register event listeners<br \/>\n&#8211; Register commands<br \/>\n&#8211; Schedule tasks (synchronous and asynchronous)<br \/>\n&#8211; Work with config files<br \/>\n&#8211; Register ProtocolLib packet listeners and send packets<br \/>\n&#8211; Register PlaceholderAPI placeholder expansions<br \/>\n&#8211; Comprehensive logging of errors and exceptions on a per-script basis, to file<br \/>\n&#8211; Load Java libraries you&#8217;d like to work with at runtime<br \/>\n&#8211; Write scripts in Python syntax<br \/>\n&#8211; Scripts have complete access to the Bukkit\/Spigot API, as well as APIs of other plugins, so anything is possible.<br \/>\n&#8211; Support for working with SQL, Mongo, and redis servers<br \/>\n&#8211; And more!<\/p>\n<p># Commands<\/p>\n<p>&#8211; `\/pyspigot reload`: List some useful links (Documentation, Discord, etc.)<br \/>\n&#8211; `\/pyspigot info [scriptname\/projectname]`: Displays detailed information about a script or project, including uptime, registered listeners, commands, and more info<br \/>\n&#8211; `\/pyspigot listscripts`: List loaded and unloaded scripts and projects<br \/>\n&#8211; `\/pyspigot load [scriptname\/projectname]`: Load a script or project with the given name<br \/>\n&#8211; `\/pyspigot loadlibrary [libraryname]`: Load a Java library with the given name<br \/>\n&#8211; `\/pyspigot reloadall`: Reload the entire plugin, including scripts, projects, libraries, and config<br \/>\n&#8211; `\/pyspigot reload [scriptname\/projectname]`: Reload a loaded script or project<br \/>\n&#8211; `\/pyspigot reloadconfig`: Reload PySpigot&#8217;s config.yml<br \/>\n&#8211; `\/pyspigot unload [scriptname\/projectname]`: Unload a script or project<\/p>\n<p># Configuration<\/p>\n<p>&#8220;`yaml<br \/>\n# If false, will disable collection of metrics information by bStats for PySpigot. You may also disable bStats server-wide in the bStats config.yml under \/plugins\/bStats.<br \/>\nmetrics-enabled: true<br \/>\n# The delay for loading scripts (in ticks) after the server finishes loading.<br \/>\nscript-load-delay: 20<br \/>\n# List of relocation rules for libraries in the libs folder. Format as <pattern>|<relocated pattern><br \/>\nlibrary-relocations: []<br \/>\n# Date\/time format for timestamps in script log files, written in Java&#8217;s SimpleDateFormat pattern: https:\/\/docs.oracle.com\/en\/java\/javase\/11\/docs\/api\/java.base\/java\/time\/format\/DateTimeFormatter.html<br \/>\nlog-timestamp-format: &#8216;MMM dd yyyy HH:mm:ss&#8217;<br \/>\n# If true, will print log messages to console every time a script is loaded, run, and unloaded.<br \/>\nscript-action-logging: true<br \/>\n# If true, will log all redis events to the console and to a script&#8217;s logger. If false, will only log reconnect events (reconnect attempts and failures)<br \/>\nverbose-redis-logging: true<br \/>\n# If true, scripts will be automatically unloaded if a plugin the script depends on is unloaded. This is especially useful to ensure script shutdown tasks that require a depending plugin complete successfully (prior to the plugin being unloaded).<br \/>\nscript-unload-on-plugin-disable: true<br \/>\n# Options that pertain to Jython. Changing options in this section requires a server restart.<br \/>\njython-options:<br \/>\n  # If true, the Jython runtime will be initialized during plugin load\/server start. If false, the Jython runtime will not be initialized until the first script is loaded.<br \/>\n  init-on-startup: true<br \/>\n  # A list of system properties that will be passed to Jython. For a complete list, see https:\/\/javadoc.io\/doc\/org.python\/jython-standalone\/latest\/org\/python\/core\/RegistryKey.html<br \/>\n  properties:<br \/>\n    &#8211; &#8216;python.cachedir.skip=true&#8217;<br \/>\n  # A list of args to pass to Jython when initialized. Equivalent to sys.argv in Python.<br \/>\n  args:<br \/>\n    &#8211; &#8221;<br \/>\n# Default values for script options. If one or more options are not defined in the script_options.yml for the script, then PySpigot will fall back to these values.<br \/>\nscript-option-defaults:<br \/>\n  # For projects, the main script file for the project.<br \/>\n  main: &#8216;main.py&#8217;<br \/>\n  # Whether the script is enabled<br \/>\n  enabled: true<br \/>\n  # An integer load priority for the script<br \/>\n  load-priority: 1<br \/>\n  # A list of plugins the script depends on<br \/>\n  plugin-depend: []<br \/>\n  # Whether script log messages should be logged to its respective log file<br \/>\n  file-logging-enabled: true<br \/>\n  # The minimum level to log to the console and to the script&#8217;s log file<br \/>\n  min-logging-level: &#8216;INFO&#8217;<br \/>\n  # The default permission level for permissions<br \/>\n  permission-default: &#8216;op&#8217;<br \/>\n# Advanced debug options for scripts<br \/>\ndebug-options:<br \/>\n  # If true, will print stack traces for all script-related exceptions to the server console<br \/>\n  print-stack-traces: false<br \/>\n  # If true, the plugin will show messages in console and on join (to players with the permission pyspigot.admin) when a newer version of PySpigot is available to download on spigotmc.org.<br \/>\n  show-update-messages: true<br \/>\n  # The logging level for Jython internals. Can be useful to set this to FINE or ALL for debugging purposes. Note: the server&#8217;s root logger will also need to be configured to accept debug messages for Jython&#8217;s debug messages to show.<br \/>\n  jython-logging-level: &#8216;INFO&#8217;<br \/>\n  # If true, PySpigot will patch the threading module on script unload (if it&#8217;s being used in the script) in order to prevent the server from hanging. For more information, see https:\/\/github.com\/magicmq\/pyspigot\/issues\/18#issue-3012022678<br \/>\n  patch-threading: true<br \/>\n&#8220;`<\/p>\n<p># Some Helpful Links<\/p>\n<p>&#8211; Complete documentation: https:\/\/pyspigot-docs.magicmq.dev<br \/>\n&#8211; Source code: https:\/\/github.com\/magicmq\/pyspigot<br \/>\n&#8211; For developers, check out PySpigot&#8217;s Javadocs here: https:\/\/javadocs.magicmq.dev\/pyspigot\/<\/p>\n<p># Metrics<\/p>\n<p>PySpigot collects anonymous server statistics via bStats, an open-source statistics collection service for Minecraft servers. You may opt out of this feature in the PySpigot `config.yml` or in `\/plugins\/bStats\/config.yml`.<\/p>\n<p>\n<img decoding=\"async\" src=\"https:\/\/bstats.org\/signatures\/bukkit\/PySpigot.svg\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Python scripting engine (plugin) for Minecraft servers running Bukkit or one of its forks (Spigot, Paper, etc.).<\/p>\n","protected":false},"featured_media":127203,"template":"","meta":{"_minecraft_slug":"pyspigot","_minecraft_project_id":"G91y7RYh","_minecraft_author":"magicmq","_minecraft_license":"Apache-2.0","_minecraft_downloads":1352,"_minecraft_follows":20,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"pyspigot.zip","_minecraft_size_bytes":278807519,"_minecraft_version_count":8,"_minecraft_updated_at":"2026-05-16T07:34:55.324537Z","_minecraft_date_created":"2025-01-06T07:15:33.826307Z","_minecraft_date_modified":"2025-07-27T20:44:53.864874Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/pyspigot","_minecraft_icon_attachment_id":127203,"_minecraft_imported_at":"2026-06-07T11:34:15+00:00","_minecraft_import_hash":"feda6aaf3b7d07fc8e5325113093e9ee","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[87,124,894,43,156,844,88,85,89,873,122,126,137,90,127,128,129,91,123,869,92],"mod_loader":[130,132,133,134],"minecraft_version":[118,119,120,46,47,48,49,50,51,52,53,54,55,56,57,58,59,36,60,93,94,101,102,62,37,73,74,38,78,79,80,81],"class_list":["post-127202","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-adventure","mod_category-bukkit","mod_category-bungeecord","mod_category-cursed","mod_category-decoration","mod_category-economy","mod_category-equipment","mod_category-food","mod_category-game-mechanics","mod_category-library","mod_category-magic","mod_category-management","mod_category-mobs","mod_category-optimization","mod_category-paper","mod_category-purpur","mod_category-spigot","mod_category-storage","mod_category-technology","mod_category-transportation","mod_category-utility","mod_loader-bukkit","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-16","minecraft_version-1-16-1","minecraft_version-1-16-2","minecraft_version-1-16-3","minecraft_version-1-16-4","minecraft_version-1-16-5","minecraft_version-1-17","minecraft_version-1-17-1","minecraft_version-1-18","minecraft_version-1-18-1","minecraft_version-1-18-2","minecraft_version-1-19","minecraft_version-1-19-1","minecraft_version-1-19-2","minecraft_version-1-19-3","minecraft_version-1-19-4","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PySpigot - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PySpigot - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A Python scripting engine (plugin) for Minecraft servers running Bukkit or one of its forks (Spigot, Paper, etc.).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.prod.website-files.com\/6257adef93867e50d84d30e2\/636e0b5061df29d55a92d945_full_logo_blurple_RGB.svg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/\",\"name\":\"PySpigot - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp\",\"datePublished\":\"2026-06-07T11:34:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/pyspigot\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PySpigot\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PySpigot - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/","og_locale":"en_US","og_type":"article","og_title":"PySpigot - Minecraft","og_description":"A Python scripting engine (plugin) for Minecraft servers running Bukkit or one of its forks (Spigot, Paper, etc.).","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/cdn.prod.website-files.com\/6257adef93867e50d84d30e2\/636e0b5061df29d55a92d945_full_logo_blurple_RGB.svg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/","name":"PySpigot - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp","datePublished":"2026-06-07T11:34:14+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/pyspigot-icon-62a41c3051d2d9a86f2e23cf87c913d795944918_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/pyspigot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"PySpigot"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/127202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/127203"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=127202"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=127202"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=127202"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=127202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}