Nucleus released this version on Feb 14, 2017

3.2 MB

Nucleus 0.23.0 is available for Sponge API 5.1 and Sponge API 6-SNAPSHOT. Documentation can be found at http://nucleuspowered.org/docs (command and permission references should already be up to date).

Note that there are now two builds for Nucleus. This is the build for 1.10.2

NucleusMixins, an optional companion plugin for Nucleus, is available for Sponge API 5 (Minecraft 1.10.2) servers, and will provide a workaround for /invsee not working as intended, and enhanced world generation by hooking into Minecraft internals (known as “NMS” to some players). It is entirely optional, and may not work on heavily modded servers. If you wish to turn off either the /invsee or enhanced world generation mixins, you can do so by setting the relavent option in mixins.conf.

If you’re having trouble, visit our Discord channel: https://discord.gg/MC2mAuS

Important Changes & Notices

Changes to the internal data handlers

The big change for 0.23 is the way the data files are read and written. Server owners do not need to care about this, but please consider taking a backup of the /nucleus data folder before updating.

Permission changes: other becomes others

Some commands have permissions that allow you to act upon others. There was a horrible mix of *.other and *.others permissions - this has been rationalised and now, the standard suffix for targetting others is *.others. This might break some permission setups, but this allows for better consistency going forward.

New Features

Descriptions for Warps and Warp Categories

Warp categories now have descriptions and display names, which also accept colour codes. They will be displayed on the /warps list, and can be managed using the following commands.

  • /warp category list - lists all categories
  • /warp category setdisplayname [category] [& encoded name] - sets a display name for a category.
  • /warp category setdescription [category] [& encoded description] - sets a description for a category.
  • /warp category removedisplayname [category] - removes the display name for a category.
  • /warp category removedescription [category] - removes the description for a category.

Running the following commands for my “test” category:

  • /warp category setdisplayname test "&4Test &7Category"
  • /warp category setdescription test "&bThis is a &ltest description"

gives me the following.


Warps can also have their own description, but for space reasons, these descriptions will be put into the hover that appears when you hover over a warp link. They can be set using the following command (or use -r to remove the description):

  • /warp setdescription [-r] [warp] [& encoded description]

So, on my warp “hello2”, I could run the command /warp setdescription hello2 "This is the warp location &awhere you will be greeted with a sunny disposition and a gentle wave of a hand!" to get:


Console can now bypass exemption permissions

In main.conf, a new option has been added: core.console-overrides-exemptions. This defaults to true - the console now has permission to override a player’s specific exemption permissions (such as ban exemptions, etc.). If you would rather the console did not have these permissions (for those of you that might share the console), you can set this to false to retain original behaviour.

Updates to staff chat

Staff chat is now consistent whether you use /sc to toggle or /sc message to send a one-off message. Server owners can now control whether staff chat is formatted like Nucleus chat or not by setting the option staff-chat.include-standard-chat-formatting

/tppos to chunks!

/tppos now has a -c flag, which, if specified, will let you teleport to a specified chunk. Usage: /tppos -c <chunk co-ords>.

Selecting ALL the selectors!

@a will be pleased to know that you can now use standard Minecraft selectors in more Nucleus commands - including those that allowed you to use a nickname! However, I have removed individual permission support for each selector type - if you can target a player, you can use a selector (unless Sponge restricts it in some way, I’m not sure).

A side effect is that /lightning and /kill also accept the @e selector.

Any Nucleus selectors you were using will no longer function if they look different to Minecraft’s selectors.

Presets (WorldArchetypes) in /world create

By using the -p flag, you can now specify a preset world type - to create a void world, you can now run /world create -p the_void <name>, and to create a skylands world, /world create -p the_skylands <name>. Other presets might be available.

/ban and /seen by UUID.

You can now ban a player, or look up their info, by using a UUID as the argument.

Sprucing up the usage/help window

Subcommands and command arguments are now separate. Subcommands can be clicked to suggest the command, or shift clicked to suggest the help command.


