Fixed or added several broken inventories.

Added GlowInventory#getRawSlots() to handle a protocol special case.
Changed TEContainer to take an inventory rather than an inventory type.
Adds or fixes enchantment tables, anvils, brewing stands, furnaces,
workbenches, dispensers, droppers, and hoppers.
25 files changed
tree: b80898e7ec3c90122f7b297251e7fa67bf41f013
  1. .gitattributes
  2. .gitignore
  3. .travis.yml
  4. CONTRIBUTING.md
  5. LICENSE
  6. README.md
  7. build.gradle
  8. etc/
  9. gradle/wrapper/
  10. gradlew
  11. gradlew.bat
  12. settings.gradle
  13. src/
README.md

Glowstone

Introduction

Glowstone is a lightweight, from scratch, open source Minecraft server written in Java that supports plugins written for the Bukkit API.

The main goals of the project are to provide a lightweight implementation of the Bukkit API and Minecraft server where exact vanilla functionality is not needed or higher performance is desired than the official software can deliver. Glowstone makes use of a thread-per-world model and performs synchronization only when necessitated by the Bukkit API.

Features

Glowstone has a few key advantages over CraftBukkit:

  • It is 100% open source. While CraftBukkit and most other mods are open source, they rely on decompiled Minecraft source code. Glowstone's code is completely original.
  • Because of this, it is easy to contribute to Glowstone's development. The barrier of entry to contributions is lower because there is no need to work around decompiled source or maintain a minimal diff.
  • Glowstone supports all plugins written for the Bukkit API natively. In practice, some plugins may try to make use of parts of the API which are not yet implemented, but in a completed state Glowstone would support all plugins.
  • Glowstone's simplicity affords it a performance improvement over CraftBukkit and other servers, making it especially suited for situations where a large amount of players must be supported but Vanilla game features are not needed.

However, there are several drawbacks:

  • Glowstone is not finished. Nothing is guaranteed to work, though many things are likely to. If in doubt, ask in #glowstone.
  • Vanilla survival features are entirely absent (mobs, hunger, health, so on). Glowstone cannot yet replicate a vanilla survival environment. These will be added over time.
  • Bukkit plugins which expect the presence of CraftBukkit-specific code (that in the org.bukkit.craftbukkit or net.minecraft.server packages) will not work on Glowstone unless they are designed to fail gracefully.
  • Glowstone is not produced by the Bukkit team, and while we do make an effort to produce quality work, Glowstone does not undergo the same rigorious testing as the Bukkit project.

Some of the key features that have been implemented are:

  • World loading, saving, and streaming to players.
  • Player interaction with the world (building, digging).
  • Somewhat-complete inventory support.
  • A simple world generator (support for others through Bukkit).
  • World weather (rain, thunder/lightning).
  • Op, ban, IP ban, and whitelist support.
  • Many of the advanced API features of Bukkit.

Building and Running

Glowstone can be built with the Java Development Kit and Gradle. The command gradlew will build Glowstone and put the final jar in build/distributions/. Other tasks are listed under gradlew tasks. A local installation of Gradle can be used instead if desired.

Running Glowstone is simple because its dependencies are shaded into the output jar at compile time. Simply execute java -jar glowstone.jar along with any extra JVM options desired.

By default, configuration is stored in the config/ subdirectory and logs are stored in the logs/ subdirectory. The main configuration file is config/glowstone.yml, which replaces CraftBukkit‘s server.properties and bukkit.yml. Settings from these two files will be copied over to Glowstone’s configuration during the default configuration generation process.

Glowstone uses JLine for console input and colored console output. The JLine console can be disabled in the configuration if a flat console is desired.

Docs and Support

All support inquiries should be directed to the IRC channel #glowstone on EsperNet (irc.esper.net). You can access that using the button below.

Visit our IRC channel

User and contributor documentation and other articles can be found on the GitHub wiki. Javadocs can be generated by using the gradle javadoc command and are placed in the build/docs/javadoc/ directory, but these are incomplete in some places and in general the code is the best reference.

For documentation on the Bukkit API (which is used to write plugins), see the Bukkit Javadocs.

Credits

Copyright

Glowstone is open-source software released under the MIT license. Please see the LICENSE file for details.