Code Update 0

Information on the first code update and the project

Section 0: General Overview of Project

General Information On Project:


Here I will give information about the technical developments to-do with the server and the code surrounding it all. But first I suppose I should explain why I'm doing this project, the goal of this project is to make a system that can seamlessly connect to discord (through the use of the @Anom RP bot), the server through a custom RM (RocketMod) plugin, as well as the configuration for all of the parts being held within the API (this will be important later), finally I am planning to eventually develop a custom client module so that we can do more custom stuff for the client of the game such as better optimisation and other important parts for the server.

When this project reaches a decent state of completeness I do plan to create a GitHub release for the source code of the project, this would allow any of you to involve yourselves in the development of the code or use it for your own server (but please if you are to-do this do not come to me with questions on how to host the system as it is a rather complex affair but I will provide custom eggs for the pterodactyl panel (this is what most server hosts use)).

Section 1: System Part Descriptions

The API


This is the core to the entire project. It allows the communication between all parts of the server infrastructure. It also allows us to control access to the central database that the system uses for the data storage. If you are interested in the database please look at the section called Database Schematic Information . The API has multiple routes (If you are looking into them look at the section called What is an API route? from the link on the word) that are used to traverse around the data stored and accessible on the system, some of these routes are secure routes which cause you to have to have a API Key these are given out by server administrators/server managers (depending on how you have it all setup) of which they can add notes and it will bound to a specific user (this means that it can be back traced)

The Server Plugin


The server plugin is how the system control such as UI's, and other parts that the user does not need to worry about are handled. This however cannot do some of the custom systems that we are planning to complete such as custom item names, and descriptions. Therefore this is why we need the client module. However if you do not want to install the custom client module you can still play on the server, you will just not have the full system experience for the server, and have the UI's for the notifications systems, NPC robbery, and more.

The Client Module


To just repeat what has been stated before, this is not required to use to play on the server but will however improve your experience with the entire project. The client module will handle many things for instance:

  • Custom Item names + Descriptions

  • Custom Item mechanics

  • Access to showing UI for specific new interactable components

  • Better client optimisation and playability

  • Better logs for the system in-case an issue happens (non intrusive)

  • etc

This is just a brief outline at the time of writing this update on what I'm planning to make for the custom client module, and does not mean that all of it will be put into the client module as some stuff still have not been worked out on the feasibility scale. However, it does still mean that the client module will have a lot to offer to the users playing on the server.

Section 2: Technical Design

Database Schematic Information


The database is planned to follow the schematic below but this does not mean that it is fully completed yet and is still in development for the system, depending on how I want to pivot the server around. Some of the tables used in the table are used for moderation purposes (yes I will have custom moderation system created for the server due to it being required and me not liking the default game one), as well as server logs (these are for all users staff will be no exception).

If you look at the schematic below you will see that the entire system is focused around the "users" table, this allows all the user actions to be tied back into information, for moderation, tickets, server logs, and other parts. This will be important as I will not have the system setup to allow tickets to be opened, applications for jobs (such as moderation staff, and administrators) as it will allow the people moderating these parts to easily find information to-do with users such as why if you have been punished and other parts that they need to see.

If you wish to quit the server, please make a request to one of the server administrators as they will then be able to remove any identifiable information from records such as your IP, and HWID, however this will not remove your details when the ban was recorded as this is still needed to make sure that you are not just joining on a new account to bypass the account moderation (if you are found to be doing this all accounts will be perm banned automatically, even if it was a mistake we will have no appeals to do with bypassing the moderation system).

Schematic Below:

Link:

https://dbdocs.io/jacka9a5ded5e4/Anom-RP-Schem?view=relationships

Image:

Database Sechematic Diagram

API Information


The API works on top of typescript, this allows us to utilize the npm packages, this allows us to build on-top of already good existing code to allow the API to be better created.

The current packages being used for the API are:

The API current contains for this project routes for Users, Server Details, Discord-To-Game Link, Discord Reactions, Discord Buttons, Authorization/API Keys, Permissions and Groups. Some of these routes are divided into secure and insecure. This allows users to query some of the API routes while some remain secure such as for passing data around to update/change the database.

It current contains ~43 routes that allow the [[#The Server Plugin|plugin]] to work, as well as the discord bot. The current routes for the API are laid out in the [[API Documentation]] under System Documentation folder.

Section 3: Some Parts Being Worked On

Web Panel:


This is a web panel for the moderation staff, and server administrators. It contains areas for account access to the panel, configuration of plugins, configuration of permissions and role, and discord bot configuration.

Screen Shots:

Account Login

Login Menu Screen For The WebPanel

Create Account

Create Account Menu Screen For The WebPanel

Dashboard

Dashboard Menu Screen For The WebPanel

Accounts Management

Accounts Menu Screen For The WebPanel

Account Detailed View

Account Menu Screen For The WebPanel

Edit Account

Edi Account Menu Dropdown Screen For The WebPanel

UI Parts:


This includes screenshots from the plugins:

  • Interaction Menu

  • Notifications

  • Time Bombs

Some that are in the work are:

  • NPC Over-hall UI

  • Banking System

Screen Shots:

Interaction Menu

Interaction Menu UI

Notifications

Notifications UI

Time Bombs

Time Bombs Menu UI

Last updated