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 thedenvx:
Yep. In the BlockList, find the block and under it there will be a key called "CollideType". Change the value to Ignore
You can also use the BlockList set command
Awaiting approval of the next update.
Edit:
Approved
Hey, great plugin, I have been really enjoying it!
However, I am having a number of issues with the plugin. I tried it out with the default configuration yesterday, and it was working great. I wanted to be able to use a greater variety of blocks (e.g clay) in my building so was messing around with the blocklist file a bit and the plugin seems to have broken. I setup an opship (or any other shiptype) in the normal way but when I try to interact with any movement signs I get an error "Failed to find license sign" despite the license sign being on the same ship and working fine.
In the blocklist file I edited some of the DETECT_COLLIDEs to MATERIAL, didnt change anything else. When I do /ships info ingame, it lists DETECT_COLLIDE as 763 and the other values as 0, despite there being more ignores/materials than in the base file.
Afterwards I reloaded the plugin back to the default settings and it worked fine, apart from I cannot seem to make the speed setting on the move sign go down, only up, and once it is at the max it is stuck on the max setting, unless I am missing a keybind or something.
Anyways, those are more or less my 2 problems, thank you for making this great plugin!
In reply to rockmnster:
Hi. So the issue with the speed. Did you try sneaking and then clicking to change the speed?
As for the BlockList, having all the blocks as detect collide means that the BlockList file had become unreadable. This can be done though a spelling mistake, a tab, or something else.
If this keeps happening then you can use the "/ships blocklist set" command. However please note that if you are using the legacy command system (by default you are) there is a bug where it would use similar blocks then the specified one.
hey man, great plugin,
tho i am having some problems, probably i am doing sstuff wrong haha.
submarines arent working but i got around it by letting it ignore awter and use opships instead
tho it works when moving once the sign breaks, although it gets placed again it now says that it couldnt find my ship
In reply to timmety_debetz:
Hey, submarines will be working again in the next update, it was a oversight which stops the submarine and plane from working.
As for the signs breaking and then being readded. Is it all signs? Are you replacing the signs or is ships? Any errors in console?
In reply to mosemister:
holy shit thats na quick reply, thx man`.
glad to know that they will be working again and that it wasnt me being stupid agian XD
it worked for a little while now but when i try to move using the signs again it said "can not find opship.<name>" and with others it said "could not find connected ship"
i also noticed signs and other blocks gettin randomly waterlogged sometimes, but this is probb due to the fact i am using opships
In reply to timmety_debetz:
The ship where it says "cannot find opship". Try right clicking the licence sign. Its likely that the file and the ship has become unsynced (a number of reasons why this happens), right clicking the sign attempts to resync the file with the sign again.
If the ship is already synced then its likely something has happened with the structure of the ship, you can see what ships sees by using the following command
/Ships ship <ship id> track
That will show you where its going wrong
In reply to mosemister:
this works thx, got any idea about the waterlogs?
In reply to timmety_debetz:
Ships doesnt change anything when it comes to waterlogging. So no clue.
In reply to mosemister:
the problem solved itself, i am currently working on a bigger ship with lots of diffrent blocks, so to prevent any hickups i went into the block config and made everything "MATERIAL" exept for bedrock, obsideian, dirt, sand and gravel. water and waterplants remain "IGNORE" but when testing with my smaller ship it wouldnt work anymore and said failed to find license plate, i used the /blockinfo and now it states everything as "DETECT_COLLIDE" instead of "MATERIAL"
In reply to timmety_debetz:
When you made the changes to the materials list. Did you turn off the server and then make the changes and then turn it back on?
In reply to mosemister:
yes i restarted the server twice, and blocks that used to work now also are detect collide
In reply to timmety_debetz:
That sounds like the file became unreadable (just a spelling mistake, tab, etc can do this), so Ships will use the default in code version of the materials list which is simply everything is detect_collide. While it doesnt change the file while reading, when the server turns off or you reload ships it will save all the blocks to what ships believes them to be.
Sorry for the inconvenience
In reply to mosemister:
fuck, imma read through the whole file again, see if i can find it, totally my mistake as always XD
thx again lad
I was using your ships plugin but I logged off while i was using it now im stuck floating/flying and use the ship as it says processing requirements. If you know of any ways to fix this that would be much appreciated
In reply to soapy_sappy:
The stuck in the air issue is known as no gravity, there are three fixes for it. The first is if you have ships legacy commands disabled (requires a plugin reload) then you can use the command
/Ships fix nogravity
The next one is to simply move another ship with you on it
The last is to delete your playerdata
As for the issue with the ship. What shiptype is it?
New update inbound.
The long awaited fix for the plane and submarine are coming in the next update but also a fundamental change to the way that UnknownEntitySnapshot works in Core for Bukkit.
This change will mostly fix entities loosing/resetting data when moved on ships.
Time for the technical stuff for those who want to know.
How snapshot data works in ShipsCore is it uses a forking idea. Essentially if the data is for a real (Live) or fake (Snapshot), ShipsCore doesn't care, instead all the data comes in as a general interface. Here is a example.
Both ZombieSnapshot and LiveZombie extend Zombie. Zombie holds all the functions to get data specific to Zombie. Zombie then extends Entity which also has a Live and Snapshot varient. This means you can generalize data between snapshot and live across the whole plugin which is great .... Until you need to implement them as you need to essentially do everything twice. One for live and one for snapshot as data is stored in different ways between the two.
Because UnknownEntity is well ... Unknown, it cannot assume that the entity attached to it has any extra data then the generic Entity data which resulted in more specific data towards that entity (such as varient, age, etc) being lost/reset.
This new way that UnknownEntity works is it assumes that it is every single known type of entity (its the combo of cow, creeper, zombie, ender dragon, etc) and attempts to store the data of it in a snapshot. This doesnt fix that the entitysnapshot is still generic (so plugins that listen directly at ShipsCore in generic platform mode cannot work out any traits of the entity) but it should prevent data loss to all known entity types. This of course doesn't work if a new entity type is added in a future version of minecraft or more data is exposed to the Bukkit API.
Once again, this comes down the Bukkit API being limited as the Sponge version has been able to store all data in unknown since the beginning and will store all data on unknown Minecraft version as well as compatibile sponge versions as Sponge has its own EntitySnapshot. For me personally I would love to just be able to grab the NBT data of the entity and store it into another on Bukkit but you cannot do that unless you go into NMS which defeats the point of Bukkit to begin with
This appears in console, any suggestions please? (new at this btw):
[17:14:43 WARN]: Path: Block.Fuel.Slot
[17:14:43 WARN]: Value: (java.lang.Boolean) 'false'
[17:14:43 WARN]: java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class java.lang.Enum (java.lang.Boolean and java.lang.Enum are in module java.base of loader 'bootstrap')
[17:14:43 WARN]: at org.core.config.parser.parsers.StringToEnumParser.unparse(StringToEnumParser.java:12)
[17:14:43 WARN]: at org.core.config.ConfigurationStream.set(ConfigurationStream.java:67)
[17:14:43 WARN]: at org.core.config.ConfigurationStream.set(ConfigurationStream.java:80)
[17:14:43 WARN]: at org.ships.vessel.common.loader.shipsvessel.ShipsFileLoader.setSingleInFile(ShipsFileLoader.java:289)
[17:14:43 WARN]: at org.ships.vessel.common.loader.shipsvessel.ShipsFileLoader.lambda$save$4(ShipsFileLoader.java:134)
[17:14:43 WARN]: at java.base/java.util.HashMap.forEach(HashMap.java:1336)
[17:14:43 WARN]: at org.ships.vessel.common.loader.shipsvessel.ShipsFileLoader.save(ShipsFileLoader.java:132)
[17:14:43 WARN]: at org.ships.vessel.common.types.typical.AbstractShipsVessel.save(AbstractShipsVessel.java:129)
[17:14:43 WARN]: at org.ships.event.listener.CoreEventListener.lambda$onPlayerLeaveEvent$7(CoreEventListener.java:142)
[17:14:43 WARN]: at org.ships.vessel.common.types.Vessel.lambda$getEntitiesOvertime$7(Vessel.java:136)
[17:14:43 WARN]: at org.ships.implementation.bukkit.scheduler.BScheduler$RunAfterScheduler.run(BScheduler.java:15)
[17:14:43 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftTask.run(CraftTask.java:99)
[17:14:43 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468)
[17:14:43 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1294)
[17:14:43 WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:377)
[17:14:43 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1209)
[17:14:43 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:997)
[17:14:43 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:178)
[17:14:43 WARN]: at java.base/java.lang.Thread.run(Thread.java:834)
In reply to kurodclxvi:
Hi. So when reporting crashes its best to put it in a site such as pastebin and then copy the link over as they keep the formatting making it easier to read.
As for whats going wrong, whats the shiptype?