56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# Uranos
|
||
|
||
Uranos is a game server implementing the Minecraft protocol. That means you can use the official Minecraft client to join Uranos servers.
|
||
|
||
Its goal is to be a modern alternative to Bukkit, Spigot and Paper. It is primarily intended to make creating custom games inside of Minecraft easier than it
|
||
is possible with the existing alternatives, but it can also be used for something like a lobby/hub server.
|
||
|
||
The most important thing for Uranos is
|
||
[developer experience (DX)](https://css-tricks.com/what-is-developer-experience-dx/). After that comes performance.
|
||
|
||
## Milestones
|
||
|
||
- Players can see other players
|
||
- Players can send and receive chat messages
|
||
- Players can see Titles
|
||
- Weather and time
|
||
- Players can hear sounds
|
||
- Players can see particles
|
||
- Players can have items (with metadata) in their inventory
|
||
- Inventories
|
||
- World modifications are sent to players
|
||
- PlayerInteract events are emitted when blocks are clicked
|
||
- Command framework + permissions
|
||
- Commands can be sent from the console
|
||
- Players can be teleported between worlds
|
||
- All entities are implemented with all metadata
|
||
- Entity AI framework
|
||
- Scoreboards + Teams
|
||
- Crafting
|
||
- Rate limiting packets
|
||
|
||
## Development
|
||
|
||
Because IntelliJ sometimes removes needed imports for types which have the same name as types in `java.util` when running the `Optimize Imports` action, you
|
||
need to disable automatic wildcard imports for this package
|
||
(Editor / Code Style / Kotlin / Imports / Packages to Use Import With '*').
|
||
|
||
## Conventions
|
||
|
||
### KDoc
|
||
|
||
1. If the name of the target is already sufficient for understanding what it does or what it's value represents, you should **not** add a comment. If you want
|
||
to provide additional information however, you should start the comment with a short description nevertheless.
|
||
2. The name of the return type, property type or type of the enclosing class should **not** be wrapped in square brackets.
|
||
3. If a comment only consists of the `@returns` block tag, the latter should be replaced with a sentence starting with
|
||
`Returns `.
|
||
|
||
### Packets
|
||
|
||
1. Outgoing packets should not use classes purely used as data containers such as Location. Enums are allowed.
|
||
|
||
### Other
|
||
|
||
1. If a member function of a class creates an instance of another class which represents the same value, the function’s name should
|
||
be `as<name of the other class>`. If the new instance does not exactly represent the value of the original instance (for example because it is rounded), the
|
||
name should be `to<name of the other class>`.
|