Initial commit.

This commit is contained in:
minecraftchest1@outlook.com 2024-10-21 10:22:24 -05:00
commit 20d77c8e31
18 changed files with 54473 additions and 0 deletions

12
.editorconfig Normal file
View file

@ -0,0 +1,12 @@
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
[*]
indent_style = tab
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false

0
__init__.py Normal file
View file

17
config.ini Executable file
View file

@ -0,0 +1,17 @@
[redis]
host = localhost
port = 6379
db = 0
[minecraft]
serverdir = /home/wyatt/mcserver/plugin-dev/
servercommand = /home/wyatt/mcserver/plugin-dev/run.sh # Plain java command line also works
[authserver]
address = http://192.168.4.250:5000/
secret = 8a99237b-8df4-4602-9ebb-4539add9f6a3
[oidc]
issuer = https://auth.arsrobotics.org/application/o/test/
client = 291ccc718932aac39fb66b1f3659f036c7a049a5
secret = 23acd5ef8cff26461fbb4da1c9ec6dda1ed56bbfbeaf12f68a1682990d2cf68955681ab4e447d0a3aa9796d36bbd04c950d91a2a17e8bc50bf2d3892a2c32ed3

22
config.json Normal file
View file

@ -0,0 +1,22 @@
{
"gravel": {
"data_dir": "/home/wyatt/.local/var/gravel"
},
"valkey": {
"host": "localhost",
"port": 6379,
"db": 0,
"enabled": true
},
"minecraft": {
"servers": [
{
"name": "Default",
"uuid": "eb8b13b9-dde9-46e1-adf8-9e0d63fa47a7",
"dir": "/home/wyatt/mcserver/plugin-dev/",
"cmd": "/home/wyatt/mcserver/plugin-dev/run.sh",
"version": "paper_1.21.1"
}
]
}
}

0
lib/__init__.py Normal file
View file

17
lib/commands.py Normal file
View file

@ -0,0 +1,17 @@
from dataclasses import dataclass
import os
import lib.globalData
@dataclass
class Command:
Usage: str
Description: str
Method: callable
commands = []
def Parse(globalData: globalData, line: str):
args = str(line).split()
command = args[0]

31
lib/config.py Normal file
View file

@ -0,0 +1,31 @@
import json
class ValkeyConfig:
def __init__(self, configJSON):
self.host = configJSON.get("host", "localhost")
try:
self.port = int(configJSON.get("port", 6379))
except ValueError:
Logger.error("Unable to parse config value 'valkey.port'.")
Logger.error("Ensure 'valkey.port' is a interger")
Logger.warn("Defaulting 'valkey.port' to 6379")
try:
self.db = int(configJSON.get("db", 0))
except ValueError:
Logging.error("Unable to parse config value 'valkey.db'")
Logger.error("Ensure 'valkey.db' is a number")
Logger.warn("Defaulting 'valkey.db' to 0")
self.enabled = configJSON.get("enabled", False if isinstance(configJSON.get("enabled"), bool) else False)
class Config:
def __init__(self, _configFilePath):
with open(_configFilePath) as _configFile:
_configJSON = json.load(_configFile)
_ValkeyJson = _configJSON.get("valkey", {})
self.valkeyConf = ValkeyConfig(_ValkeyJson)

2
lib/globalData.py Normal file
View file

@ -0,0 +1,2 @@
class globalData:
commands: list = []

8
lib/pluginLoader.py Normal file
View file

@ -0,0 +1,8 @@
import importlib
import lib.globalData
def LoadPlugins(globalData: globalData):
pluginName = "plugins.core"
importlib.import_module(pluginName)

34
logging.json Normal file
View file

@ -0,0 +1,34 @@
{
"version": 1,
"disable_existing_loggers": true,
"formatters": {
"file": {
"format": "%(asctime)s: [%(module)s]: [%(levelname)s]: %(message)s",
"validate": true
},
"console": {
"format": "[%(module)s]: [%(levelname)s]: %(message)s",
"validate": true
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "console"
},
"file": {
"class": "logging.handlers.RotatingFileHandler",
"formatter": "file",
"filename": "logs//GravelMC.log"
}
},
"loggers": {
"GravelMC": {
"level": "DEBUG",
"handlers": [
"console",
"file"
]
}
}
}

54253
logs/GravelMC.log Normal file

File diff suppressed because it is too large Load diff

61
main.py Normal file
View file

@ -0,0 +1,61 @@
import json
from lib.config import Config as Config
import lib.commands
import logging, logging.config
import select, sys
import valkey
import lib.pluginLoader
global GavelVersion
GravelVersion = "0.1.0"
global Logger
with open("logging.json") as _loggingConfigFile:
logging.config.dictConfig(json.load(_loggingConfigFile))
Logger = logging.getLogger("GravelMC.Main")
def main():
Logger.info("Starting GravelMC")
Logger.info("Version: " + GravelVersion)
Logger.debug("Loading config")
configFilePath = "config.json"
config = Config(configFilePath)
Logger.debug("Config Loaded")
Logger.debug(f"Configuring Valkey client with DB: {config.valkeyConf.db} , Host: {config.valkeyConf.host}, Port: {config.valkeyConf.port}")
valkey.Valkey(host=config.valkeyConf.host, port=config.valkeyConf.port, db=config.valkeyConf.db)
Logger.debug("Loading Plugins")
lib.pluginLoader.LoadPlugins()
Logger.debug("Plugins Loaded")
Logger.debug("Beginning to loop")
while True:
loop()
Logger.debug("Ended loop")
bye()
def loop():
#Logger.debug("Beginning of loop")
ready, _, _ = select.select([sys.stdin], [], [], 0)
if ready:
line = sys.stdin.readline().strip()
lib.commands.Parse(line)
#Logger.debug("End of loop")
def bye():
Logger.info("Stopping Gravel.")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
bye()

0
plugins/core/__init__.py Normal file
View file

View file

View file

@ -0,0 +1,9 @@
import lib.commands
import lib.globalData
def init(globalData: globalData):
helpCommand: lib.commands.Command = lib.commands.Command("[command]", "Prints this help message.", helpCommand)
def helpCommand(command: str = None):
print("Available Commands:")

2
plugins/core/main.py Normal file
View file

@ -0,0 +1,2 @@
print("Loaded moduel core")

1
requirements.txt Normal file
View file

@ -0,0 +1 @@
valkey==6.0.2

4
test.py Normal file
View file

@ -0,0 +1,4 @@
import select, sys
ready, _, _ = select.select([sys.stdin], [], [], 0.025)
type(ready)