Any command that is simply a parent for subcommand (like /world) will now display this usage instead of the old error message.


This separation will make its way to the docs site shortly.

Developers - API updates

Repository: ‘http://repo.drnaylor.co.uk/artifactory/list/minecraft’. Dependency (1.10.2): ‘io.github.nucleuspowered:nucleus-api:0.23.0-S5.1’ Dependency (1.11.2): ‘io.github.nucleuspowered:nucleus-api:0.23.0-S6.0’

Javadocs: http://jd.nucleuspowered.org/

Please note that any interface ending in the word Service is obtainable during GamePostInitializationEvent (on orders of EARLY or later), or at any point past this.

Updated: NucleusMessageTokenService (Text Token API)

I realised that it was somewhat unfair of me to relegate plugins to a “second class” token (like {{pl:nucleus:token}}, so I’ve added a way to add what I call primary tokens. Now, you can register IDs with the NucleusMessageTokenService. Register your token provider like normal, use registerPrimaryToken to register your preferred alias! So, if you register token for your plugin with id plugin and identifier token, {{token}} becomes an alias for {{pl:plugin:token}}.

You can also account for variables too. If you register {{token}}, you will also recieve any token that starts with {{token| - so {{token|data}} will be translated to {{pl:plugin:token|data}}, and your TokenParser will recieve token|data.

Updated: Warp API

Addition of Warp Category methods

New methods have been added to the NucleusWarpService to allow developers to access the warp/warp category descriptions and display names.

Notice of Deprecation

The following previously marked Stable methods on NucleusWarpService have been deprecated. They will be removed in a future version of Nucleus.

  • Map<String, List<Warp>> getCategorisedWarps()
  • Map<String, List<Warp>> getCategorisedWarps(Predicate<Warp>)

Their replacements are as follows:

  • Map<WarpCategory, List<Warp>> getWarpsWithCategories()
  • Map<WarpCategory, List<Warp>> getWarpsWithCategories(Predicate<Warp>)


The AFK API has two components


This service allows plugins to probe information about a player’s AFK status, when their last activity was, and whether or not they can go AFK or be kicked.

AFK Events

There are events to monitor when a player goes AFK, returns from AFK, and when they are about to be kicked for being inactive for too long.

New: Server Shop API

The NucleusServerShopService allows you to get the current buy and sell prices for items you specify.

Minor updates

  • Added API: NucleusNoIgnoreChannel - any channel that implements this interface will not be processed by the ignore module - that is, these messages cannot be ignored.
  • Updated API: NucleusNoFormatChannel - there are now two functions that controls what the chat module will do with the messages.

Minor Changes & Enhancements

  • First join date is now viewable on /seen even if the player is offline.
  • Enable tab completion of player names in /bc, /sc, /me
  • Add others permission to /tppos
  • Added namestyle option for usernames, works in the same way as chatstyle.
  • Make it more obvious when startup fails due to a config error.
  • All negative weights for /list groups
  • Add ability to disable commands intended for specific implementations of Sponge.
  • Allow tab completion of user names in /me, /bc, /sc.


  • /me and /sc now let you use double quote marks in messages.
  • Prevent flying on world switch if the player does not have permission in the new world.
  • If enabled, force first spawn location on tick after join - fixing issues where a player might not spawn in the expected place when they join for the first time.
  • /kickall now actually supports -w for whitelisting a server.

Known Issues

  • /invsee does not work unless you are within 8 blocks of the target player. Use NucleusMixins to workaround this - though this currently doesn’t work for some heavily modded servers (#506). If you have more information, please add it there.
  • Some players are finding that enhanced pre-generation isn’t giving output (#528). This will work fine in 1.11.x.
  • Sometimes, an incorrect custom prefix might be selected. Nucleus uses whatever the permission plugin hands back, check your inheritance with the permissions plugin.

Commit History


Note that there are now two downloads for Sponge 5/1.10.2 servers. The mixinplugin is optional, but recommended, particularly for vanilla servers.