Hello there! So for the past couple months I have been putting heavy effort and hours into a commission, but out of no where I was sadly informed that the project is being discontinued which leaves me with.. well loads of code that is unfinished but has some huge potential.
Let me give you some quick brief details before I go onto specifics on each plugin...
Before you go about reading the long detailed list of the statuses on everything that I was commissioned for, I present you with my current request- which is what do I do with all of this code!? Here's what I can think of which may help you guys help me figure out what I should do!
Alright, well here we go!
If you read this, I do deeply appreciate your time and hope you can help me figure out what to do with this codebase.
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).
Let me give you some quick brief details before I go onto specifics on each plugin...
- There is around 131h of raw code hours into it spread across just the plugin development, which didn't include the numerous hours of documenting and brainstorming that I did before starting the development work.
- The entirety of the project was coded for a 1.18.2 based network using a paper fork across it's servers and waterfall as a proxy.
- There is just under 9300 lines of code and just under 2200 lines of actual configuration between all of the plugins.
- Most (if not all) of the code is pretty well documented, therefore it should be not too difficult to pick up for other developers.
- Most (if not all) of the plugins not only use messages but sounds as well so interactions will feel better overall which the ENTIRETY of is configurable- like literally everything you can think of.
Before you go about reading the long detailed list of the statuses on everything that I was commissioned for, I present you with my current request- which is what do I do with all of this code!? Here's what I can think of which may help you guys help me figure out what I should do!
- I could finish the code and create my own network because of the heavy experience with creating servers and networks I have- but unfortunately this is no easy task and does require investment...
- I could finish the code and sell it via the market- not really sure whatsoever how much to sell it for (maybe give me ideas for prices?) and if I do how I should sell it (exclusively, non, etc- give me ideas?).
- I could look for individuals that are interested in the project and they could either just purchase the code off me for another developer to finish or have me finish it (probably better for me to since it's my code and I know it).
- Other options... give me some maybe?
Alright, well here we go!
- Prison
- What is it?
- A massive prison core that contains pretty much every feature and command you'd need for a prison server- you literally just need this core (as well as the dependencies obviously) and you're ready to rock after some configuration magic (which it has plenty of).
- It only depends on my Commons library as well the Basics core (for certain things like spawn etc). I'd also like to note that the entirety of the plugin uses a "component" based system- not only does this make this easy for debugging, but it proves soooo useful for not only the back-end but overall organization so it's easy to find things for developers (like me!).
- There is currently just under 50h of raw code hours that has created nearly 3730 lines of code and 1410 lines of actual configuration.
- What needs to be done?
- As I just was ordered to just get the Basics plugin over with- I pretty much halted the development of the plugin and that leaves quite a bit unfinished. Pretty crucial prison features like custom enchants, boosters, auction house, gambling, and overall loads of things that any prison server should have are currently missing as well as just the need to change a couple things to make them better (why not?).
- What is currently done?
- Currency (A component that pretty much has every useful currency related command and feature)
- Two currencies which are tokens and gems.
- Incredibly basic yet useful player commands like pay, balance, and withdraw.
- ^^^ As stated there is withdraw, so yes there is banknotes!
- Data (A component that stores all of the important data that needs to be stored)
- As it uses my library, the data is stored via MongoDB and does it obviously without lag.
- 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, etc.
- An incredibly useful staff command to modify player data of any kind (easily modify statistics).
- File (A component that handles file related stuff)
- Not really sure if this needs an explanation, just handles the file related things like configuration in the backend.
- Mine (A component that allows for per player private mines)
- Allows players to easily create their own mine from a schematic of their choosing which are used as a center of gameplay.
- ^^^ May need to reiterate, but yes- 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.
- ^^^ Even though there is sub-commands, most of that is also controllable through a panel which is accessed via the mine command or mine panel sub-command.
- The mines are pasted (which is done quickly as well via my library!) by using the oldest non-used mine location which are generated in a 2d spiral grid using my library, meaning it'll start in the center and circle around (which are then stored for later).
- ^^^ The mine locations explained here also are created on boot as well as when mines are created.
- 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 Multiverse-Core and such).
- The blocks of the mine are based off the owner's rank and the block pallet associated with it.. which I'll explain below.
- This component is obviously and sadly unfinished currently, fetch more details from "What needs to be done?".
- Rank (A component that allows player ranking)
- 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).
- ^^^ It will automatically generate 1000 ranks on boot if there is no ranks previously- if there is it will automatically take the best ranked player and just add 1000 more ranks to future proof it (but it'll generate a new rank automatically whenever players rank up).
- This component is obviously and sadly unfinished currently, fetch more details from "What needs to be done?".
- Scoreboard (A component that allows per player scoreboards)
- Pretty basic feature, it uses my library to create lagless per player scoreboards to showcase their basic statistics, rank progress, etc.
- Currency (A component that pretty much has every useful currency related command and feature)
- What is it?
- Basics
- What is it?
- A massive utility 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 literally made to be just a fat core that you could slap into your servers alongside the library and be good after configuration (which it has plenty of).
- It only depends on my Commons library as well as the servers being on a Pterodactyl panel (lightwork server statuses)- the panel thing is easily recodable to use RabbitMQ or Redis as I state in the library explanation but it was coded this way by request. I'd also like to note that the entirety of the plugin uses a "component" based system- not only does this make this easy for debugging, but it proves soooo useful for not only the back-end but overall organization so it's easy to find things for developers (like me!).
- There is currently 23h hours of raw code hours that has created nearly 3300 lines of code and just under 740 lines of actual configuration.
- What needs to be done?
- As this plugin was the most recently started, loads of stuff has not even been started and some has remained unfinished! From a list of basic utility commands I aimed to code as well as things like holograms and NPCs haven't even been started, and the permission and teleport systems components just remain simply unfinished.
- What is currently done?
- Chat (A component that has pretty much every useful chat related command and feature)
- Incredibly basic yet useful player commands like message, reply, ignore, unignore, togglechat, togglemessages, etc.
- Incredibly basic yet useful staff commands like mutechat, slowchat, clearchat, etc.
- A chat formatting system that has the ability to showcase items, hook with the prison core I coded for showcasing prison related statistics, as well as filter chat (with leet support).
- I've noticed with some servers that ignoring only affects messages and not chat- but this will ignore in chat as well.
- Data (A component that stores all of the important data that needs to be stored)
- As it uses my library, the data is stored via MongoDB and does it obviously without lag.
- 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).
- File (A component that handles file related stuff)
- Not really sure if this needs an explanation, just handles the file related things like configuration in the backend.
- Network (A component that has pretty much every useful network and proxy related command and feature)
- Incredibly basic yet useful staff commands like announce, find, restart, stop, send, server, staffchat, etc.
- Incredibly basic yet useful player commands like list.
- Previously stated, but yes there is network wide staff chat.
- Automatic staff connection messages that update permission holders when staff members join or leave servers. (uses player tracking which is done via my transmission system).
- Automatic server status messages that update permission holders with when servers go online, offline, start, etc (uses my pterodactyl utility).
- Teleport (A component that has pretty much every teleportation related command and feature)
- Incredibly basic yet useful staff commands like targeted spawn, etc.
- Incredibly basic yet useful player commands like spawn.
- This component is obviously and sadly unfinished currently, fetch more details from "What needs to be done?".
- Chat (A component that has pretty much every useful chat related command and feature)
- What is it?
- Commons
- What is it?
- A massive library plugin that contains a bunch of complex systems that serves incredibly useful in most plugin development applications and does prove that in the development of the plugins in this project- which guess what, all of them use this library. I basically thought like why just throw a bunch of the same utilities in plugins when plugins can run each others code, so I just made one fat library with everything I want and need.
- ^^^ As stated! This plugin is just a library, meaning it has no code that will do anything to your server beside enable and disable itself- it is not standalone whatsoever. It also does depend on FastAsyncWorldEdit for one of the systems (which I hope most have anyway). I'd also like to note that all of the systems have their own implementers to easily retrieve information for plugins that are using the library which serve quite useful throughout the inner code as well as developers (like me!).
- There is currently 60h hours of raw code hours that has created nearly 2300 lines of code.
- What needs to be done?
- This library pretty much was code as I go, so some things that I haven't started that I want to code in the future like hologram, NPC, and tab systems as well as some overall modifications to some of how the code works currently (the prettier and more efficient the better).
- What is currently done?
- World Border (A system used to create world borders).
- Allows you to create world borders that can have any center location and size as well as be red, blue, or green.
- The borders can be shown to a singular of multiple players as well as hidden at any time via simple functions.
- Automatically removes on world change, teleport, and logout.
- The important functions are asynchronous (meaning it runs on another thread, not the main server one) as well as use packets, this means the system will not affect the server's performance whatsoever.
- Command (A system used to create custom commands easily)
- Allows you to register commands without plugin.yml input.
- Allows you to simply give tab completion options and it will know what options to use based off the current input.
- Constructor (A system that is used to quickly and easily do world functions as well as some useful utilities)
- Relies on FastAsyncWorldEdit API for everything on this system (I thought why reinvent the wheel and just decided to make it cleaner and easier to use for specific things I need).
- Allows you to 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.
- Allows you to create schematics which you can load from the constructor schematic or any schematic file that FastAsyncWorldEdit allows as well as paste (as well as the ability to run code when it's finished).
- The important functions are asynchronous (meaning it runs on another thread, not the main server one), this means the system will not affect the server's performance whatsoever.
- Cooldown (A system that is used to create cooldowns)
- Allows you to create ID based cooldowns (meaning they could basically be for anything) as well as start and stop them.
- The main timer for the cooldowns is asynchronous (meaning it runs on another thread, not the main server one) as well as use packets, this means the system will not affect the server's performance whatsoever.
- Data (A system that is used to store data)
- Allows you to store via JSON (just via the server) or MongoDB.
- Allows you to use JSON to quickly and efficiently create objects to store (it's pretty easy to learn and use, but I already knew it anyway).
- Allows you to easily retrieve JSON objects via an id (useful for per player, mine, etc data) or just the entire set (useful to create leaderboards).
- The important functions are asynchronous (meaning it runs on another thread, not the main server one), this means the system will not affect the server's performance whatsoever.
- Item (A system that is used to quickly and easily do item functions)
- Allows you to create items quickly with custom names and lores, set them to glow or be unbreakable, add and remove enchants and item flags from them, set their color (if it's a colorable item), as well as set their head data via base 64 or an offline player (if it's a head).
- Allows you to store any string, integer, etc via items (useful for statistic tracking, custom enchants, etc).
- Menu (A system that is used to quickly and easily create guis)
- Allows you to create ID based menus (easily tracable which is useful for pagination etc) with any minecraft inventory type that use any title, items, etc as well as set a runnable for it (useful for automatic updating, etc).
- The menus can be shown to a singular of multiple players as well as hidden and updated at any time via simple functions.
- The main timer for the menu's runnables is asynchronous (meaning it runs on another thread, not the main server one) as well as use packets, this means the system will not affect the server's performance whatsoever.
- Scoreboard (A system that is create scoreboards)
- Allows you to create scoreboards with any title and up to 15 lines (not sure on the character limit on lines, probably 72 which is more than enough) as well as set a runnable for it (useful for automatic updating, etc).
- The scoreboards can be shown to a singular of multiple players as well as hidden and updated at any time via simple functions.
- The main timer for the scoreboard's runnables is asynchronous (meaning it runs on another thread, not the main server one) as well as use packets, this means the system will not affect the server's performance whatsoever.
- Transmission (A system that is used for network cross-communication as well as some useful utilities).
- The entirety of this system uses BungeeCord's messaging channels (but a Redis or RabbitMQ recode is easily doable).
- Allows you to send players to other servers under the proxy.
- Allows you to create transmissions that can send and request data which is sent and returned via a string (which you can probably build your own serialization system like I did to understand what's being sent and received) to other servers under the proxy.
- Requesting data is incredibly easy just like the other systems where you can run code after and requesting is just as easy using a custom handler.
- Utilities (A set of incredibly useful utilities that don't have a system binded with them).
- Grid (A set of utilities that are related related to grids)
- Allows you to get a point from an index which uses a 2d spiral grid (useful for islands, mines, etc).
- Inventory (A set of utilities which are related to inventories)
- Allows you to check if an inventory can fit an item (useful for seeing if a player's inventory can hold a reward, etc).
- Mojang (A set of utilities which are related to Mojang)
- Allows you to retrieve a UUID from a player's name (useful for literally everything, as using offline players via a name and retrieving the uuid that way is deprecated nowadays).
- The important functions are asynchronous (meaning it runs on another thread, not the main server one), this means the system will not affect the server's performance whatsoever.
- Number (A set of utilities which are related to numbers)
- Allows you to easily check if a string is an integer, long, or double.
- Allows you to easily format numbers to commaified (2,500.4954), letterified (2.5k), and multiplier (2,500.49) forms.
- Pterodactyl (A set of utilities which are related to the Pterodactyl panel)
- Allows you to easily retrieve server statuses as well as do a bunch of file related stuff like listing, editing, writing, etc just via a Pterodactyl panel token, domain, and server ID.
- The important functions are asynchronous (meaning it runs on another thread, not the main server one), this means the system will not affect the server's performance whatsoever.
- String (A set of utilities which are related to strings)
- Allows you to easily colorize strings which supports basic color codes and hex codes (&#hex).
- Allows you to check if a string contains a list of words which will automatically account for any leet replacements (obviously useful for filtering).
- Time (A set of utilities which are related to time)
- The entirety of these utilities use a very simplified time formatting system (1d5h6m3s) which supports days, hours, minutes, and seconds.
- Allows you to easily format and retrieve longs using the format above.
- Grid (A set of utilities that are related related to grids)
- World Border (A system used to create world borders).
- What is it?
If you read this, I do deeply appreciate your time and hope you can help me figure out what to do with this codebase.
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).
Last edited:
