Archived
1
0
Fork 0
⛏️ Extensible Minecraft server implementation in Kotlin
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.
Find a file
2021-04-07 15:49:16 +02:00
.github/workflows Fix the GitHub workflow 2020-11-30 07:21:30 +01:00
.idea Implement entity metadata synchronization 2021-04-07 14:12:13 +02:00
.runConfigurations Fix EventBus test 2021-01-03 14:04:57 +01:00
buildSrc Implement entity metadata synchronization 2021-04-07 14:12:13 +02:00
gradle/wrapper Update Gradle, fix a ByteBuf leak and kick the client when a decoding error occurs 2021-01-02 22:31:31 +01:00
test-plugin Add custom name attribute 2021-04-07 15:49:16 +02:00
uranos-api Add custom name attribute 2021-04-07 15:49:16 +02:00
uranos-nbt Implement entity metadata synchronization 2021-04-07 14:12:13 +02:00
uranos-packet-codecs Add custom name attribute 2021-04-07 15:49:16 +02:00
uranos-packets Implement entity metadata synchronization 2021-04-07 14:12:13 +02:00
uranos-server Add custom name attribute 2021-04-07 15:49:16 +02:00
.gitignore Change license to Apache 2.0 2021-01-03 15:58:16 +01:00
build.gradle.kts Sync entities when joining or when viewers change 2021-01-10 14:40:03 +01:00
gradle.properties Give each entity an UID and make entity classes open 2021-01-04 19:13:31 +01:00
gradlew Initial commit 2020-08-01 23:55:31 +02:00
gradlew.bat Initial commit 2020-08-01 23:55:31 +02:00
LICENSE Rework entity movement and spawning 2021-02-27 23:50:32 +01:00
README.md Add custom name attribute 2021-04-07 15:49:16 +02:00
settings.gradle.kts Use the refreshVersions Gradle plugin 2021-01-03 13:06:53 +01:00
versions.properties Bump versions 2021-01-03 13:15:54 +01:00

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). 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>.