Skip to content

Commit 4b1b339

Browse files
authored
feat: tpa form selector (#2)
1 parent 95ecf8a commit 4b1b339

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

src/endstone_essentials/commands/tpa_command.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
import json
12
import uuid
23
from typing import TYPE_CHECKING
34

45
from endstone import ColorFormat, Player
56
from endstone.command import Command, CommandSender
6-
from endstone.form import MessageForm
7+
from endstone.form import MessageForm, ModalForm, Label, Dropdown
78

89
from endstone_essentials.commands.command_executor_base import CommandExecutorBase
910

@@ -43,7 +44,34 @@ def on_command(self, sender: CommandSender, command: Command, args: list[str]) -
4344
case ["tpdeny"]:
4445
self.deny_teleport_request(sender)
4546

47+
case ["tpa"]:
48+
self.open_form_selector(sender)
49+
4650
return True
51+
52+
def open_form_selector(self, player: Player):
53+
online_players = [p for p in self.plugin.server.online_players if p.unique_id != player.unique_id]
54+
55+
if len(online_players) == 0:
56+
player.send_error_message("There's no other in this server!")
57+
return
58+
59+
form = ModalForm(
60+
title="Teleport request",
61+
submit_button="Request",
62+
on_submit=lambda _, data: self.handle_teleport_request(player, online_players[json.loads(data)[1]]),
63+
on_close=lambda _: player.send_message(ColorFormat.YELLOW + "Teleport request cancelled.")
64+
)
65+
label = Label("Choose a online player who will you")
66+
selector = Dropdown(
67+
label="teleport to:",
68+
options=[p.name for p in online_players],
69+
default_index=0
70+
)
71+
form.add_control(label)
72+
form.add_control(selector)
73+
74+
player.send_form(form)
4775

4876
def handle_teleport_request(self, player: Player, target: Player) -> None:
4977
if target.unique_id in self.teleport_requests:

src/endstone_essentials/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ commands:
1212
permissions: [ "essentials.command.broadcast" ]
1313
tpa:
1414
description: "Send a teleport request to another player."
15-
usages: [ "/tpa <target: player>" ]
15+
usages: [ "/tpa [target: player]" ]
1616
permissions: [ "essentials.command.tpa" ]
1717
tpaccept:
1818
description: "Accept a teleport request."

0 commit comments

Comments
 (0)