Coder Social home page Coder Social logo

outspending / aethermc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hollow-cube/minestom-ce

7.0 1.0 2.0 25.62 MB

An Asynchronous, Lightweight Minecraft Server

License: Apache License 2.0

Java 99.80% Kotlin 0.20%
async minecraft-server minecraft-server-software

aethermc's Introduction

What is AetherMC

AetherMC is an Asynchronous, Lightweight Minecraft Server made for Java developers. It's a bare bones version of Mojang's Minecraft Server, providing everything you need to create a Minecraft server quickly without any issues.

Note: AetherMC doesn't have a "Main Thread" anymore, so it's important to understand Threads and ensure your plugins are Thread-Safe. If you're not familiar with Thread-Safety, you can refer to this guide.

For more information about Thread-Safety and AetherMC's API, check out the Wiki. The wiki will guide you through each element of the API and is updated accordingly whenever changes are made. It aims to minimize questions and discussions in our Discord. If there's anything you'd like to add to the wiki, please DM me! ๐Ÿ˜„

AetherMC is currently in development, and if you're interested, you can get a build by contacting me through Discord. My Profile

AetherMC is a fork of Minestom

Minestom is a lightweight Minecraft server that doesn't contain any code from Mojang.

You can find more details HERE

Version Support
1.20.x โœ…
1.20 โœ…
1.19.x โŒ
1.19 โŒ
1.18.x โŒ
1.18 โŒ
< 1.17 โŒ

Features:

AetherMC provides many useful API's and Libraries at your disposal, maximizing the efficiency of creating your dream server!

Multi-Threading

AetherMC supports multi-threading, offering more freedom with asynchronous operations compared to Spigot and Paper. The following actions are performed asynchronously:

  • Setting Blocks
  • Updating Blocks
  • Updating Light
  • World Loading
  • Plugin Loading

If you want to learn more about multi-threading, check it out HERE.

Plugin API

Our API offers a wide variety of brand new features that Minestom doesn't offer, such as:

  • New Methods
  • New Util Classes
  • Leaderboard Implementation
  • NPC Implementation
  • Blockstate Manipulation
  • Packet Manipulation
  • World Creation

All of these features serve specific purposes, which is why they aren't provided through separate plugins.

World Creator

The world creator in AetherMC uses AnvilWorld and allows easy modification of your world using Dimensions. With our world creator, you can create:

  • Custom World Biomes (Without the need for restarting your server)
  • Custom Dimensions

These features enable you to create an epic landscape for your server, offering nearly limitless possibilities.

Built-in NPC Support

AetherMC has built-in NPC support, eliminating the need for another plugin to handle NPCs.

Settings

AetherMC offers over 100+ options to optimize your server and maximize its potential. Some of these settings include:

  • Render Distance
  • Loading Worlds Async
  • Loading Worlds (This can be disabled for optimization purposes when loading your server)

These are just a few examples of what you can do with AetherMC!

Packets

Our Packet API is very powerful, allowing you to easily Receive, Listen, and Modify packets. However, it comes with a performance cost and can create dangerous environments if not used carefully. Beware of packet overloading, as it can crash Minecraft clients easily.

Commands

The command system in AetherMC is fully recoded from Minestom and no longer requires editing the plugin.yml. This saves time and is very easy to understand.

Plans

I have many plans for AetherMC, but first, I need to finish the core features. After that, I will work on the following:

  • A "WorldEdit" type API for creating your worlds quickly
  • Spark Profiler Integration
  • and more

I have lots of plans for this project, and I'm excited for it to be used by people to create their servers. Check out the to-do list below for the current progress on this project.

To-Do List

This is the To-Do List for AetherMC before the first full release. You can build the project whenever and test it out for yourself!

