hungerlib 3.0.dev15__tar.gz → 3.0.dev16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hungerlib-3.0.dev15/src/hungerlib.egg-info → hungerlib-3.0.dev16}/PKG-INFO +1 -1
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/pyproject.toml +1 -1
- hungerlib-3.0.dev16/src/hungerlib/__init__.py +24 -0
- {hungerlib-3.0.dev15/src/hungerlib/addons → hungerlib-3.0.dev16/src/hungerlib}/configloader.py +3 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/datamap.py +10 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/messagerouter.py +4 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/panel.py +4 -0
- hungerlib-3.0.dev16/src/hungerlib/utils/__init__.py +18 -0
- hungerlib-3.0.dev15/src/hungerlib/addons/scheduler.py → hungerlib-3.0.dev16/src/hungerlib/utils/time.py +0 -35
- hungerlib-3.0.dev15/src/hungerlib/addons/snapshot.py → hungerlib-3.0.dev16/src/hungerlib/utils/utils.py +13 -1
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16/src/hungerlib.egg-info}/PKG-INFO +1 -1
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib.egg-info/SOURCES.txt +6 -9
- hungerlib-3.0.dev15/src/hungerlib/__init__.py +0 -37
- hungerlib-3.0.dev15/src/hungerlib/addons/__init__.py +0 -22
- hungerlib-3.0.dev15/src/hungerlib/addons/mchelpers.py +0 -107
- hungerlib-3.0.dev15/src/hungerlib/addons/utils.py +0 -26
- hungerlib-3.0.dev15/src/hungerlib/datamaps/__init__.py +0 -7
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/LICENSE +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/README.md +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/setup.cfg +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/__init__.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/backups.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/command.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/databases.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/filemanager.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/schedule.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/api/startup.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/servers/__init__.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/servers/generic.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib/servers/minecraft.py +0 -0
- {hungerlib-3.0.dev15/src/hungerlib/datamaps → hungerlib-3.0.dev16/src/hungerlib/utils}/colormaps.py +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib.egg-info/dependency_links.txt +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib.egg-info/requires.txt +0 -0
- {hungerlib-3.0.dev15 → hungerlib-3.0.dev16}/src/hungerlib.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from importlib.metadata import version as _pkg_version, PackageNotFoundError
|
|
2
|
+
|
|
3
|
+
# Package version
|
|
4
|
+
try:
|
|
5
|
+
__version__ = _pkg_version("hungerlib")
|
|
6
|
+
except PackageNotFoundError:
|
|
7
|
+
__version__ = "0.0.0"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
from . import panel
|
|
11
|
+
from . import servers
|
|
12
|
+
from . import messagerouter
|
|
13
|
+
from . import datamap
|
|
14
|
+
from . import configloader
|
|
15
|
+
from . import utils
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"panel",
|
|
19
|
+
"servers",
|
|
20
|
+
"messagerouter",
|
|
21
|
+
"datamap",
|
|
22
|
+
"configloader",
|
|
23
|
+
"utils",
|
|
24
|
+
]
|
|
@@ -64,3 +64,13 @@ def mapit(text: str, *maps, **runtime):
|
|
|
64
64
|
return str(d.get(k, match.group(0)))
|
|
65
65
|
text = re.sub(pattern, repl, text)
|
|
66
66
|
return text
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
__all__ = [
|
|
70
|
+
"set_default_maps",
|
|
71
|
+
"get_default_maps",
|
|
72
|
+
"Syntax",
|
|
73
|
+
"DataMap",
|
|
74
|
+
"datamap",
|
|
75
|
+
"mapit",
|
|
76
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from .colormaps import ColorMap, ASCII_COLOR_MAP, MC_COLOR_MAP
|
|
2
|
+
from .time import snapSchedule, runCountdownEvents, waitForOnline, waitForOffline, secsUntil, minsUntil
|
|
3
|
+
from .utils import Snapshot, clearTerminal, validateAll
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
'ColorMap',
|
|
7
|
+
'ASCII_COLOR_MAP',
|
|
8
|
+
'MC_COLOR_MAP',
|
|
9
|
+
'snapSchedule',
|
|
10
|
+
'runCountdownEvents',
|
|
11
|
+
'waitForOnline',
|
|
12
|
+
'waitForOffline',
|
|
13
|
+
'secsUntil',
|
|
14
|
+
'minsUntil',
|
|
15
|
+
'Snapshot',
|
|
16
|
+
'clearTerminal',
|
|
17
|
+
'validateAll'
|
|
18
|
+
]
|
|
@@ -21,33 +21,12 @@ def snapSchedule(minimumMinutes=30, snapMinutes=(0, 30)):
|
|
|
21
21
|
"formatted": scheduled.strftime("%I:%M %p")
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
24
|
def runCountdownEvents(
|
|
26
25
|
target_time,
|
|
27
26
|
minute_callbacks=None,
|
|
28
27
|
second_callbacks=None,
|
|
29
28
|
tick_interval=1
|
|
30
29
|
):
|
|
31
|
-
"""
|
|
32
|
-
A simple, readable countdown engine.
|
|
33
|
-
|
|
34
|
-
- Counts down until `target_time`
|
|
35
|
-
- When the countdown hits a configured minute mark, it runs that callback
|
|
36
|
-
- When the countdown hits a configured second mark, it runs that callback
|
|
37
|
-
|
|
38
|
-
Parameters:
|
|
39
|
-
target_time (datetime):
|
|
40
|
-
The time we are counting down to.
|
|
41
|
-
|
|
42
|
-
minute_callbacks (dict[int, callable]):
|
|
43
|
-
Example: {5: func, 1: func}
|
|
44
|
-
|
|
45
|
-
second_callbacks (dict[int, callable]):
|
|
46
|
-
Example: {10: func, 5: func, 1: func}
|
|
47
|
-
|
|
48
|
-
tick_interval (int):
|
|
49
|
-
How often to check the countdown (in seconds).
|
|
50
|
-
"""
|
|
51
30
|
|
|
52
31
|
# Default to empty dicts if none provided
|
|
53
32
|
minute_callbacks = minute_callbacks or {}
|
|
@@ -78,13 +57,7 @@ def runCountdownEvents(
|
|
|
78
57
|
|
|
79
58
|
time.sleep(tick_interval)
|
|
80
59
|
|
|
81
|
-
|
|
82
|
-
|
|
83
60
|
def waitForOnline(server, timeout=60, interval=2):
|
|
84
|
-
"""
|
|
85
|
-
Wait until the server reports status 'running'.
|
|
86
|
-
Returns True if online before timeout.
|
|
87
|
-
"""
|
|
88
61
|
elapsed = 0
|
|
89
62
|
while elapsed < timeout:
|
|
90
63
|
if server.isOnline():
|
|
@@ -93,12 +66,7 @@ def waitForOnline(server, timeout=60, interval=2):
|
|
|
93
66
|
elapsed += interval
|
|
94
67
|
return False
|
|
95
68
|
|
|
96
|
-
|
|
97
69
|
def waitForOffline(server, timeout=60, interval=2):
|
|
98
|
-
"""
|
|
99
|
-
Wait until the server reports status 'offline'.
|
|
100
|
-
Returns True if offline before timeout.
|
|
101
|
-
"""
|
|
102
70
|
elapsed = 0
|
|
103
71
|
while elapsed < timeout:
|
|
104
72
|
if server.isOffline():
|
|
@@ -107,13 +75,10 @@ def waitForOffline(server, timeout=60, interval=2):
|
|
|
107
75
|
elapsed += interval
|
|
108
76
|
return False
|
|
109
77
|
|
|
110
|
-
|
|
111
|
-
|
|
112
78
|
def secsUntil(target):
|
|
113
79
|
now = datetime.now()
|
|
114
80
|
return int((target - now).total_seconds())
|
|
115
81
|
|
|
116
|
-
|
|
117
82
|
def minsUntil(target):
|
|
118
83
|
now = datetime.now()
|
|
119
84
|
return int((target - now).total_seconds()) // 60
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
1
3
|
class Snapshot:
|
|
2
4
|
def __init__(self, Server, rounding=2, gb=False):
|
|
3
5
|
self.Server = Server
|
|
@@ -28,4 +30,14 @@ class Snapshot:
|
|
|
28
30
|
if self.players is not None:
|
|
29
31
|
base += f'\nOnline players: {self.players}'
|
|
30
32
|
|
|
31
|
-
return base
|
|
33
|
+
return base
|
|
34
|
+
|
|
35
|
+
def clearTerminal():
|
|
36
|
+
os.system("clear" if os.name == "posix" else "cls")
|
|
37
|
+
|
|
38
|
+
def validateAll(panel, server):
|
|
39
|
+
return (
|
|
40
|
+
panel.ping() is True and
|
|
41
|
+
panel.validateAPI() is True and
|
|
42
|
+
server.getStatus() == "running"
|
|
43
|
+
)
|
|
@@ -2,6 +2,7 @@ LICENSE
|
|
|
2
2
|
README.md
|
|
3
3
|
pyproject.toml
|
|
4
4
|
src/hungerlib/__init__.py
|
|
5
|
+
src/hungerlib/configloader.py
|
|
5
6
|
src/hungerlib/datamap.py
|
|
6
7
|
src/hungerlib/messagerouter.py
|
|
7
8
|
src/hungerlib/panel.py
|
|
@@ -10,12 +11,6 @@ src/hungerlib.egg-info/SOURCES.txt
|
|
|
10
11
|
src/hungerlib.egg-info/dependency_links.txt
|
|
11
12
|
src/hungerlib.egg-info/requires.txt
|
|
12
13
|
src/hungerlib.egg-info/top_level.txt
|
|
13
|
-
src/hungerlib/addons/__init__.py
|
|
14
|
-
src/hungerlib/addons/configloader.py
|
|
15
|
-
src/hungerlib/addons/mchelpers.py
|
|
16
|
-
src/hungerlib/addons/scheduler.py
|
|
17
|
-
src/hungerlib/addons/snapshot.py
|
|
18
|
-
src/hungerlib/addons/utils.py
|
|
19
14
|
src/hungerlib/api/__init__.py
|
|
20
15
|
src/hungerlib/api/backups.py
|
|
21
16
|
src/hungerlib/api/command.py
|
|
@@ -23,8 +18,10 @@ src/hungerlib/api/databases.py
|
|
|
23
18
|
src/hungerlib/api/filemanager.py
|
|
24
19
|
src/hungerlib/api/schedule.py
|
|
25
20
|
src/hungerlib/api/startup.py
|
|
26
|
-
src/hungerlib/datamaps/__init__.py
|
|
27
|
-
src/hungerlib/datamaps/colormaps.py
|
|
28
21
|
src/hungerlib/servers/__init__.py
|
|
29
22
|
src/hungerlib/servers/generic.py
|
|
30
|
-
src/hungerlib/servers/minecraft.py
|
|
23
|
+
src/hungerlib/servers/minecraft.py
|
|
24
|
+
src/hungerlib/utils/__init__.py
|
|
25
|
+
src/hungerlib/utils/colormaps.py
|
|
26
|
+
src/hungerlib/utils/time.py
|
|
27
|
+
src/hungerlib/utils/utils.py
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
from importlib.metadata import version as _pkg_version, PackageNotFoundError
|
|
2
|
-
|
|
3
|
-
# Package version
|
|
4
|
-
try:
|
|
5
|
-
__version__ = _pkg_version("hungerlib")
|
|
6
|
-
except PackageNotFoundError:
|
|
7
|
-
__version__ = "0.0.0"
|
|
8
|
-
|
|
9
|
-
# --- Core modules ---
|
|
10
|
-
from .panel import Panel
|
|
11
|
-
from .messagerouter import MessageRouter
|
|
12
|
-
from .datamap import *
|
|
13
|
-
|
|
14
|
-
# --- API endpoints ---
|
|
15
|
-
from .api.schedule import ScheduleAPI
|
|
16
|
-
from .api.filemanager import FileManagerAPI
|
|
17
|
-
from .api.backups import BackupsAPI
|
|
18
|
-
from .api.databases import DatabasesAPI
|
|
19
|
-
from .api.startup import StartupAPI
|
|
20
|
-
|
|
21
|
-
__all__ = [
|
|
22
|
-
"__version__",
|
|
23
|
-
|
|
24
|
-
# core utilities
|
|
25
|
-
"Panel",
|
|
26
|
-
"MessageRouter",
|
|
27
|
-
"Syntax",
|
|
28
|
-
"DataMap",
|
|
29
|
-
"mapit",
|
|
30
|
-
|
|
31
|
-
# API endpoints
|
|
32
|
-
"ScheduleAPI",
|
|
33
|
-
"FileManagerAPI",
|
|
34
|
-
"BackupsAPI",
|
|
35
|
-
"DatabasesAPI",
|
|
36
|
-
"StartupAPI",
|
|
37
|
-
]
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
from .snapshot import Snapshot
|
|
2
|
-
from .scheduler import *
|
|
3
|
-
from .utils import *
|
|
4
|
-
from .configloader import *
|
|
5
|
-
|
|
6
|
-
__all__ = [
|
|
7
|
-
'runCountdownEvents',
|
|
8
|
-
'waitForOnline',
|
|
9
|
-
'waitForOffline',
|
|
10
|
-
'Snapshot',
|
|
11
|
-
'snapSchedule',
|
|
12
|
-
'secsUntil',
|
|
13
|
-
'minsUntil',
|
|
14
|
-
'validateAll',
|
|
15
|
-
'mb_gb',
|
|
16
|
-
'gb_mb',
|
|
17
|
-
'mib_gib',
|
|
18
|
-
'gib_mib',
|
|
19
|
-
'clearTerminal',
|
|
20
|
-
'load_yaml',
|
|
21
|
-
'loadConfig',
|
|
22
|
-
]
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# Minecraft-specific helper functions that operate on a MinecraftServer instance.
|
|
2
|
-
|
|
3
|
-
class MCHelpers:
|
|
4
|
-
def __init__(self, server):
|
|
5
|
-
"""
|
|
6
|
-
Helper utilities for a MinecraftServer instance.
|
|
7
|
-
"""
|
|
8
|
-
self.server = server
|
|
9
|
-
|
|
10
|
-
def run(self, command):
|
|
11
|
-
"""Send a raw RCON command."""
|
|
12
|
-
return self.server._rcon_send(command)
|
|
13
|
-
|
|
14
|
-
def tellraw(self, target, message):
|
|
15
|
-
"""Send a tellraw message with color translation."""
|
|
16
|
-
translated = self.server._translate_mc_colors(message)
|
|
17
|
-
safe = translated.replace('"', '\\"')
|
|
18
|
-
cmd = f'tellraw {target} {{"text":"{safe}"}}'
|
|
19
|
-
return self.run(cmd)
|
|
20
|
-
|
|
21
|
-
def kick(self, player, message="Kicked"):
|
|
22
|
-
safe = message.replace('"', '\\"')
|
|
23
|
-
return self.run(f'kick {player} "{safe}"')
|
|
24
|
-
|
|
25
|
-
def kickAll(self, message="Server restarting"):
|
|
26
|
-
safe = message.replace('"', '\\"')
|
|
27
|
-
return self.run(f'kick @a "{safe}"')
|
|
28
|
-
|
|
29
|
-
def whitelistAdd(self, player):
|
|
30
|
-
return self.run(f"whitelist add {player}")
|
|
31
|
-
|
|
32
|
-
def whitelistRemove(self, player):
|
|
33
|
-
return self.run(f"whitelist remove {player}")
|
|
34
|
-
|
|
35
|
-
def whitelistList(self):
|
|
36
|
-
return self.run("whitelist list")
|
|
37
|
-
|
|
38
|
-
def runFunction(self, function_name):
|
|
39
|
-
"""Run a datapack function."""
|
|
40
|
-
return self.run(f"function {function_name}")
|
|
41
|
-
|
|
42
|
-
def enableDatapack(self, name):
|
|
43
|
-
return self.run(f"datapack enable {name}")
|
|
44
|
-
|
|
45
|
-
def disableDatapack(self, name):
|
|
46
|
-
return self.run(f"datapack disable {name}")
|
|
47
|
-
|
|
48
|
-
def listDatapacks(self):
|
|
49
|
-
return self.run("datapack list")
|
|
50
|
-
|
|
51
|
-
# ============================================================
|
|
52
|
-
# GAMERULE HELPERS
|
|
53
|
-
# ============================================================
|
|
54
|
-
|
|
55
|
-
def setGamerule(self, rule, value):
|
|
56
|
-
return self.run(f"gamerule {rule} {value}")
|
|
57
|
-
|
|
58
|
-
def getGamerule(self, rule):
|
|
59
|
-
return self.run(f"gamerule {rule}")
|
|
60
|
-
|
|
61
|
-
# ============================================================
|
|
62
|
-
# SCOREBOARD HELPERS
|
|
63
|
-
# ============================================================
|
|
64
|
-
|
|
65
|
-
def scoreboardAddObjective(self, name, criteria="dummy", display_name=None):
|
|
66
|
-
if display_name:
|
|
67
|
-
safe = display_name.replace('"', '\\"')
|
|
68
|
-
return self.run(f'scoreboard objectives add {name} {criteria} "{safe}"')
|
|
69
|
-
return self.run(f"scoreboard objectives add {name} {criteria}")
|
|
70
|
-
|
|
71
|
-
def scoreboardRemoveObjective(self, name):
|
|
72
|
-
return self.run(f"scoreboard objectives remove {name}")
|
|
73
|
-
|
|
74
|
-
def scoreboardSetDisplay(self, slot, objective):
|
|
75
|
-
return self.run(f"scoreboard objectives setdisplay {slot} {objective}")
|
|
76
|
-
|
|
77
|
-
def scoreboardSet(self, player, objective, value):
|
|
78
|
-
return self.run(f"scoreboard players set {player} {objective} {value}")
|
|
79
|
-
|
|
80
|
-
def scoreboardAdd(self, player, objective, value):
|
|
81
|
-
return self.run(f"scoreboard players add {player} {objective} {value}")
|
|
82
|
-
|
|
83
|
-
def scoreboardGet(self, player, objective):
|
|
84
|
-
return self.run(f"scoreboard players get {player} {objective}")
|
|
85
|
-
|
|
86
|
-
# ============================================================
|
|
87
|
-
# TIME & WEATHER HELPERS
|
|
88
|
-
# ============================================================
|
|
89
|
-
|
|
90
|
-
def setTime(self, value):
|
|
91
|
-
return self.run(f"time set {value}")
|
|
92
|
-
|
|
93
|
-
def addTime(self, value):
|
|
94
|
-
return self.run(f"time add {value}")
|
|
95
|
-
|
|
96
|
-
def setWeather(self, weather, duration=None):
|
|
97
|
-
if duration:
|
|
98
|
-
return self.run(f"weather {weather} {duration}")
|
|
99
|
-
return self.run(f"weather {weather}")
|
|
100
|
-
|
|
101
|
-
# ============================================================
|
|
102
|
-
# BROADCAST HELPERS
|
|
103
|
-
# ============================================================
|
|
104
|
-
|
|
105
|
-
def broadcast(self, message):
|
|
106
|
-
"""Broadcast using tellraw @a."""
|
|
107
|
-
return self.tellraw("@a", message)
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
def mb_gb(mb, floor=False):
|
|
4
|
-
return mb / 1000 if not floor else mb // 1000
|
|
5
|
-
|
|
6
|
-
def gb_mb(gb):
|
|
7
|
-
return gb * 1000
|
|
8
|
-
|
|
9
|
-
def mib_gib(mib, floor=False):
|
|
10
|
-
return mib / 1024 if not floor else mib // 1024
|
|
11
|
-
|
|
12
|
-
def gib_mib(gib):
|
|
13
|
-
return gib * 1024
|
|
14
|
-
|
|
15
|
-
def clearTerminal():
|
|
16
|
-
os.system("clear" if os.name == "posix" else "cls")
|
|
17
|
-
|
|
18
|
-
def validateAll(panel, server):
|
|
19
|
-
"""
|
|
20
|
-
Validate panel connectivity, API access, and server running state.
|
|
21
|
-
"""
|
|
22
|
-
return (
|
|
23
|
-
panel.ping() is True and
|
|
24
|
-
panel.validateAPI() is True and
|
|
25
|
-
server.getStatus() == "running"
|
|
26
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hungerlib-3.0.dev15/src/hungerlib/datamaps → hungerlib-3.0.dev16/src/hungerlib/utils}/colormaps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|