Ships
Source Code - Github |
Sponge version |
---|
Ships 6.0.0.0 common issues
These issues are from Ships 6.0.0.0 Alpha 1.9+. If you have a issue and want a quick fix then check out the following link, however if it is not in this list then by all means report below.
Google drive - Common Ships 6.0.0.0 issues
Supported Plugins
These have been moved to Bukkit Bridge
Addons
Name | Link | Description | Author |
---|---|---|---|
ShipsDamage | Link | Ships Damage adds a configurable weight-damage mechanic to each and every ship, with minimal performance impact/overhead. Great for use together with the ShipsNoColide Plugin! | nullschritt |
What is Ships?
Ships is associated as one of 'MoveCrafts' rivals, however we can guarantee you that Ships is moving away from this idea, by adding features that you would probably not see in MoveCraft but are useful for the servers this plugin is designed for.
Ships is a plugin that allows you to create medium sized vessels in water, ontop of water and in air. Ships is simple to use because it only uses signs to control the vessels. No annoying commands to learn, or 'wands' needed, it's just plain simple signs.
As time moves forward this plugin improves. This is MoseMister's first plugin and he is still learning from the endless world of craftbukkit. This being said, some features of this plugin maybe 'glitchy' so you have been warned. Qx2 does not work on this plugin any more so all the updates and taking care of the top priority 'users' lies on MoseMister alone, so all help is appreciated.
VesselTypes
Type | Description |
---|---|
Ship | Ships move onto of water |
Airship | Airships are one of the hardest to work because they are so demanding. Enjoy |
Marsship | ship from the movie John Carter. In action how like an airship but does not require fuel or wool. Its disadvantage is that it can fly only during the day |
Plane | Faster then all the other vessels, however, fuel is eaten |
Submarine | Moves under water |
Hybrid ship | Moves both under water and over air at great cost |
Signs
![]() |
* [Ships] * * This sign is the licence sign, right click it to gain info about the vessel. |
![]() |
* [Move] This sign will allow you to move your vessel. The vessel will move in the opposite direction to the way it is facing |
![]() |
* [Wheel] This sign will allow you to rotate your vessel. Left click to rotate to the left. Right click to rotate to the right. |
|
* [Altitude] This sign allow your vessel to move up and down. Left click to move down (decrease your altitude). Right click to move up (increase your altitude) |
![]() |
* [EOT] This sign will force the vessel to move in the same direction until it hits a wall. If EOT is disabled in the config this sign will not take effect and will not be able to be created through Ships |
The signs will only be activated if standing. They will not activate when sneaking.
Command and permissions
Command | Arguments | Type | Description |
---|---|---|---|
/Ships AutoPilot | Both | Move the vessel to the location without player control | |
/Ships Developer | * loadedVessels * VesselTypes * materialsList * rammaterials * all |
Console | * gets all loaded vessels * gets all Vesseltypes ships has loaded * displays all blocks in materials list * displays all blocks in RAM materials * displays all info |
/Ships Fixes | * teleport * facing |
player | * sets the teleport to location for your vessel * fixes the issue of vessels moving the wrong way |
/Ships Info | both | displays all information about Ships | |
/Ships protected | both | toggles if the protectedVessels applys for it | |
/Ships reload | * Configs * |
Both | * reloads all config files * reloads the vessel |
/Ships sign | * Track [seconds] | player | * displays the Ships structure |
/ships teleport | * | player | * teleport to a vessel |
Permission | Description |
---|---|
ships.* | all Ships permissions |
ships..use | allow a player to use that vesseltype |
ships.*.use | allows a player to use all the vessel types |
ships..use | allows a player to use that vessel |
ships..make | allows a player to make that vesseltype |
ships.*.make | allows a player to make all the vessel types |
ships.command.teleport | allows a player to use the teleport command |
ships.command.teleport.other | allows a player to use the teleport command to other vessels |
ships.command.sign | allows a player to use all the /ships sign commands |
ships.command.reload | allow a player to use all the /ships reload commands |
ships.command.fixes | allows a player to use all the /ships fixes commands |
ships.command.autopilot | allows a player to use all the /Ships autopilot commands |
Isn't this the really buggy plugin?
Ships has been known for its bugs however Ships 5 and above cleared out almost all of the bugs from Ships 4 and lower.
Videos
5.0.1.7
for older versions
![]() |
Shipsl 4.1.1 by VortexHDGaming |
![]() |
Ships 4.0.2 by Ajaxan Minecraft |
![]() |
Ships 3.2.4 by StoneGate amac55 |
![]() |
Ships 3.2.1 by MoseMister |
![]() |
Ships 3.1.6.1 by austin101 |
![]() |
Ships 2.1 by Jacob Vejvoda |
User created content
Luke Dooly
Are you a developer?
The image at the top labelled 'source code' leads to the github Ships 5+ page. But if you want to just start developing for Ships you can go to the Ships 5+ api page located here. This will tell you some things that you can do with the api.
The api is always developing, fixing bugs and issues and adding new parts to the API to make your programming life as simple as possible. If you wish to add something to the api. Don't be scared, just send a request on GitHub (preferred) or here (not preferred) and it will be taken care of.
In reply to thetreethatgrows:
That depends. Are the blocks that are in the way ment to be part of the ship or not? If the are then check what size your ship is (clicking the licence sign will tell you), if it matchs or exceeds the tracking limit (shown in the config - you can use the command below to check the value) then just increase the tracking limit.
If the blocks are not supposed to be part of the ship and you wish for those blocks to break on impact such as a flower of some kind then change the material to IGNORE instead if MATERIAL.
ships config view config Advanced.Block.Track
In reply to Mosemister:
The blocks are supposed to be part of the ship. Tried setting the tracking limit but i still get the error that some blocks are in the way
In reply to Mosemister:
Found the problem. Seems like it only tracks "connected" blocks as part of the ships, and not "diagonally placed blocks". This was a mistake on my part, srry.
In reply to thetreethatgrows:
That ok. I don't believe that is in the docs anymore so its more my fault then anyones.
Hi everyone. So while I have been waiting for Ships Alpha 2.4 to be approved. I have been working on the next update, Alpha 2.5 contains fixes for a crash listed in the comment below and a fix for entities (including players) who would not be moved on a ship due to them being on a half slab or stairs. It also may include the first part of the Ships 5 file convert code that would convert Ships 5 files to Ships 6 R2. I do plan at some point to convert ships 6 R1 files to R2 as well.
As for the update awaiting approval i didnt make a pre update changelog for it as the last 2 updates have been approved within 30min of upload. But here are the changes.
Ships 6.0.0.0 Alpha 2.4
I have the plugin installed to my server through Apex Hosting. When I place a license sign it gives me a message like Missing Permission: ships.make.ships.marsship. How would I be able to access the permissions and enable this?
In reply to bigbooflad:
Permissions work in the same way all other plugins permissions work. You need to enable them through your permissions plugin. There are a few permission plugins to choose from. The one I use to test permissions is GroupManager however this one is old and lacks more modern features.
Hi there, getting this as an error whilst attempting to use an airship's altitude sign, with the latest update
[03:19:50 WARN]: Failed to know what to do: EventListener caused exception from org.ships.event.listener.CoreEventListener.onPlayerInteractWithBlock(AsPlayer arg0)[03:19:50 WARN]: Failed to know what to do: EventListener caused exception from org.ships.event.listener.CoreEventListener.onPlayerInteractWithBlock(AsPlayer arg0)[03:19:50 WARN]: java.lang.NullPointerException[03:19:50 WARN]: at org.ships.vessel.sign.AltitudeSign.lambda$onVesselMove$4(AltitudeSign.java:162)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)[03:19:50 WARN]: at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)[03:19:50 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.copyInto(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.evaluate(Unknown Source)[03:19:50 WARN]: at java.util.stream.ReferencePipeline.forEach(Unknown Source)[03:19:50 WARN]: at org.ships.vessel.sign.AltitudeSign.onVesselMove(AltitudeSign.java:162)[03:19:50 WARN]: at org.ships.vessel.sign.AltitudeSign.access$000(AltitudeSign.java:30)[03:19:50 WARN]: at org.ships.vessel.sign.AltitudeSign$1.onStructureUpdate(AltitudeSign.java:92)[03:19:50 WARN]: at org.ships.vessel.common.loader.ShipsOvertimeUpdateBlockLoader$OvertimeRunnable.onShipsStructureUpdated(ShipsOvertimeUpdateBlockLoader.java:40)[03:19:50 WARN]: at org.ships.algorthum.blockfinder.Ships5BlockFinder.getConnectedBlocksOvertime(Ships5BlockFinder.java:70)[03:19:50 WARN]: at org.ships.vessel.common.loader.ShipsOvertimeUpdateBlockLoader.loadOvertime(ShipsOvertimeUpdateBlockLoader.java:62)[03:19:50 WARN]: at org.ships.vessel.sign.AltitudeSign.onSecondClick(AltitudeSign.java:123)[03:19:50 WARN]: at org.ships.event.listener.CoreEventListener.lambda$onPlayerInteractWithBlock$6(CoreEventListener.java:96)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)[03:19:50 WARN]: at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)[03:19:50 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.copyInto(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)[03:19:50 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)[03:19:50 WARN]: at java.util.stream.AbstractPipeline.evaluate(Unknown Source)[03:19:50 WARN]: at java.util.stream.ReferencePipeline.forEach(Unknown Source)[03:19:50 WARN]: at org.ships.event.listener.CoreEventListener.onPlayerInteractWithBlock(CoreEventListener.java:95)[03:19:50 WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[03:19:50 WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)[03:19:50 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)[03:19:50 WARN]: at java.lang.reflect.Method.invoke(Unknown Source)[03:19:50 WARN]: at org.ships.implementation.bukkit.event.BEventLaunch.run(BEventLaunch.java:25)[03:19:50 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.lambda$call$1(BukkitListener.java:170)[03:19:50 WARN]: at java.lang.Iterable.forEach(Unknown Source)[03:19:50 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.call(BukkitListener.java:170)[03:19:50 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.onPlayerInteractWithBlockEvent(BukkitListener.java:127)[03:19:50 WARN]: at com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor.execute(StaticMethodHandleEventExecutor.java:38)[03:19:50 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)[03:19:50 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)[03:19:50 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:545)[03:19:50 WARN]: at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:445)[03:19:50 WARN]: at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:412)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.PlayerInteractManager.a(PlayerInteractManager.java:136)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1307)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:40)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInBlockDig.a(SourceFile:10)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:23)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:1012)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:1005)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:95)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:1134)[03:19:50 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:918)[03:19:50 WARN]: at java.lang.Thread.run(Unknown Source)
In reply to kain_mercer:
Thanks for the error. Ill patch it out as soon as I can. If you wish to still use ships in the mean time you can use the newer block finder (the old one is giving the bug). You can swap the finder using the /ships config set config command
In reply to Mosemister:
Excellent, thanks for info.
Should I just leave the newer block finder enabled permanently?
Any pros/cons between the two?
I really appreciate the work you've put into this plugin. My server loves it.
In reply to kain_mercer:
There is a pro con list between the two.
Pros for the old one:
Its faster. Much faster
Pros for the new one:
It can detect a unlimited amount of blocks as it doesnt attempt to detect everything at once.
The cons are the vice versa. Such as the new one is much slower
In reply to Mosemister:
Could you tell me the exact command?
I'm assuming it's something like "/ships config set ships 6"
the syntax is slightly confusing for me, sorry!
In reply to kain_mercer:
I dont have a computer infront of me so i can not give the exact however the suggestions (shown on the players screen or by hitting tab on the console) will show the suggestions.
/Ships config set config Advanced.Block.Finder block_finder_ships_six
The part i am unsure about is the last two arguments, the Advanced.Block.Finder is the key argument, i am 90% sure its that (100% something like that) and the next argument is the value, there should be 2 options in the suggedtions, one ending in ships six and the other ending in ships five
In reply to Mosemister:
Okay, I should be able to work it out from there. Thanks again!
EDIT here is the exact command for anyone reading :)
/ships config set config Advanced.Block.Finder ships:blockfinder_ships_five (or six)
In reply to kain_mercer:
So I have just fixed the error in my dev build of Ships. I got it wrong, the issue comes from a complete different part of Ships. The issue stems from the progress bar not being shown. While progressbar is disabled in your config, there are some parts of the code that didnt get the message that it is and attempts to update a progress bar that isnt there.
The quick fix would be to enable the progress bar (minecraft calls it a bossbar so thats what it is called in the config)
Just uploaded Ships 6.0.0.0 R2 Alpha 2.3, ready to download.
In reply to Mosemister:
Ok, I am trying the new version. I will let you know if there are any problems.
Currently only found that the new version of the plugin almost does not match the old file, I will confirm the other issues.
Yesterday I went to see you live live show, modify the plugin configuration
Although I don't understand (the dense programming language), I also watched nearly 2 hours.
See that you have modified each object and grammar repeatedly
I only feel that you are really good at programming.
In the future, the program you design will definitely create great achievements for you.
Thank you very much for everything you paid for the plugin.
I like this plugin and prefer your work attitude.
In reply to kevinhsneh:
Thanks for watching. Sorry you didnt understand the code but nice to know i kept you entertained.
Grammar is not my forte, so you may see it get corrected every so often. On the live show I was mainly modifing the new command system that would make it a lot more simple for me to add command, it would also gain access to more peemissions with the commands.
As for the current version almost not matching the old file. I have done a lot of work on the new movement and block tracking algorithms that has greatly improved stability.
I am aware of a few issues with them though and plan to mitigate the issues as soon as possible. Current issues I know about that are new to 2.3 are the following:
The new fast loader may crash ships due to async activity
EOT ignores if the ship has done moving and attempts to move the ship even before it is done resulting in a ship you can not stop.
I am also aware that the new tracking algorithm takes a while to track, i have some ideas for optimizations but it means rewriting a small part of Ships, so stay tuned.
In reply to Mosemister:
HI Thank you for your explanation, I am happy to see your live live design program.
Although you know that there are some problems at present, based on the reasons for making you more aware of the problem, I still need to report to you the results of my test of the new version.
I started the server and found that after the new version did not match the old one, I immediately used the clean Ships-b 6.0.0.0 R2 Alpha 2.3.1 new version plugin to generate the file.
And copy my old BlockList.yml back to replace the original file.
After the first successful start of the server, I entered the minecraft game.
Then I created each new SIGN for an aircraft, including ([Move], [Altitude], [Wheel]).
Finally create the [Ships] type as opship and use the right mouse button to click and sneak click to register.
Leave the game without doing anything.
I once again started the server and the following error log appeared:
------------------------------------
下午 07:29:52 [Thread-11/WARN]: Exception in thread "Thread-11"下午 07:29:52 [Thread-11/WARN]: Exception in thread "Thread-11"下午 07:29:52 [Thread-11/WARN]: java.lang.IllegalStateException: Tile is null, asynchronous access? CraftBlock{pos=BlockPosition{x=757, y=71, z=-62},type=OAK_WALL_SIGN,data=Block{minecraft:oak_wall_sign}[facing=south,waterlogged=false],fluid=net.minecraft.server.v1_14_R1.FluidTypeEmpty@50d13246}下午 07:29:52 [Thread-11/WARN]: at com.google.common.base.Preconditions.checkState(Preconditions.java:444)下午 07:29:52 [Thread-11/WARN]: at org.bukkit.craftbukkit.v1_14_R1.block.CraftBlockEntityState.<init>(CraftBlockEntityState.java:28)
--------------------------------------------------------------
I tried to solve it over and over again, testing it many times, without breaking away from such a result.
Does this mean that the plugin does not detect the sign, and the ships file contains the registration file?
Maybe this is not a big problem, I can still enter the game and then move the plane, but clicking [Altitude] does not work, so I think the new version of this problem will cause the plugin to fail to run smoothly, I hope and expect you Subsequent optimization.
In reply to kevinhsneh:
So the issue you arr refering to is the async quick loading. I have fixed it on my internal server and will be releasing it soon.
Basically whats happening is minecraft itself doesnt like it when you interact with the world on a separate thread. Due to the fact that loading the structure of the ship i thought won't interact with the world as its loading 3dVectors (XYZ) i put the code for loading the structure on a separate thread. However the issue is that if the structure loaded has any slight hickup and ships quickly attempts to fix the issue, one of the issues is it not knowing where the licence sign is compared to the structure, so it checks where the sign is out of the structure to resync it, this being a interaction with the world.
The fix I have done is taken them off the second thread and back on the main thread, loads slower but way more reliable