fully custom network codebase

cameronbowe

I write software for a living.
Supreme
Feedback score
1
Posts
157
Reactions
50
Resources
0
hello there! so for the past long while I have been putting heavy hours & effort into a commission, but due to me being unfortunately away for a few weeks (which was completely out of my control)- the project was completely cancelled & now i'm left with a bunch of unused & unfinished code.

some quick brief details about the entire codebase.
  • there is around two hundred and fifty three hours into it spread across just the development, which didn't include the numerous hours of documenting and brainstorming that I did before & throughout the process of development.
  • the entirety of the project was coded for a 1.19.2 based network using an efficient paper fork across it's servers and waterfall as a proxy.
  • there is nearly fifteen thousand and seventeen hundred lines of code and just under three thousand lines of actual configuration between all of the plugins.
  • most (if not all) of the code is heavily documented, therefore it's usability & readability not only now but for whoever may have to work on the project in the future should not have a tough time.
  • both the basics & prison plugins are heavily configurable (nothing is hard-coded), meaning when this is complete, it can still be modified in any way accordingly. there was a possible idea as well for a modular system that would allow you to easily drop in and take out different capabilities for each one so you can change up the plugin's functionalities on the fly- but that hasn't been started (the concept and idea has been thought about thoroughly though)
  • everything has performance & efficiency in mind, so when there's logic that shouldn't be handled on bukkit's main thread, it isn't.

the actual specifics of the codebase.
  • commons
    • what does it do?
      • this serves as a backend/library plugin that contains a basically complex system as well as utilities you'd ever need when creating plugins (especially at this scale), and serve(s/d) incredibly useful in this project. this plugin will do nothing on it's own, though it is absolutely crucial and it used a great deal by the other plugins.
      • there is currently one hundred and two pure coding hours which created nearly fifty one hundred lines of pure code.
    • what's in the works?
      • sound
        • create sound sequences.
        • load & play actual music in game (using in game sounds obviously).
      • particle
        • quickly create & show particles.
        • particles can have simple shapes or complex animations with built in tools.
        • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
      • item
        • build items & easily modify or manage them.
        • store data basic data types on items.
      • hologram
        • quickly create & show holograms.
        • shown & hidden per player at any time with simple functions.
        • holograms can be easily animated with a built in tools.
        • holograms can have items or text for lines.
        • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
      • entity
        • quickly create & show entities.
        • entities have their own goals- so they can fight, mine, build, walk around, or stand.
        • fighting entities have controllable logic on why or what they should fight, their fighting style, where they can go, all of that.
        • building entities have controllable logic on what they should build, how they should build, and how long it should take them to build, where they can go, etc.
        • walking entities have controllable logic on where they can go, how often they should go to certain places, who they can look at or interact with, etc.
        • standing entities have controllable logic on who they can look at or interact with.
        • you have complete control over every single attribute, setting, look, personality, all of that.
        • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
        • ^^ this does mean that even pathfinding, brain, visibility, and despawning logic will be coded from scratch, but when you have at least hundreds at a warzone or if not thousands in an rpg map- you'll be thankful.
      • configuration
        • quickly create & load configuration files.
        • easily load things such as sounds, items, titles, messages, scoreboards, entities, everything you can name that's not only in this codebase, but minecraft overall.
        • easily load configurations and find out if there's issues & if there are, where they're at and why they're happening.
        • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
      • menu
        • quickly create & show menus.
        • capability of single page or multi-paged menus.
        • create simple shapes or complex animations of items.
        • assign if players can view certain items, what items can do, everything of that nature.
        • shown & hidden per player at any time with simple functions.
    • what's done?
      • systems
        • border
          • quickly create & show borders.
          • easily set a center location, size, and color (red, green, or blue).
          • automatic detection of world change, teleport, and logout and will update or remove it when needed.
          • shown & hidden per player at any time with simple functions.
          • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
        • command
          • quickly create & implement commands.
          • simple creation of commands that require no plugin.yml input.
          • built in sub-command & argument system that allows you to get responses in any form on the fly.
          • easy consumer based input depending on if the sender is console or player based.
          • allows you to simply give tab completion options and it will know what options to use based off the current input.
        • constructor
          • quickly and easily do world functions or fetch information from them.
          • create regions which you can fill with a material composition (blocks to percentages) as well as a singular material and retrieve it's material composition and block count as well.
          • create schematics which you can load from the constructor schematic or any schematic file as well as paste them.
          • ability to run code after a task is complete (such as pasting, filling, etc).
          • everything is handled completely off thread & is packet based, so server performance doesn't slouch (thanks to fastasyncworldedit).
        • data
          • quickly store & manage data.
          • easily swap between json or mongo storage without having to recode things.
          • efficiently store json objects as well as retrieve them.
          • retrieval of json objects can be top ten, lowest ten, or id based (creating per player documents or having leaderboards is lightwork).
          • everything is handled completely off thread, so server performance doesn't slouch.
        • nametag
          • quickly create & show nametags.
          • easily have custom above-name, below name, or names themselves
          • any of the above can be automatically updated, as well as have a built in animation tool.
          • shown & hidden per player at any time with simple functions.
          • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
        • timer
          • easily create & manage timers.
          • timers can count up or down.
          • timers are id based, so their usage for things can range from players to personal mines, just gotta attach an id.
          • timers can be started or stopped or have their time viewed at any instance.
          • everything is handled completely off thread, so server performance doesn't slouch.
        • scoreboard
          • easily create & manage scoreboards.
          • easily have any title as well as lines (with any length).
          • lines and titles can be automatically updated, as well as have a built in animation tool.
          • shown & hidden per player at any time with simple functions.
          • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
        • tablist
          • easily create & manage tablists.
          • easily have any header, footer, and slots (with any length).
          • all of the above can be automatically updated, as well as have a built in animation tool.
          • slots have changeable ping, skin, or text (text animatable as said above).
          • shown & hidden per player at any time with simple functions.
          • everything is handled completely off thread & is packet based, so server performance doesn't slouch.
        • transmission
          • easily create & send messages across platforms.
          • send json objects across platforms, receive the json objects and even reply with json objects.
          • automatic reading, handling, and deletion of the messages in redis (which is the message broker that this system uses).
          • replying has built-in timeout system as well as receiving system that allows you to wait for the response and handle it when received.
          • everything is handled completely off thread, so server performance doesn't slouch.
      • utilities
        • number
          • validate if text is an integer, long, or double.
          • format numbers to commaified (2,500.4954), letterified (2.5k), and multiplier (2,500.49) forms.
          • get a random object out of a map with chances or return if a chance was selected.
          • retrieve a position from circled array using an index (useful for islands, mines, etc).
        • minecraft
          • colorize text (<#8a0ecc>hi there! = hi there!)
          • retrieve a player's uuid from their name (from the actual mojang api, you know it's right + handled completely off thread, so server performance doesn't slouch).
          • validate if an inventory can fit an item.
          • easy function that handles the giving of an item to a player (if inventory is full, drop it- if not, give it).
          • easy function that handles removing one of an item from a player (remove item entirely from either hand if last one, remove one if not).
        • string
          • validate if text is alphanumeric.
          • validate if text contains any word from a list of words which will automatically account for any leet replacements (obviously useful for filtering).
          • convert a list of text into a single text with new lines for each element.
        • time
          • uses simplified time formatting system (1d5h6m3s) which supports days, hours, minutes, and seconds.
          • easily convert time formatted text to time or convert time to time formatted text.
  • basics
    • what does it do?
      • a massive utility/core plugin that contains pretty much every feature and command you'd need to run any network- it should be able to replace your punishment, proxy, permission, essentials, holograms, npcs, etc plugins with ease via one plugin. it was made to be pretty much the only thing you'd need for your servers alongside the library and whatever core plugin for the server's type.
      • there is currently ninety seven pure coding hours which created nearly sixty nine hundred lines of pure code and fifteen hundred lines of pure configuration.
    • what's in the works?
      • npcs
        • easily create & manage npcs.
        • complete control over what the npcs do.
        • complete control over every single attribute, setting, look, personality, all of that.
        • all easily manageable through basic commands & menus.
      • holograms
        • easily create & manage holograms.
        • complete control over items & text in lines, which are animatable as well.
        • easily hide, show, teleport, etc holograms.
        • all easily manageable through basic commands & menus.
      • discord
        • has a linked discord bot.
        • sync your in-game player to the discord server.
        • view and manage things staff, player, and server wise from the discord.
        • i have discord bot experience, so therefore making a bot and linking it using my transmission system i have from commons would not be out of the picture.
      • an overall revision
        • i modified & changed a lot of things in commons, therefore i need to tweak this to use the newer stuff i made as well as update the code to be cleaner & more efficient.
        • the permission system in the network component is currently lacking menus, which i do want to implement as it'd make everything much nicer.
        • the punishment system in the network component is also lacking menus, which i wanna fix as well (would do the same thing).
        • the permission system only updates chat things, i would like to also modify tablist & nametags (already built into commons).
        • the entire plugin currently is using a "component" based system, this just makes everything more dividable and easy to understand when having a large core like this. although, i was really hoping to rework this into a modular system where "modules" can be taken in and out as you please without needing code change. a modular system would also mean the main core wouldn't have to be touched, and the plugin can be expanded, changed, differentiated, and updated through simple modules. if i did go with a modular system, it would be coded into commons so both this plugin & any other plugins (a hub plugin, prison, etc) can use it.
    • what's done?
      • chat
        • basic yet useful player commands like message, reply, ignore, unignore, togglechat, togglemessages, etc.
        • basic yet useful staff commands like mutechat, slowchat, clearchat, etc.
        • a chat formatting system that has the ability to showcase items, filter chat (with leet support), as well as hook with prison for showcasing prison related statistics.
        • ^^ noticed with some servers that ignoring only affects messages and not chat- but this will ignore in chat as well.
      • data
        • stores data per server for whos ignoring who, who has chat muted, who has chat toggled, if the chat is muted, if the chat is slowed, the spawn, etc.
        • stores data network wide for player ranks as well as the ranks themselves (obviously can be easily recoded to do per server ranks and such).
      • network
        • basic yet useful permission holder based commands like announce, find, restart, stop, send, server, staffchat, etc.
        • basic yet useful player commands like list.
        • complete permission & ranking system (creating ranks, deleting ranks, rank prefixes, rank suffixes, rank weights, player prefixes, player suffixes, player ranks, allllll of that).
        • complete punishment & alt tracking system (alts, ban, unban, kick, mute, unmute, temporarilymute, temporarilyban, history, punishmentinformation, alll of that).
        • automatic staff connection messages that update permission holders when staff members join or leave servers.
        • automatic server status messages that update permission holders with when servers go online or offline.
      • teleport
        • basic yet useful staff commands like targeted spawn, etc.
        • basic yet useful player commands like spawn.
  • prison
    • what does it do?
      • a massive prison core that contains pretty much every feature and command you'd need for a prison server- no more need for 30 plugins to build your prison server, this does it all.
      • there is currently fifty one pure coding hours which created nearly thirty nine hundred lines of pure code and seventeen hundred lines of pure configuration.
    • what's in the works?
      • boosters
        • allow players to have boosters for currencies, which will add to their multiplier for a certain duration.
        • boosters are item based (just like banknotes).
      • robots/pets
        • wanting to have an entity of some type that attaches to the player.
        • hoping these can benefit them in the mine somehow, if they're robots they can mine or something- if they're pets they can boost certain factors.
        • i have loads of ideas and stuff ready behind the scenes, just never got to implement.
      • enchants
        • i have tons and tons of ideas for enchants, but none have been properly put into place yet.
      • backpacks
        • not a complex system, but much needed- need some way to store & handle (possibly even with upgrades) player's mined items.
        • i have plenty of ideas, but just unsure of where to go currently.
      • gangs/teams/factions/something team wise
        • nothing makes players more excited than team activities, which currently are unimplemented.
        • i have plenty of ideas, but just unsure of where to go currently.
      • crates
        • i don't want any external plugins for no reason and since the entire gamemode is basically built into this, why not make everything easy and built it into here.
        • hoping to have all types of menu based animations as well as physical animations (make it exciting).
      • an overall revision
        • i modified & changed a lot of things in commons, therefore i need to tweak this to use the newer stuff i made as well as update the code to be cleaner & more efficient.
        • the entire plugin currently is using a "component" based system, this just makes everything more dividable and easy to understand when having a large core like this. although, i was really hoping to rework this into a modular system where "modules" can be taken in and out as you please without needing code change. a modular system would also mean the main core wouldn't have to be touched, and the plugin can be expanded, changed, differentiated, and updated through simple modules. if i did go with a modular system, it would be coded into commons so both this plugin & any other plugins (a hub plugin, basics, etc) can use it.
    • what's done?
      • currency
        • two currencies which are tokens and gems.
        • basic yet useful player commands like pay, balance, and withdraw (banknotes!).
      • data
        • stores data like tax for mines, location for mines, currencies for players, ranks for players, mine locations used for the server, ranks for the server, you name it.
        • useful permission holder command to modify player data of any kind (easily modify statistics).
      • mine
        • easily create their own mine from a schematic of their choosing which are used as a center of gameplay.
        • the plugin allows you to have multiple mine schematics which players can not only choose but actually change via a mine sub-command.
        • loads of sub-commands that give the ability go to their mine, set it's tax, theme, etc as well as control who has access to your mine.. it's all possible.
        • most sub-commands can also be accessed through a menu which is accessed via the mine command or mine panel sub-command.
        • mines are paste by using the oldest non-used mine location which are generated in a circled array, meaning it'll start in the center and circle around.
        • a built in void generator that will create the world (when needed) as well as set the proper game rules on boot (no need for a world manager).
        • the blocks of the mine are based off the owner's rank and the block pallet associated with it.
      • rank
        • automatically generates ranks using a list of blocks in worst to best order as well as a curve- this proves insanely useful when not wanting to hand configure each rank (which you especially can't do with unlimited ranks).
        • automatically generate certain amount of ranks on startup if there are no ranks previously, but if there is it will automatically take the best ranked player.
        • automatically generates new ranks when when next rank of player doesn't exist.
      • scoreboard
        • basic feature, but allows for per player scoreboards to showcase their basic statistics, rank progress, etc.

if you read this, i do deeply appreciate your time and i hope you can help me figure out what to do with all of this as well as how much it's worth.
if you also may want to help out with this project and possibly help me (website end, imagination end, etc) & make it non-exclusive so we can revolutionize networks entirely, we that's also an option :)
if you are maybe interested in the project and maybe want screenshots of the plugin in action or code snippets or maybe even have offers- you can just slide in my messages on discord (kodirati#0001).
 
Type
  1. Server setup
Last edited:
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Ksg

Entrepreneur
Supreme
Feedback score
57
Posts
502
Reactions
219
Resources
0
Hi, I'm an undergrade software engineer. Is it possible I could take this project and continue the objectives as practice and as a piece of work for a portfolio ?
 

cameronbowe

I write software for a living.
Supreme
Feedback score
1
Posts
157
Reactions
50
Resources
0
Hi, I'm an undergrade software engineer. Is it possible I could take this project and continue the objectives as practice and as a piece of work for a portfolio ?
not interested in handing over ownership of the project.
 

Sprisa

person
Supreme
Feedback score
4
Posts
121
Reactions
24
Resources
0
If you think about making it non-exclusive, i can help with anything web, javascript related or just making ideas or documenting, i can help!
Sprisa#0210
 
Top