Skip to content

Commit

Permalink
v0.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
zyxkad committed Sep 7, 2024
1 parent dd802da commit abfa567
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 15 deletions.
10 changes: 10 additions & 0 deletions 2.30.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Requirement already satisfied: mcdreforged in /opt/homebrew/lib/python3.11/site-packages (2.12.3)
Requirement already satisfied: colorlog>=6.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (6.7.0)
Requirement already satisfied: colorama>=0.4.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.4.6)
Requirement already satisfied: packaging>=23.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (23.0)
Requirement already satisfied: parse>=1.18.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (1.19.0)
Requirement already satisfied: prompt-toolkit~=3.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (3.0.37)
Requirement already satisfied: psutil>=5.8.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (5.9.4)
Requirement already satisfied: ruamel.yaml~=0.17 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.17.21)
Requirement already satisfied: typing-extensions>=4.1.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (4.5.0)
Requirement already satisfied: wcwidth in /opt/homebrew/lib/python3.11/site-packages (from prompt-toolkit~=3.0->mcdreforged) (0.2.6)
10 changes: 10 additions & 0 deletions 3
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Requirement already satisfied: mcdreforged in /opt/homebrew/lib/python3.11/site-packages (2.12.3)
Requirement already satisfied: colorlog>=6.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (6.7.0)
Requirement already satisfied: colorama>=0.4.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.4.6)
Requirement already satisfied: packaging>=23.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (23.0)
Requirement already satisfied: parse>=1.18.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (1.19.0)
Requirement already satisfied: prompt-toolkit~=3.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (3.0.37)
Requirement already satisfied: psutil>=5.8.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (5.9.4)
Requirement already satisfied: ruamel.yaml~=0.17 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.17.21)
Requirement already satisfied: typing-extensions>=4.1.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (4.5.0)
Requirement already satisfied: wcwidth in /opt/homebrew/lib/python3.11/site-packages (from prompt-toolkit~=3.0->mcdreforged) (0.2.6)
10 changes: 10 additions & 0 deletions =2.6
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Requirement already satisfied: mcdreforged in /opt/homebrew/lib/python3.11/site-packages (2.12.3)
Requirement already satisfied: colorlog>=6.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (6.7.0)
Requirement already satisfied: colorama>=0.4.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.4.6)
Requirement already satisfied: packaging>=23.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (23.0)
Requirement already satisfied: parse>=1.18.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (1.19.0)
Requirement already satisfied: prompt-toolkit~=3.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (3.0.37)
Requirement already satisfied: psutil>=5.8.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (5.9.4)
Requirement already satisfied: ruamel.yaml~=0.17 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.17.21)
Requirement already satisfied: typing-extensions>=4.1.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (4.5.0)
Requirement already satisfied: wcwidth in /opt/homebrew/lib/python3.11/site-packages (from prompt-toolkit~=3.0->mcdreforged) (0.2.6)
10 changes: 10 additions & 0 deletions =3
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Requirement already satisfied: mcdreforged in /opt/homebrew/lib/python3.11/site-packages (2.12.3)
Requirement already satisfied: colorlog>=6.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (6.7.0)
Requirement already satisfied: colorama>=0.4.4 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.4.6)
Requirement already satisfied: packaging>=23.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (23.0)
Requirement already satisfied: parse>=1.18.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (1.19.0)
Requirement already satisfied: prompt-toolkit~=3.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (3.0.37)
Requirement already satisfied: psutil>=5.8.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (5.9.4)
Requirement already satisfied: ruamel.yaml~=0.17 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (0.17.21)
Requirement already satisfied: typing-extensions>=4.1.0 in /opt/homebrew/lib/python3.11/site-packages (from mcdreforged) (4.5.0)
Requirement already satisfied: wcwidth in /opt/homebrew/lib/python3.11/site-packages (from prompt-toolkit~=3.0->mcdreforged) (0.2.6)
2 changes: 1 addition & 1 deletion mcdreforged.plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"id": "tpm",
"version": "0.4.6",
"version": "0.5.0",
"name": "TpManager",
"description": {
"en_us": "A Minecraft teleport manager",
Expand Down
34 changes: 21 additions & 13 deletions tpm/commands.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

import time
from typing import TypeVar
from typing import Callable, TypeVar

import mcdreforged.api.all as MCDR

Expand All @@ -17,11 +17,14 @@

def register(server: MCDR.PluginServerInterface):
cfg = get_config()
points = WarpPoints.instance()
assert points

Commands(Prefix, config=cfg, points=WarpPoints.instance()).register_to(server)
cmd = Commands(Prefix, config=cfg, points=points)
cmd.register_to(server)

server.register_command(
MCDR.Literal(AlternativePrefix).redirects(Commands.node))
MCDR.Literal(AlternativePrefix).redirects(cmd.node))

server.register_command(
require_player(
Expand All @@ -42,20 +45,20 @@ class Commands(PermCommandSet):
Prefix = Prefix
HelpMessage = 'TP manager help message'

def __init__(self, *args, config, points, **kwargs):
def __init__(self, *args, config: TPMConfig, points: WarpPoints, **kwargs):
super().__init__(*args, **kwargs)
self.__config = config
self.__points = points
self.__tpask_map = {}
self.__tpsender_map = {}
self.__tpask_map: dict[str, tuple[Callable, Callable]] = {}
self.__tpsender_map: dict[str, Callable] = {}
self.__last_teleports: dict[str, float] = {}

@property
def config(self):
return self.__config

@property
def points() -> WarpPoints:
def points(self) -> WarpPoints:
return self.__points

def has_permission(self, src: MCDR.CommandSource, literal: str) -> bool:
Expand Down Expand Up @@ -152,11 +155,12 @@ def cancel(self, source: MCDR.PlayerCommandSource):
cb(source)

def _has_warp_permission(self, source: MCDR.CommandSource, point: WarpPoint) -> bool:
return source.has_permission(point.permission) or source.is_player and source.player.lower() == point.creator.lower()
return source.has_permission(point.permission) or (isinstance(source, MCDR.PlayerCommandSource) and source.player.lower() == point.creator.lower())

@Literal(['warp', 'w'])
@player_only
def warp(self, source: MCDR.PlayerCommandSource, name: str):
server = source.get_server()
point = self.points.get_point(name)
if point is None:
send_message(source, MCDR.RText(tr('warp.points.not_exists'), color=MCDR.RColor.red))
Expand All @@ -165,28 +169,32 @@ def warp(self, source: MCDR.PlayerCommandSource, name: str):
send_message(source, MCDR.RText(tr('warp.points.no_permission'), color=MCDR.RColor.red))
return
send_message(source, MCDR.RText(tr('warp.teleporting', name=point.name), color=MCDR.RColor.light_purple))
cmd = self.config.teleport_dim_xyz_command.format(name=player, x=point.x, y=point.y, z=point.z, dimension=point.dimension)
cmd = self.config.teleport_dim_xyz_command.format(name=source.player, x=point.x, y=point.y, z=point.z, dimension=point.dimension)
server.execute(cmd)

@Literal(['warps', 'ws'])
class warps(PermCommandSet):
def has_permission(self, src: MCDR.CommandSource, literal: str) -> bool:
assert isinstance(self.rootset, Commands)
return self.rootset.config.has_permission(src, 'warp_' + literal)

def has_force_permission(self, src: MCDR.CommandSource) -> bool:
assert isinstance(self.rootset, Commands)
return self.rootset.config.has_permission(src, 'warp_config')

@property
def points(self) -> WarpPoints:
assert isinstance(self.rootset, Commands)
return self.rootset.points

def _has_warp_permission(self, source: MCDR.CommandSource, point: WarpPoint) -> bool:
assert isinstance(self.rootset, Commands)
return self.rootset._has_warp_permission(source, point)

@Literal(['list', 'l'])
@call_with_root
def list(self: Self, source: MCDR.CommandSource):
points = [for p in self.points.warp_points if self._has_warp_permission(source, p)]
points = [p for p in self.points.warp_points if self._has_warp_permission(source, p)]
points.sort(key=lambda p: p.name.upper())
send_message(source, BIG_BLOCK_BEFOR)
for p in points:
Expand All @@ -209,10 +217,10 @@ def set(self, source: MCDR.CommandSource, name: str, x: float, y: float, z: floa
elif not self._has_warp_permission(source, point) and not self.has_force_permission(source):
send_message(source, MCDR.RText(tr('warp.points.exists'), color=MCDR.RColor.red))
return
self.points.set_points(WarpPoint(x=x, y=y, z=z, dimension=dimension, name=name,
creator=source.player if source.is_player else '',
self.points.set_point(WarpPoint(x=x, y=y, z=z, dimension=dimension, name=name,
creator=source.player if isinstance(source, MCDR.PlayerCommandSource) else '',
permission=1))
send_message(source, MCDR.RText(tr('warp.created' if point is None else 'warp.updated', point.name), color=MCDR.RColor.green), log=True)
send_message(source, MCDR.RText(tr('warp.created', name) if point is None else tr('warp.updated', point.name), color=MCDR.RColor.green), log=True)

@Literal(['remove', 'r'])
@call_with_root
Expand Down
4 changes: 3 additions & 1 deletion tpm/globals.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

from typing import Dict, List
import typing
from typing import Dict, List, Optional, ClassVar, Self

import mcdreforged.api.all as MCDR

Expand Down Expand Up @@ -53,6 +54,7 @@ class WarpPoint(JSONObject):
name: str
permission: int = 1

@typing.final
class WarpPoints(JSONStorage):
_instance: ClassVar[Optional[Self]] = None

Expand Down

0 comments on commit abfa567

Please sign in to comment.