SkyText
SkyText
Description
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).
Features
- 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
Dependencies
- worldedit - I highly recommend getting the latest snapshot, especially if you are running 1.7.2 as this has the latest NMS support (http://builds.enginehub.org/job/worldedit/)
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!
Setup
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
Commands
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
Config.yml
You can see an example config.yml here config.yml
Permissions
- skytext.write gives permission to write
- skytext.create gives permission to create a message group
- skytext.reload gives permission to reload from config.yml
API
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.
Changelog
- 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
TODO
- Add Undo
- Add broadcast option to skytext options (when large letters in the sky just aren't enough!)
Bugs
- 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
- Thanks to desht for the TerrainManager code, it saved me some research! :D
Cool Plugin But Can You Add More Variables Like
Yay! I Love This Plugin! :)
Work in 1.5.2?
@bojosos
Um what the hell are you trying to do? Just download the plugin and don't mess around with it?
when i type Writing.WriteText(new Location(Bukkit.getWorld("world"),100,100,100), "chicken", 0, SkyTextPlugin, 100, 1, 0); it gives me an error in SkyTextPlugin that SkyTextPlugin cannot be resloved as a variable how to fix it pls help My source: package me.bojosos.st;
import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin;
import uk.co.commonblob.SkyText.Writing;
public class SkyText extends JavaPlugin{
public void onEnable(){ SkyText SkyTextPlugin = new SkyText(); }
public void onDisable(){
} public Boolean onCommmand(CommandSender sender, Command cmd, String label , String[] args){ if(cmd.getName().equalsIgnoreCase("bojososthebest")){
Writing.WriteText(new Location(Bukkit.getWorld("world"),100,100,100), "chicken", 0, SkyTextPlugin, 100, 1, 0); } } }
Hello creator of skytext.
I think i have found a good idea for this plugin. What about so say we have a mini-game and its counting down the blocks change from 10 to 9 to 8 to 7 to 6 etc. And you could also do that for like a birthday so Happy 20th birthday then it changes to Zack or something.
Thanks please read and hopefully add it
@commonblob
Nice to see, but there's no new version so far :(
I have added a description on how this could be used by other plugins!
@RednecksFTW
I'll look into this RednecksFTW.
@darkness1999
API is coming, not far from done. I hope to have something out after Christmas.
For some reason, when I try and write text in a multiverse world other than the spawn world it does not work and gives me no error either. If you could tell me how to fix this it would be great. Thanks.
Could you please add an API soon?
@Splavacado
You can get a brief tutorial here
Can someone write an example to make a rotating text? I've done as instructed and nothing happened. This seems like it would be a cool plugin if I could see it work. Please help!
when i have time i will try it :P
Just posted 1.15 with the fixes as above.
Thanks to SBPrime for the WorldEdit advice.
@pierre53000
Ive added a basic tutorial under Pages for you.
@Aezerp
Possibly, i'll need to look into this, but I expect this is definitely possible..
@GreenGrizzlyBear
you could do a countdown with a command block, or if you can run a cmd from another plugin you can sent the countdown with /skytext 9 0 x y z world then /skytext 8 0 x y z world etc.
As for place holders. Yes, no problem, i'll add this in the next version!
@levisn1
Its supposed to measure the length required to clear. Clearly it gets it a bit wrong, i'll look into this. Thanks for letting me know
Could you add fonts?