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
In reply to Mosemister:
Yes and brilliant, thank you :) The alphabugs just keep coming; I've built a ship, and the Move / Wheel signs work correctly but Altitude doesn't - it loads the display and can be interacted with, but the action on leftclick doesn't happen. No error messages are being generated at the console, and I can't see anything in the config files that might be tied to it. Any ideas?
In reply to Forge_User_08405905:
Looking at the code again, there are 3 ways in which nothing can happen by clicking the sign.
1) the sign you clicked isnt actually a sign, this can be another plugin tricking the client (as in you) saying that there is a sign there when there isnt .... This isnt likely as the sign has the altitude lines on. If this is the case then replacing the sign will fix it.
2) The ship that was detected is a 3rd party Ships adapter. As far as I know there are no 3rd party Ships adapters, only the one Ships uses.
3) The ship type isnt capable of using the Altitude sign. Currently the Watership (typed ship on the sign) is the only one not capable of using the altitude sign.
Hope that helps. Tell me if its none of them and ill see what I can do with custom versions of ships to 'debug' the issue
In reply to Mosemister:
It's none of these unfortunately; it's an Airship, and I've tried replacing the signs a few times with no success. While I was building the ship I tried moving it a few times while it was below the 60% threshold; the Wheel and Move signs would return errors in the chat window but the Altitude sign returned nothing - I'm guessing that's not the desired behaviour :) Hope this helps, & I'll gladly fire up a debug version if you need it tested further!
In reply to Forge_User_08405905:
Ill create a debug edition of ships and have it installed on your server. Its sadly not the desired result. Thanks for your patience.
Ill be able to make it tomorrow...hopefully.
When building a Ship, it's telling me that the [move] sign is not part of a ship, despite being placed right next to the license sign
Block position is not part of a ship: x, y, z world
In reply to alun04a:
If your on Ships 6. Update the ships structure by right clicking the [Ships] sign. Ships 6 currently does not have the ability to automatically update your ships structure.
If on Ships 5.1.0.14 then its a more serious issue.
In reply to Mosemister:
It still does not work even after updating the vessel.
Edit: And yes, I am on Ships 6.
In reply to Mosemister:
It seems like all the blocks are properly detected, but it still gives that error.
In reply to alun04a:
It will only give that error if it can not find a Ship with the block in the structure. Therefore the ship its supposed to be doesn't have it in its structure file and its not adding the sign to the structure for some reason.
You can see the structure of a ship using the following command
/Ships ship <ship id> track
You can manually add the block to the structure. But I rather work out why its not updating, i can not seem to replicate the issue on my end, but its the main bug im focusing on fixing.
In reply to Mosemister:
Having the same issue. I have this error log that might help.
[18:34:21 WARN]: java.io.IOException: LicenceSign is not at location -194,108,210,world: Error V1
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.load(ShipsFileLoader.java:76)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.lambda$loadAll$3(ShipsFileLoader.java:146)
[18:34:21 WARN]: at java.lang.Iterable.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.loadAll(ShipsFileLoader.java:137)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsBlockLoader.load(ShipsBlockLoader.java:21)
[18:34:21 WARN]: at org.ships.vessel.sign.WheelSign.onPrimaryClick(WheelSign.java:51)
[18:34:21 WARN]: at org.ships.listener.core.CoreEventListener.lambda$onPlayerInteractWithBlock$1(CoreEventListener.java:43)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
[18:34:21 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.listener.core.CoreEventListener.onPlayerInteractWithBlock(CoreEventListener.java:42)
[18:34:21 WARN]: at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
[18:34:21 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[18:34:21 WARN]: at java.lang.reflect.Method.invoke(Unknown Source)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BEventLaunch.run(BEventLaunch.java:25)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.lambda$call$1(BukkitListener.java:78)
[18:34:21 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.call(BukkitListener.java:78)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.onPlayerInteractWithBlockEvent(BukkitListener.java:61)
[18:34:21 WARN]: at com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor.execute(StaticMethodHandleEventExecutor.java:38)
[18:34:21 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[18:34:21 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[18:34:21 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:534)
[18:34:21 WARN]: at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:441)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerInteractManager.a(PlayerInteractManager.java:441)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1387)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:5)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:18)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:127)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:105)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:995)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:988)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:115)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:972)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:906)
[18:34:21 WARN]: at java.lang.Thread.run(Unknown Source)
[18:34:21 WARN]: java.io.IOException: LicenceSign is not at location -194,108,210,world: Error V1
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.load(ShipsFileLoader.java:76)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.lambda$loadAll$3(ShipsFileLoader.java:146)
[18:34:21 WARN]: at java.lang.Iterable.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsFileLoader.loadAll(ShipsFileLoader.java:137)
[18:34:21 WARN]: at org.ships.vessel.common.loader.ShipsBlockLoader.load(ShipsBlockLoader.java:21)
[18:34:21 WARN]: at org.ships.vessel.sign.WheelSign.onPrimaryClick(WheelSign.java:51)
[18:34:21 WARN]: at org.ships.listener.core.CoreEventListener.lambda$onPlayerInteractWithBlock$1(CoreEventListener.java:43)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
[18:34:21 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
[18:34:21 WARN]: at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.listener.core.CoreEventListener.onPlayerInteractWithBlock(CoreEventListener.java:42)
[18:34:21 WARN]: at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
[18:34:21 WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[18:34:21 WARN]: at java.lang.reflect.Method.invoke(Unknown Source)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BEventLaunch.run(BEventLaunch.java:25)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.lambda$call$1(BukkitListener.java:78)
[18:34:21 WARN]: at java.util.HashMap$KeySpliterator.forEachRemaining(Unknown Source)
[18:34:21 WARN]: at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.call(BukkitListener.java:78)
[18:34:21 WARN]: at org.ships.implementation.bukkit.event.BukkitListener.onPlayerInteractWithBlockEvent(BukkitListener.java:61)
[18:34:21 WARN]: at com.destroystokyo.paper.event.executor.StaticMethodHandleEventExecutor.execute(StaticMethodHandleEventExecutor.java:38)
[18:34:21 WARN]: at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80)
[18:34:21 WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[18:34:21 WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:534)
[18:34:21 WARN]: at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:441)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerInteractManager.a(PlayerInteractManager.java:441)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1387)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:5)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:18)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:127)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:105)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:995)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:988)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:115)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:972)
[18:34:21 WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:906)
[18:34:21 WARN]: at java.lang.Thread.run(Unknown Source)
also have a server if ur interested of which is replicating the bug
In reply to Mosemister:
When using the /Ships ship watership:(nameofship) track, the entire ship except for the non-license signs is highlighted with obsidian.
Edit: I checked the BlockList file and saw that signs were marked as an obstacle. Was this intended?
In reply to sm1rks:
I think thats a different issue. That one is where the ship and its file containing all the data belonging to that ship have become out of sync (somehow .... Maybe another plugin).
Tomorrow morning ill take a look into the error and see whats happening.
In reply to alun04a:
Are the signs wall signs? Or the free standing signs? Check that that type of sign is in the materials list?
In reply to Mosemister:
The free-standing signs were obstacles whilst the wall signs were materials. However, some types of wall signs are marked as obstacles and some as materials.
Edit: Types of wall-signs that were obstacles included Dark Oak and Acacia
In reply to Mosemister:
Thing is, I'm getting the same ingame error message. "Block position is not part of a ship: x, y, z world." So I think it's the same error, maybe I'm dumb.
In reply to alun04a:
Were the signs that were not being detected as part of the ship any of the sign types that were not in the materials list?
In reply to sm1rks:
So you will get that error as the way that the sign detects that it is part of a ship is checking through the structure of every ship and seeing if it is part of it, if the ship can not load and sends that crash report, it could be that that ship that is attempting to load is the ship with the correct structure, however because it wasnt able to load, it fails that check on that ship.
This results in the sign not being found, thus the message appears. Its not dumb that you didn't know that, for you to know that you would have needed to read the code of Ships and understand the BlockShipLoader and also have Java exceptions work, both of which I dont expect people to know and I especially don't expect people to read my code
In reply to Mosemister:
I think I have gotten everything working now. Signs are detected and are working
In reply to sm1rks:
So after reading what that error is. Its where the position specified on the ships file is not a sign at all.
Im going to add a feature that was in Ships 5 where you would click the licence sign to relocate the ship.
In reply to sm1rks:
I was having a similar issue to this yesterday; it started off as appearing to be looking for the LicenceSign one block in front of where it actually was, but when I removed the LicenceSign and put it where it was trying to find it, it would update and instead be looking for it one block behind. I tried both freestanding signs and signs against blocks, no success. Eventually I tried to build a new ship (under a new name) which seemed to be fine but when I tried to move it, it returned the same error and was still looking for the LicenceSign at the original co-ordinates on the original ship.
Deleting all custom ship configs and rebooting the server resolved the issue for me; I've not been able to replicate it since.