# 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, SpigotMC 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://medium.com/swlh/what-is-dx-developer-experience-401a0e44a9d9). After that comes performance. ## Milestones - Players can see entities - 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 - 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 `. ### Code 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`. 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`.