Ships
Ships
Source Code - Github |
JavaDocs |
Sponge version |
Discord channel |
Translate Core |
---|
Looking for Dev builds?
Dev builds give off new features and bug fixes before they are officially released, however these features and bug fixes may not have been tested as much as a release on here
Old page:
I am testing this new page out. I am aware of some parts that are missing such as ship types, but please say if there is anything that you wish to see. I plan on making a FAQ's that includes common questions such as how to change ship requirements.
If you want to see the old page, it is here
Video tutorial
Ships 6 changes
Ships has gone through many changes, Ships 6 is the latest rewrite of the plugin. The latest rewrite fixes multiple bugs found in the root of previous versions of Ships.
Features
Moving ships
As the name of the plugin suggests, you can create your own ship and move it with just a single click.
Works with all blocks
There is a fully-fledged list where you can configure every block to react differently for the ships, including being able to add a block type to interact with Ships, detect it as a collide, and even not react at all.
Teleport to ships
There have been many requests to be able to teleport to ships for not only this plugin but others like it. This feature has been added to Ships, however, if it is something you do not wish, then you can disable to command by not adding the command.
Falling Ships
Ships will fall/sink if requirements are not met, this could be done through your own interaction such as running out of fuel, or by something else such as a TNT explosion.
Ship types
Airship | Link |
Ship | Link |
Marsship | Link |
Submarine | Link |
Plane | Link |
Hybridship | Coming soon |
Move the ship:
In Ships, movement is done by signs. You can see all signs here
Collide types:
Name | ID | Description |
---|---|---|
Detect collide | DETECT_COLLIDE | If Ships detects this block in the way of a ship moving then the ship will not move with the error of this block being in the way |
Material | MATERIAL | Material means that you can build a ship out of this block and the Ships block detection system will detect it as part of your ship |
Ignore | IGNORE | If Ships detects this block in the way of a ship moving then the block will break and the ship will take its place |
Permissions
Permission node | Description |
---|---|
ships.cmd.info |
Allows the player to use the command '/ships info' |
ships.cmd.blockinfo |
Allows the player to use the command '/ships blockinfo' |
ships.cmd.shiptype.create |
Allows the player to use the command '/ships shiptype create' |
ships.cmd.config.set |
Allows the player to use the command '/ships config set' |
ships.cmd.config.view |
Allows the player to use the command '/ships config view' |
ships.cmd.blocklist.set |
Allows the player to use the command '/ships blocklist set' |
ships.cmd.blocklist.view |
Allows the player to use the command '/ships blocklist view' |
ships.cmd.ship.track |
Allows the player to use the command '/ships ship track' |
ships.cmd.ship.eot |
Allows the player to use the command '/ships ship eot' |
ships.cmd.ship.crew |
Allows the player to use the command '/ships ship crew' |
ships.move.own.ships.airship | Allows a player to move own airship |
ships.move.own.ships.watership | Allows a player to move own ship |
ships.move.own.ships.marsship | Allows a player to move own marsship |
ships.move.other.ships.airship | Allows a player to move anyones airship |
ships.make.ships.airship | Allows a player to make a airship |
ships.remove.other |
Allows a player to destroy anyones ships sign |
Developers:
Looking for a development wiki? maven/gradle dependencies? or something else relating to ships or translate core? Take a look at the getting started wiki
Oi mosemister, really great work you've been doing with this plugin, impressive stuff. I was wondering if you would ever consider making Ships, or something like it in a datapack form or even in the form of a forge mod so that modded players could use ships. I know a lot would have to be reworked, but I wanted to ask anyway to hear your thoughts. Thanks
In reply to spynathan:
I have considered it and actually made it (A version that works on forge at least). Take a look at the SpongePowered edition.
https://ore.spongepowered.org/MoseMister/Ships
If you don't know, Sponge is a plugin platform designed to interact with Forge mods, it uses completely different code to Bukkit (more advanced and more feature rich). It has amazing hooks into forge so you can get permissions for regular forge mods, etc. Sponge hooks directly into Forge so mods that add stuff in the regular Forge way will be accessable to Sponge and if they are accessable to sponge, then Sponge plugins can interact with them.
You will also find that the community on Sponge is a really nice place to ask questions of any kind, so much so that I offer my services there, so help is more then accessable for anything Sponge related.
Ships 6 was designed to run on both Sponge and Bukkit, but there will be some extra features eventually for the sponge edition. However currently there is a bug in the Sponge edition of Ships which I cannnot figure out why which is why it doesn't have much of the attention so far, but that will be changing soon.
Hope that helps
edit:
Oh I am also working on a Bukkit emulator that runs on Sponge too (so Sponge will be able to run some Bukkit plugins). Ships should eventually run on it, but currently it doesn't due to Sponge being on 1.12 and Ships needing 1.13+)
In reply to mosemister:
Thanks for the information, keep up the great work.
What version would you recommend for 1.14.4? I think I have 5.2 or something and my marsship just say that i need 0 inverted daylight sensors and the boost button doesnt work
In reply to harryflame123:
Hi. So for Ships to work on MC 1.13+ you need Ships 6.0.0.0. its currently in beta so the download button at the top doesn't download it.
Here is a link to all ships versions
https://dev.bukkit.org/projects/ships/files
Ships 6 cannot transfer data from Ships 5 yet (with some exceptions). So you will need to recreate everything. Sorry, I am working on it.
FYI. There is no Ships 5.2. Im sure you mean Ships 5.0.1.14.
Edit:
Every bukkit page has that list of pages and you can filter to MC version on the page too. Just click "Files" at the top of the page to get to it
Its been a while.
A new Beta has just been uploaded. This beta fixes a long term bug found in Ships 6 where fuel was not taken from airships as well as fixes a few other small issues.
You are now able to see what Alpha, Beta and PreRelease version you are running with the command '/ships info' so for instances of versions where there are multiple versions called "Ships X" you can now see the exact version you are running.
And now the github page has finally been updated again
Hello, I love this plugin so far, its been running great with little to no problems! But whenever I run the autopilot command on my ship/plane, it displays in chat a message saying "Ship is not auto pilotable". Is this a known bug, and if so is there a fix? Also, I'm running version 6.
In reply to dr_onyx:
Hey. Thanks for using Ships.
As for your issue, the regular ship sadly is not autopilotable as a autopilotable ship requires to be able to always have a clear path to where it needs to go (the exception being ground, or a location inside a wall as it will get to the blockage and then fly over it or say there is something in the way). As Ships are stuck to water and eventually will hit land, the autopilot feature is only put on flyable ship types.
As for the plane, yeah its a bug with that. Thanks for telling me.
Hope that helps
I own a Server and the players are unable to create the registration for the ships they want to fly and i cant find the config file for the server is there anyway to give ships registration powers to the players?
In reply to LastMansGamer:
What version of ships are you using? It changed in Ships 6 (the one for mc 1.13+)
In reply to mosemister:
i am using Ships 6
In reply to LastMansGamer:
In Ships 6 you can give the permissions to make ships using the following permission
ships.make.<Ship type id with . instead of :>
So if i i wanted my players to be able to make a airship i would give them the permission
ships.make.ships.airship
As the id for airship is "ships:airship"
Hello mosemister, thank you for all your time spent developing this plugin. I am unfortunately running into some problems. The spigot server i'm running has just this plugin enabled. Whilst experimenting with a very small ship, with no fuel consumption, the plugin does work, albeit very slowly and it takes a few seconds for my ship to respond to commands. Even with this very small ship, the server says it cannot keep up sometimes, the server has 6gigs of ram allocated to it. When I try to control a larger ship, even right clicking the license sign does not immediately give me the ships information. When ordering a move or turn command, the server gets overwhelmed and crashes. I will provide the crash dump here, again, I am only running this plugin. I hope this helps you out in developing this plugin with amazing potential! Thanks
https://pastebin.com/wZLCGmJ1
In reply to Forge_User_66815450:
That definitely helps.
Just so your aware, RAM isnt everything when it comes to server performance. If you do have a small ship then it sounds like you have a week processor running your server.
There is something you can do to attempt to decrease the time taken. There is a option in the config for "auto updating structure" which you can disable. This will cut out the most stressful check However if you try and add more blocks to your ship, you will need to manually update the ship.
I have been working on more ways to reduce the lag from ships and have seemed to have gained one. Still testing it though.
In reply to mosemister:
Yes you could very well be right about the processor, its an i5 4670k 3.4 Ghz, I'll try out and see if the auto updating structure will make it run better.
In reply to Forge_User_66815450:
Yeah the 4000 core series is quite slow compared to modern day processors. Remember to disable that option :) and hopefully ill get more options to speed it up.
There is a technical reason on why it takes so long. I wont bore you with the details but its a issue with Minecraft that currently only custom implementations such as Glowstone Project or Lantern Powered can solve, however both those projects are way too unstable for recommendations.
In reply to mosemister:
I'd be interested to hear the in-depth technical reason (I've briefly developed a plugin before...) I've also experienced the slow ship movement on my server, and even on my high-end gaming rig. Would you be willing to tell me what sorts of configuration options I can tweak to increase performance? I'd be happy to help write documentation and playtest as well, if you're looking for help with those sorts of things.
Main server: 2 x Xeon X5690s 6-core each @3.47GHz, 8 GB Ram allocated
old processors, but not too slow. They run modern Paper at a solid 20 TPS with 6 players online
Move forward or turning time: 3-4 seconds
Gaming rig: 1 x Ryzen 9 3900X 12-core @3.80 GHz, 8 GB Ram allocated
expensive new hotness. It's got an RTX 2080 Ti too haha
Move forward or turning time: 2 seconds
In reply to chrisknyfe:
Ok. So the technical reason is that both Minecraft Client and Minecraft Server are not "Thread Safe". This means that you can not safely interact with minecraft from another core on a processor (you will find that from your 6 core server processor only core 1 and some of core 2 are doing the heavy lifting - unless your O.S gets desperate). This also means that all actions a plugin makes need to happen one at a time. So if I wanted to change 1000 blocks, I would need to change the first, then the second, etc. A plugin can not change 1000 blocks at the same time.
This means all plugins you have on your server are competing for that same single core performace and heavy processing plugins such as Ships wants to take all of it.
Ships is heavy processing because it needs to calculate the position of your ship as well as all blocks. Then calculate the requirements of the ship from those blocks (that one doesn't take up that much performance as its just looping through a known list and then replacing all of those found blocks 2 times. One to remove and then another to place.
In the config there is a option called "structure auto update" or something like that. By disabling this option it cuts out the first of those processes and uses the stored positions of the ship, making the plugin a lot faster however at the cost of the ability to add blocks to the ship and ships just detects those blocks. Instead you need to manually update the ships structure if you loose or add blocks to it. You can manually update the ships structure by shift clicking the licence sign.
I personally have a lot of work to do and therefore when i do get some free time I tend to focus on the programming side of Ships, not the documentation so your assistance will be appreciated.
For the future - you may have noticed I said 2nd core gets a lot of action, not nearly as much as the main core but still some. Thats because in reasent times mojang have been making more and more things in MC thread safe. Back in MC 1.2 they made Chat thread safe, in 1.14 they made the MC booting thread safe and in 1.15 they changed the client rending to something I believe will allow more parts of MC to be thread safe. This has allowed us developers to squeeze more performance out of the same processing core but also allowed us to move some parts of our plugins off the main core.
Im hoping one day MC will have its world thread safe and that would allow for Ships to fully move onto a separate core. In the mean time there have been attempts to interact with very particular parts of the MC server from another thread. One of which is reading world data, this means that a block detection system could be put onto another thread. While its not safe to do so, it would be a option for a server owner to select if they wanted to.
Hope that clears the air. If not im happy to answer any questions
In reply to chrisknyfe:
I have started documentation on the configuration. Hope this helps.
https://dev.bukkit.org/projects/ships/pages/ships-6-page/ships-6-configuration
I'm having issues concerning the last release, when I try to make a ship's license sign, i put on everything that is asked and absolutely nothing happens, what can i be doing wrong?