Completed: 11/36 (30.5%)

  • Regions
    • Saving Regions
    • Loading Regions
    • Region BoundingBoxes
    • Region Events
  • Chunks
    • Chunk Saving
    • Saving Directional Blockstates
    • Chunk Borders
  • Plugins
    • Make Sure Plugin's Load Correctly
    • Expand the API for Developers
  • Worlds
    • World Creator
    • World Saving
    • World Deleting
    • World Unloading
    • World Loading
  • Lighting Engine
    • Rewrite the Whole LightingEngine
    • Fix Dark Chunks
    • Parallel Light Updates
    • Batch Light Updates
    • Fix Lighting Updates (Takes like 10 seconds to compute 50 chunks of light)
    • Add Light Source Blocks (Torch, Sea Lantern, etc.)
  • Blocks
    • BlockStates
    • New Methods (#getWorld(), #getChunk(), #getChunkBorder(), #isInsideRegion(Region region), etc.)
    • Floating Torches, Signs, etc.
  • Misc
    • Fix Ram Issue (Using up around 5GB without any plugins; this is due to the current LightingEngine though)
    • Add Console Commands
    • Opped Players
    • Admin Commands (/ban, /tempban, /mute, /tempmute, etc.)
    • Locations (Replaces Pos and Point in Minestom API)
    • ParticleUtils? (Drawing Spheres, Triangles, and other shapes)
    • Block Drops (๐Ÿ˜ญ)
    • Leaderboards API
  • Suggestions
    • Spark Profiler Integration
    • World Noise Generation (Not Currently in the main API)
    • Timespans
  • Future Plans
    • Improved Plugin System
    • Custom Crafting Recipes
    • "WorldEdit" API

ETA: Unknown

API

AetherMC contains lots of Utility classes and methods to help improve your server without 500 lines of code. The API provides many utility classes for Math, Location, Chunk, LightingEngine, and much more to help you.

Utility Classes:

  • RegionUtils
    • This contains many QOL features to make regions in your server, including getting borders, blocks, chunks, and more from regions.
  • ChunkUtils
    • This contains methods such as #getBorder(), #clearChunk(boolean save), and more.
    • Yes! There are chunk borders in AetherMC! These can be used for many use cases for developers.
  • BlockUtils
    • This contains methods such as #getDrops(Material material), and more.
  • MathUtils
    • This contains very easy-to-use methods to get Locations like never before.
  • VectorUtils
    • This contains methods for rotating a vector and changing many of its properties like the Minestoms can't.

Regions

Regions are like BoundingBoxes from Spigot with more features like Events. These can also be saved so they can be loaded once the server starts again.

Chunks

Chunks now have "borders." Borders are the outline of a chunk (16x16). They act like regions, and you can get the border of a list of chunks, returning an outline border of all the chunks in the list.

Commands

AetherMC has a fully recoded version of Minestom's command API, which is now Annotation-based. Creating commands no longer needs to be inside the plugin.yml, and they will be automatically registered in the background.

Events

AetherMC has also recoded the events system, making it more friendly to the eye and easier to comprehend. Each event can be async or not. Here's an example: AsyncBlockBreakEvent or BlockBreakEvent.

Blocks

The block system has also been fully recoded because it didn't meet the needs of this API. Blocks consist of many new methods that Minestom doesn't offer.

Worlds

The world system in AetherMC is very user-friendly, and it offers many builders to let your imagination go wild with the world system.

Biomes

Biomes haven't changed much from Minestom, and you can easily create a custom biome, which has been changed a bit to remove the frustration of all the builders you have to deal with.

Credits

Thanks to all of these Libraries and API's:

Thanks

If you are considering AetherMC for your Minecraft Server, thank you! Hopefully, this project meets your expectations. I am fully willing to listen to your suggestions and make changes accordingly. โค๏ธ

aethermc's People

Contributors

adamaq01 avatar articdive avatar draycia avatar eoghanmc22 avatar epicplayera10 avatar greatwyrm avatar hsgamer avatar iam4722202468 avatar iamceph avatar jesfot avatar jglrxavpok avatar kebab11noel avatar kezz avatar kiip1 avatar krystilizenevadies avatar leodog896 avatar moulberry avatar mrbretze avatar mrgazdag avatar mworzala avatar nesaak avatar outspending avatar r0bbyyt avatar rinesthaix avatar stefvanschie avatar thatcreeper avatar themode avatar thiccaxe avatar togar2 avatar zakshearman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

nopock drdivx2k

aethermc's Issues

To-Do for snapshot.8

This update is all about community feedback, I will add most of the things to the API that I think fits into it and server development. There are no tasks right now, and will be determined when snapshot.6 is complete

To-Do List for AetherMC-snapshot.4

Snapshot.4 is a pretty big update. I'm adding many new features to the API to get it ready for a public release. This update will take a while, i would recommend you waiting for this to come out before you mess with aether's API since it isn't fully stable yet. This update is made to fix and add to the API to make it more user friendly and more modern.

Features ๐ŸŽ‰

  • Rewrite Plugin System
  • Add Plugin Libraries (ex. ./libraries)
  • Make /plugins actually work
  • Fully release API (For developers testing new API)
  • Plugin Algorithm (5-20ms to sort 52 plugins)
  • Blockstate handler
  • Implement Blockstates Correctly
  • Add Every Blockstate
  • Updated Logger
  • Settings file
  • EULA Confirmation when starting your server for the first time (This will be improved from spigot's version, you will be able to accept it in console without having to edit the eula.yml file)
  • Experimental Features (Settings)
  • Bug fixes
  • NumberUtils (format, and regex)
  • Add new events
  • Check Scoreboard API and Change If Needed
  • Check Advancements API and Change If Needed
  • Yaml Support (Json, and Toml support later)
  • Chest Support

ETA: N/A

To-Do List Before AetherMC-snapshot.3

  • Finish ParticleUtils
  • Add Single Particle Effects
  • Player Writer (PlayerData, last location, is opped, ect)
  • More Region Constructors
  • Make ParticleDisplay editable (so you dont have to create a new instance every time ex. Looping)
  • More methods to Aether class
  • Fix .stripColors() method in new ChatColor class

To-Do List for snapshot.9

The last snapshot before the first stable release of AetherMC! This snapshot is focused on cleaning up the API and improving the user experience. This snapshot right now isnt going to add anything except bug fixes

To-Do List for AetherMC-snapshot.6

  • World Creation
  • World Deletion
  • World Loading
  • World Unloading
  • Async World Methods
  • Make Positions Support Worlds (Vec, Pos, Point)

ETA: N/A

To-Do List for snapshot.7

The snapshot is all about GUI's. I'm planning on adding an easy GUI API for everyone to use. This also includes some Sign features using packets, ect

  • GUI Builder
  • GUI Slots
  • Support Every Type Of Inventory
  • Include a Sign Builder
  • Get Text on a Line of a Sign
  • GUI Cache (Caching GUI's so you dont have to create one everytime someone uses a command or an event)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.