Skip to content

PySpigot

A Python scripting engine for your Minecraft server.

GitHub release (latest by date) Latest snapshot Develop GitHub commits since latest stable release (by SemVer)

What is PySpigot?

PySpigot is a Spigot/Bukkit plugin that acts as a Python scripting engine that runs in Minecraft. Users can write Python scripts, which, for lack of a better term, act as "mini-plugins". Because PySpigot runs entirely in the Minecraft environment on Java, scripts have access to the full server, including the entire Bukkit API, as well as the APIs of other plugins. With PySpigot, you can write a script that does the exact same thing a plugin can but in a small fraction of the time. PySpigot is also excellent for individuals who know Python, but not Java. PySpigot is a lot like Skript, but much more powerful.

What Can PySpigot Do?

  • Write Scripts Quickly, in Python


    PySpigot scripts can do all the same things that a plugin can do. However, PySpigot scripts can be written in a fraction of the time it takes to write a full plugin.

    PySpigot is also great for people who know Python, but not Java - no Java experience is required!

  • Easy to Use


    PySpigot's features are designed with ease of use in mind. It is easy to use for simple tasks, but you can also create really complex scripts. The possibilities are endless!

  • Unrestricted Bukkit API Access


    Because PySpigot runs inside of the Minecraft/Java environment, PySpigot scripts have complete access to the Bukkit/Spigot API.

    Register event listeners, create commands, schedule tasks, work with config files, and more!

  • Comprehensive Error Logging


    PySpigot includes comprehensive error logging on a per-script basis, both to console and to a script-specific log file, making debugging as easy as possible.

  • Full Support for External Java/Python Libraries


    PySpigot includes full support for loading and working with external libraries such as the Apache Commons libraries.

  • Highly Configurable


    PySpigot was designed to be as configurable as possible. There are several editable script-specific options, as well as a variety of plugin-wide options that can be configured.

  • Full MySQL, MongoDB, and Redis Support


    PySpigot includes support for MySQL, MongoDB, and Redis and greatly simplifies these

  • Full ProtocolLib Support


    PySpigot has built-in support for ProtocolLib, making it easy to work with packets. There is full support for registering packet listeners, packet modification, and sending packets.

  • Full PlaceholderAPI Support


    PySpigot also has built-in support for PlaceholderAPI, making it easy to register placeholder expansions.

  • Open Source, Apache 2.0 License


    PySpigot's source is fully available on GitHub, and it's licensed under the Apache 2.0 license.

  • And More!


    I am constantly working on new features and improvements to make scripting in Minecraft the best possible experience.

    Ideas are always welcome. If you have an idea for a new feature, submit a feature request.

Examples

Check out any of the examples to see some examples of PySpigot scripts.

Getting Started

See the Quick Start Guide for a brief tutorial. Check out the rest of the documentation for more advanced usage.

Discord

PySpigot has an official Discord server with help channels, bug reporting, and more. I'm usually active on Discord, so if you want to reach me, joining the Discord server is an excellent way to do so. Join the Discord server here.

Metrics

PySpigot uses bStats to collect anonymous usage data for PySpigot. I use these data to inform me about PySpigot's users, including which country they are from (so that I can offer support in popular non-English languages) as well as what Minecraft and Java versions are most popular with users. bStats also collects some other useful data, including server software (Spigot, Paper, Purpur, etc.), plugin version, and number of scripts loaded. Sensitive or identifying information is not collected.

If you would like to opt out of this feature, set metrics-enabled to false in PySpigot's config file. Alternatively, you can disable bStats server-wide by setting enabled to false in /plugins/bStats/config.yml.

Licensing Information

PySpigot is licensed using the Apache 2.0 license. Please check out the License Info page for more information.