Compatible with Bukkit 1.7.2!

SkyText is a plugin to allow you to write text in your world

using the command /skytext hello_world 0 will write hello world in blocks where you are standing. You can use this plugin to write text above your portals or just write text to sign post areas.

In v1.1+ you can now add scheduled text.

For instance, if you have a minigames area you can put text that changes between all your minigames available in the portal beneath. You could also, if other plugins allow, have countdowns to games starting.

Also, in 1.1+, you can now have text that changes based upon command blocks.

Any suggestions then please let me know, this is my first plugin (of many I hope).


  • writes text of your choosing
  • change the rotation of the text
  • Schedule text to display on server start
  • Allow changing text in a specific position


Optional dependencies

  • Vault - If you want any integration with economy, ensure you have Vault
  • Factions - If you are a factions lover, and want to integrate, ensure you have it installed!

How to install

  • download SkyText.jar and place in plugins folder
  • download worldedit from here and place in plugins folder
  • restart server
  • If you change the config, you will need to restart the server to get those changes!


No setup is required if you do not wish to have text that changes on a schedule or is linked to server start.

Brief Tutorial

Tutorial on Message Groups


Note: If you wish to have a space in your message, use the _ character

Place a message where the player is standing with a specified rotation and optional coordinates

  • /skytext <message> <rotation in degrees (0,90,180 or 270)> [x] [y] [z] [world]

From 1.15 you can also use:

  • /skytext <message> <rotation in degrees (0,90,180 or 270)> [blockid] [dataid] [x] [y] [z] [world]

Create a new message group in the config and set a default message

  • /skytext create <name_of_message_group> <message>

Add a new message to be rotated in a message group

  • /skytext set <name_of_message_group> <message>

Change message group settings (new in 1.12)

  • /skytext set <name_of_message_group> set <world|ticks|rotation|blockid|dataid|location> <value>

Reload from config.yml

  • /skytext reload


You can see an example config.yml here config.yml


  • skytext.write gives permission to write
  • skytext.create gives permission to create a message group
  • skytext.reload gives permission to reload from config.yml


A better implemented API is coming shortly, but this code works perfectly fine for now.

Add this to your OnEnable or initialisation code:

SkyText SkyTextPlugin = new SkyText();

Then wherever you wish to write text use this:

Writing.WriteText(new Location(Bukkit.getWorld("world"),100,100,100), "chicken", 0, SkyTextPlugin, 100, 1, 0);

WriteText Parameters:

  • Location is the location in the world.
  • The letters are what you want to display, in this case I picked "Chicken",
  • The angle is the rotation angle, either 0,90,180 or 270
  • Then we pass the skytext plugin into the command.
  • Then we pass the maxwidth, this is currently unused.
  • Finally we pass the blockid and the dataid.


  • 1.15
    • Breaking Change: Updated command to include optional blockid and dataid of block: /skytext <Message> <rotation> [blockid] [dataid] [x] [y] [z] [world_name]
    • Added some colours to messages to make them clearer
    • Added the following parameters:
      • %online% - The number of online players
      • %maxplayers% - The maximum amount of players allowed
      • %playername% - The name of the player running the command
      • %playerlevel% - The level of the player running the command
      • %playerlevel:PlayerName% - The level of the specified player
      • %playerbalance% - The balance of the player running the command
      • %playerbalance:PlayerName% - The level of the specified player
      • %playerpower% - The Factions Power for the player running the command
      • %playerpower:PlayerName% - The Factions Power for the specified player
      • %days:EventName% - Days until EventName happens
      • %hours:EventName% - Hours until EventName happens
      • %minutes:EventName% - Minutes until EventName happens
      • %seconds:EventName% - Seconds until EventName happens
    • Fixed compatibility problem with AWE
    • Fixed Colon not working
    • Area is no longer cleared in advance, rather as each letter is added a space is also added between letters
  • 1.14
    • Fixed crash when using the plugin when you did not have the magical default world name that I created. (*slaps self*)
  • 1.13
    • Added reload command. Use /skytext reload to reload config.yml
    • Added skytext.reload permission. Use to allow anyone to reload.
    • Removed the need for setup:true|false in the config, it will now check if the schematics are present before copying them
  • 1.12
    • Refactored code to make things a little easier to maintain (Already!?)
    • Added setting message_group settings without editing config.yml
    • Added more error checking and feedback to the player
  • 1.11
    • Now correctly clears old word of message group
    • Fixed spacing between letters
    • Fixed letter I getting skipped (if you upgrade from a previous version, set setup:false in the config.yml to regen the schematics


  • Add Undo
  • Add broadcast option to skytext options (when large letters in the sky just aren't enough!)


  • When using message groups, if one of the lines is longer than the other, the text can overlap. I would recommend using the underscore character to flesh out the text so it gets wiped. For example:
    • _hello_world_
    • how_are_you
  • Improve schematics


  • Thanks to desht for the TerrainManager code, it saved me some research! :D


Posts Quoted:
Clear All Quotes

About This Project

  • Project ID
  • Created
    Nov 5, 2013
  • Last Released File
    Dec 10, 2013
  • Total Downloads
  • License



Recent Files