All Projects → CleanstoneMC → Cleanstone

CleanstoneMC / Cleanstone

Licence: mit
Springboot based Minecraft Server

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Cleanstone

Gdlauncher
GDLauncher is a simple, yet powerful Minecraft custom launcher with a strong focus on the user experience
Stars: ✭ 386 (+190.23%)
Mutual labels:  hacktoberfest, minecraft, minecraft-server
Paper
High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies
Stars: ✭ 5,293 (+3879.7%)
Mutual labels:  hacktoberfest, minecraft, minecraft-server
Sponge
The SpongeAPI implementation targeting vanilla Minecraft and 3rd party platforms.
Stars: ✭ 241 (+81.2%)
Mutual labels:  hacktoberfest, minecraft, minecraft-server
Tuinity
Stars: ✭ 531 (+299.25%)
Mutual labels:  hacktoberfest, minecraft, minecraft-server
Glowstone
A fast, customizable and compatible open source server for Minecraft: Java Edition
Stars: ✭ 1,364 (+925.56%)
Mutual labels:  minecraft, minecraft-server
Obsidian
[WIP] A C# implementation of the Minecraft server protocol. (.NET 5)
Stars: ✭ 89 (-33.08%)
Mutual labels:  minecraft, minecraft-server
Gate
A high performant & paralleled Minecraft proxy server with scalability, flexibility & excellent server version support - ready for the cloud!
Stars: ✭ 102 (-23.31%)
Mutual labels:  minecraft, minecraft-server
Server
Cloudburst Server is a Bedrock first server software. Originally forked from Cloudburst Nukkit.
Stars: ✭ 107 (-19.55%)
Mutual labels:  minecraft, minecraft-server
Nettyrpc
NettyRPC is high performance java rpc server base on Netty,using kryo,hessian,protostuff support message serialization.
Stars: ✭ 1,131 (+750.38%)
Mutual labels:  spring, netty
Simple Rpc
RPC with service discovery base on netty
Stars: ✭ 103 (-22.56%)
Mutual labels:  spring, netty
Mcex
Minecraft server written in Elixir
Stars: ✭ 109 (-18.05%)
Mutual labels:  minecraft, minecraft-server
Libgui
Buttons & Co
Stars: ✭ 78 (-41.35%)
Mutual labels:  hacktoberfest, minecraft
Minecraft Rcon
Minecraft RCON Web (using PHP) Console
Stars: ✭ 70 (-47.37%)
Mutual labels:  minecraft, minecraft-server
Jupiter
Jupiter是一款性能非常不错的, 轻量级的分布式服务框架
Stars: ✭ 1,372 (+931.58%)
Mutual labels:  spring, netty
Openapi Spring Webflux Validator
🌱 A friendly kotlin library to validate API endpoints using an OpenApi 3.0 and Swagger 2.0 specification
Stars: ✭ 67 (-49.62%)
Mutual labels:  hacktoberfest, spring
Rpc Fromscratch
🌈 从零开始设计一个轻量级分布式 RPC 框架,基于 Spring + Netty + Protostuff + Zookeeper
Stars: ✭ 106 (-20.3%)
Mutual labels:  spring, netty
Polymc
Making minecraft mods compatible with a vanilla client
Stars: ✭ 111 (-16.54%)
Mutual labels:  minecraft, minecraft-server
Magicplugin
A Bukkit plugin for spells, wands and other magic
Stars: ✭ 110 (-17.29%)
Mutual labels:  minecraft, minecraft-server
Downlords Faf Client
Official client for Forged Alliance Forever
Stars: ✭ 121 (-9.02%)
Mutual labels:  hacktoberfest, spring
Industrial Foregoing
IF: you need to automate all the things
Stars: ✭ 125 (-6.02%)
Mutual labels:  hacktoberfest, minecraft

Cleanstone

Coverage Lines of Code Maintainability Rating Build Status Join our Discord

What is Cleanstone?

The plan is to properly build a scalable Minecraft Server from scratch without the outdated code and single-threaded nature that Minecraft was created with.

We dont just copy the vanilla server structure and refactor it. Instead we write it completely from scratch in our own way in which we focus on doing it right instead of keeping it close and similar to Vanilla Minecraft.

Scalable: It should be expandable e.g. you can use multiple servers for a single Minecraft world and split the load over them.

Maintainable: A proper event-driven code style with dependency injection and lots of useful abstraction e.g. the protocol (built-in multi-client-version support similar to ViaVersion/ViaBackwards)

Multi-Threading

Cleanstone is multi-threaded by design since we are using multiple thread pools that balance the load of chunk loading, IO, etc. In the future we want to add the possibility to balance it across multiple servers as well. This is possible because we don't have a global tick loop that synchronizes all server actions but instead we outsource the work as modular services that can work asynchronously and are therefore scalable.

Features

Implemented

  • Multiple Network Protocols
    • Minecraft Java Edition
      • 1.12.2
      • 1.13
      • 1.13.1
      • 1.13.2
      • 1.14
    • Minecraft Pocket Edtition
      • Basic serverlist ping support
  • Async world loading and saving in LevelDB
  • Online mode login
  • Async chunk loading
  • Breaking and placing blocks (without item drops)
  • Seeing other players move around (entity tracking)
  • Command system with nice sub-command and parameter abstraction
  • Online admin panel to execute console commands

TODO

  • Seeing non-player entities (Missing entity metadata protocol)
  • World conversion (Missing NBT Support)
  • Item drops
  • Special block behavior (e.g. beds)
  • Spreading load over multiple servers
  • Network packet encapsulation (Events for Packets)
  • Chunk/Region behavior (Physics and AI)

Installation

Requirements

  • Java 11

Instructions

git clone [email protected]:CleanstoneMC/Cleanstone.git
cd Cleanstone
./gradlew assemble
java -jar build/libs/Cleanstone-0.3.1.jar

No global Tick Loop?

We will probably not be able to avoid a tick loop completely when we get to redstone, gravity, etc. since too many other systems directly depend on it and it would cause too many race conditions and delays to synchronize it all. Our trick here is to divide the world into independent regions that manage their entities and work by themselves using their own worker threads and their own independent tick loops or worker servers independent of other regions. However, tasks like pathfinding and entity movement can be completely asynchronous nonetheless since nothing else depends on them.

API?

Currently we aren't supporting Bukkit or Sponge since we simply need more features and fundamentals first but in the future we will add support for Bukkit and probably Sponge as well, however we wont integrate it into our code but keep it separate and map it to our own API.

Discord

We have a Discord! Join us here: https://discord.gg/Jx5kk3u

Livedemo

Connect to "demo.cleanstone.rocks" with Minecraft 1.12.2 - 1.14. The Server restarts from time to time with the latest changes.

Sponsors

YourKit

We are proudly using the YourKit Java Profiler to improve the performance and find high memory usage. Thank you for this amazing tool and we can fully recommend it to all Java developers!

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

Banner created using JetBrains' amazing jb-rpd-splash code art generator (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].