SkyBukkit
SkyBukkit
General
SkyBukkit seamlessly brings SkyBlock to Bukkit servers. It allows players to easily and effectively play SkyBlock alone or with their friends on any Bukkit server, even when a survival world already exists.
For example, on a standard Bukkit server, a player might decide that he has had enough survival gameplay for the day. By simply typing “/island home” the player can teleport to his completely-separate SkyBlock and get to work there. Furthermore, the player would automatically have his inventory, armor, xp, hunger, health, saturation and exhaustion switched, just like he had logged onto another, SkyBlock-dedicated, server.
This same player could then just use “/island spawn” to jump right back into his normal survival environment, while all of his items, etc. are switched back.
While plugins like this do already exist, they all have far fewer features and those projects are outdated with their authors vanished off of the face of the earth. This project attempts to remedy the problem, while offering a server experience like no other.
This plugin has been re-written completely from scratch to achieve maximum performance and compatibility on Bukkit servers.
News
SkyBukkit Release v0.6.0
Release v0.6.0 contains a number of accessibility fixes.
SkyBukkit Release v0.5.14
Release v0.5.14 removes some super-hacky CB-dependant code, amoung other things.
SkyBukkit Release v0.5.13
Release v0.5.13 contains serveral technical fixes as well as some anti-cheat item duplicaiton protection.
Use
Prerequisites
SkyBukkit depends on WorldGuard for it's island protection ability. Please ensure you have it (and WorldEdit, which WorldGuard depends on) installed.
You are also probably going to want to install a plugin like MultiVerse, which will allow you to create a separate world for SkyBlock instances.
PLEASE NOTE: It is highly inadvisable to make your SkyBukkit world an existing survival world. If you do, it will create a host of problems, for example:
- When a player creates a SkyBlock, a giant area of land will become un-editable by other players, as it infringes on their protected SkyBlock land area.
- When a player deletes a SkyBlock, a giant area of land from sky to bedrock will be deleted, creating a massive void pit.
Instead, a separate world should be created (using a plugin similar to MultiVerse) which is using the cleanroom world generator.
Introduction
Simply place the plugin in the standard Bukkit plugin directory and it will automatically generate its configuration the next time the server is run. The default configuration is fine for normal use, but feel free to tweak it for a unique server experience (all available options are available below).
Players simply use “/island create” to create their own SkyBlock instance. They are automatically teleported to their new island and their inventory is switched for them. To delete or replace the SkyBlock they use “/island destroy” or "/island replace" respectively.
Say a player wanted to invite his friend over to his SkyBlock so they could play together. Said player would use a party. Just by typing “/island invite <friend>” they can create a new party and invite the friend to join. The friend would accept or decline the invitation be using “/island accept” or “/island decline”, respectively. The friend could leave at any time with “/island leave”.
That is just a snapshot of all available commands. They, with their accompanying descriptions and permission nodes, can be found further down.
Configuration
Please Note: All of the below configuration options are compulsory. If any are omitted, they will be re-generated next time the server starts.
Name | Default | Description |
---|---|---|
center: x: | 0 | X co-ordinate of where the center island should be placed. |
center: z: | 0 | Z co-ordinate of where the center island should be placed. |
pvpEnabled: | false | Whether or not PVP is allows on islands. |
switchInventories: | true | Whether or not SkyBukkit will auto-switch inventories. |
world: | world | Name of the world where the islands should be stored. |
partyMaxSize: | 0 | The maximum number of players allowed in a single party if INF (0) |
islandHeight: | 128 | Y co-ordinate of where newly-generated islands should be placed. |
islandSpacing: | 120 | Distance between generated islands. |
islandSize: | 100 | Size of the protection “bubble” between SkyBlocks. |
items: | (LIST) | List of all items in the SkyBlock chest. |
items: id: | (INTEGER) | ID of an item in the chest. |
items: dmg: | (INTEGER) | Damage value of an item in the chest. |
items: qty: | (INTEGER) | Quantity of an item in the chest. |
A sample configuration file containing the default values can be found below:
center: x: 0 z: 0 pvpEnabled: false switchInventories: true world: world partyMaxSize: 0 islandHeight: 160 islandSpacing: 120 islandSize: 100 items: - id: 287 dmg: 0 qty: 12 - id: 327 dmg: 0 qty: 1 - id: 352 dmg: 0 qty: 1 - id: 338 dmg: 0 qty: 1 - id: 40 dmg: 0 qty: 1 - id: 79 dmg: 0 qty: 2 - id: 361 dmg: 0 qty: 1 - id: 39 dmg: 0 qty: 1 - id: 360 dmg: 0 qty: 1 - id: 81 dmg: 0 qty: 1 - id: 323 dmg: 0 qty: 1
Commands
Please Note: Wildcard *s are valid in permission nodes. Commands may also be prefixed with the alias /is instead of /island.
Command | Permission | Description |
---|---|---|
/island create | skybukkit.island.create | Create a new SkyBlock. |
/island destroy | skybukkit.island.destroy | Destroy your current SkyBlock. |
/island replace | skybukkit.island.replace | Replace your current SkyBlock. |
/island home | skybukkit.tp.home | Teleport to your SkyBlock, and save your inventory. |
/island spawn | skybukkit.tp.spawn | Teleport to the main world, restoring your inventory. |
/island invite <player> | skybukkit.party.invite | Invite <player> to your SkyBlock, creating a party. |
/island kick <player> | skybukkit.party.kick | Kick <player> from your party. |
/island promote <player> | skybukkit.party.promote | Make <player> the party leader. |
/island accept | skybukkit.party.accept | Accept a pending invitation. |
/island decline | skybukkit.party.decline | Decline a pending inviation. |
/island leave | skybukkit.party.leave | Leave your current party. |
/island leader | skybukkit.party.leader | Display your party leader. |
/island members | skybukkit.party.members | Display your party's members. |
/island admin destroy <player> | skybukkit.admin.destroy | Destroy <player>'s SkyBlock. |
/island admin tp <player> | skybukkit.admin.tp | Teleport to <player>'s SkyBlock. |
/island help | N/A | Display this help message. |
Download
The latest plugin build can be downloaded here.
Latest Changes
Features
- More feedback towards players when using commands or playing
- Perform check when issuing /island home
- Resend Chunks When an Island is created/destroyed.
- Extreme Server Tick Lag. Do the "heavy-lifting" in a worker.
- Max Players per Party
- Configurable Items and Quantities
- Option to disable inventory management
- Added /is command alias
- Shortened all "/island party *" commands to just "/island *"
- Deny disallowed players entry
- /island world -> /island spawn
- Leave the sky when you use /island leave
- Go to the sky when you use /island accept
- Inform implicitly promoted players that they have been promoted
- Inform party members when a member leaves their party
- Inform promoted players that they have been promoted
Bug Fixes
- Enabled maven resource filtering for plugin.yml
- Removed super hacky cb refs
- Changed pom
- Fixed maven dependancies
- Fixed a fatal island creation bug
- Fixed an entity removal bug
- Fixed an island protection bug
- Fixed an island respawning bug
- Fixed another island respawning bug
- Fixed a island creation tick lag bug
- Fixed teleportation and other random bugs
- Fixed protection regions not being removed
- Save WG Regions
- Fixed syntax errors
- Fixed potential CCE
- Made config error messages more user-friendly
- Spelling error correction
- Fixed Deserialization NPE
- Fixed Island Un-Protection Exceptions
- Made party max sizes work
- Fixed another NPE
- Fix docs
- Fixed party commands
- Fixed NPE
- Fixed spelling
- Properly color player names
Planned Features
v1.0.0
SkyBukkit is in a preliminary phase, so please feel free to file a ticket for any feature requests you may have.
How Can I Help?
The plugin is developed solely by me in my free time so:
- If you are a developer would like to contribute to this project, or any of my other projects, please PM me or email me at [email protected].
- If you are a not developer but would still like to contribute somehow, please consider donating. Donations are highly valued and much appreciated.
About
Developer: Keeley Hoek (escortkeel)
@escortkeel I thing the best way to solve it is use (along to multiverse) Multiverse-inventories. I'm using it to survival and creative worlds and it's great, no bugs.
I think the option "switchInventories: false" should disable leaving event in command /is world (or spawn...) so just teleport to spawn and if you want to use /is home, it teleport you to the place, where it should! (to the world in setting and coordinates - for example Skyblock 120/160/120).
I'm not a plugin developer, I just thinking like admin of minecraft server :) and sorry for my English
On a side note you can't have 2 plugins controlling spawning this is why most of you are having trouble with the spawning.
If you are going to use Essentials spawn which really is not advisable if your using Multiverse and you wish to use a plugin like this you will need to set in the essentials config.yml the spawn priority setting to highest to force it to take control. Even then you will need to go into the MV-Core config.yml file and change firstspawnoverride: 'false' and set the correct option here firstspawnworld: world . Also in the MV worlds.yml file each world has this option respawnWorld: ''" Set this appropriately.
As has been noted until /sethome is used on creation of the island and /delhome on destroying probs will arise but this is an easy fix. I am putting my faith in keeley and I'd advise others do as it will be worth waiting a little more time.
For people who say that's to much effort good luck in finding an alternative as even the alternatives which may be slightly ahead of development work in exactly the same way.
Regards
Relicum
@escortkeel
The best way around this is fairly simple, no need for an external plugin, in the bukkit.yml file you can create your own aliases details can be found here. Each persons case is different but say you want the /spawn command to be executed my multiverse you could do the following in the bukkit.yml
aliases:
spawn: mvspawn
This cannot be overwritten if place here now if you run /spawn you will en-fact be running /mvspawn you will need to give standard users the appropriate MV permission. You will also need a proper understanding on how MV spawn works. Each persons set up our different from each other which is half the problem.
I am currently working with Keeley on all of the issues people have mentioned and sure within the not to distance feature all of the issues raised will of been fixed, I am only assisting keeley to do real-time bug testing as he writes the code so that future releases will have fewer bugs. But only Keeley can give you a final date on this. But in the mean time I am more than happy to offer help for very temporary work arounds until the next release is out. PM if you like.
@shadvalentine
Ok sure. :) In the next update there will be a protectIslands: option. :)
@shadvalentine
Animals can't spawn on islands when they are created.
@GlabbichRulz
Sure! Epic idea.
@GlabbichRulz
Detecting when another plugin teleports a player is impossible. Plugins exist which allow you to create command aliases. You should map /is spawn to /spawn using one of these plugins.
@DJTomek
The problem with allowing other commands to work is that it causes inventory management to stuff up and allows players to cheat and get items from survival/creative worlds. If you have any suggestions for how to fix this I would be happy to listen. ;)
That said, I am definitely going to allow other commands to work when inventory management is disabled.
@Skylord_Namis
You haven't set it up correctly.
It works with another world (I have a Survival and Creative along with Skyblock) but problem is, when you teleport to another world with another command then /is spawn (for example spawn, warp, home) you can't get back to this world... only if you set home, warp or similar... I want to know, will be there update or I should find another one?...
i want to try this but i think i'll wait till i see less error comments on this page and i can find some detailed instructions on integrating this with a server thats already running without messin up my existing spawn world :s
Plugin aint workin
Won t even show up on /plugins
Eh best of luck I found another one that works with essentials. I worked all night with this sorry man.
It forgets where you are if you go back and forth a bunch of times, much like when you are setting the world up. Essentials is probably the only plugin you should work around if you choose not to work around any plugins...
Now I could fix this with command signs but /island admin tp player doesnt work. It says invalid command syntax. Do you want support tickets for these?
/island admin tp or destroy doesn't work... as say @GlabbichRulz island world doesnt work... /spawn with essentials don't tell to skybukkit the player isn't on island - why so many errors?!
Hey man looking good so far. trying to work around some kinks. I have found ways around the /spawn thing but /island home tells me I am already in the sky no matter what world I am in.
Anyway, thanks for your support and a great plugin. -Ruphies
Also the description is wrong! Its /is spawn, not /is world, permission is skybukkit.tp.spawn, not skybukkit.tp.world
@Koowluh
Jep, but the users already know "/spawn" and they would be asking how they can tp home all the time.
Also, Server Restarts or /tphere can teleport them to other worlds.
@GlabbichRulz
I'm also having this issue.
@GlabbichRulz
You could just disable all other commands but the ones from Skybukkit per world. It's what we did.
I personally don't think a plugin developper should concern himself/herself too much with the intereraction of other plugins. If you as a developper had to concern yourself with each and every plugin out there, you'd be a busy bee.