Archived
1
0
Fork 0
This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
uranos/README.md

56 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 functions 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>`.