From bd698d69e544dee58d5c1c743083055203790434 Mon Sep 17 00:00:00 2001 From: Vincent Date: Tue, 22 Oct 2024 16:47:32 +0100 Subject: [PATCH] test: add tests for Player.send_particle --- src/endstone_test/command_executor.py | 18 +++++++++++++++++- src/endstone_test/plugin.py | 2 +- .../tests/on_player_join/test_player.py | 4 +++- .../tests/on_player_join/test_scoreboard.py | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/endstone_test/command_executor.py b/src/endstone_test/command_executor.py index c14cd27..c27e734 100644 --- a/src/endstone_test/command_executor.py +++ b/src/endstone_test/command_executor.py @@ -1,5 +1,6 @@ import json +import numpy as np from endstone import ColorFormat, Player from endstone.command import ( Command, @@ -9,6 +10,7 @@ ) from endstone.form import * from endstone.lang import Translatable as tr +from endstone.util import Vector class TestCommandExecutor(CommandExecutor): @@ -115,7 +117,7 @@ def on_command( sender.send_error_message(f"Unknown sender: {sender.__class__}") return False - case ["player", ("toast" | "title" | "kick") as test_type]: + case ["player", ("toast" | "title" | "kick" | "particle") as test_type]: if not isinstance(sender, Player): sender.send_error_message( "You must execute this command as a player" @@ -128,6 +130,20 @@ def on_command( sender.send_title("Welcome!", sender.name) elif test_type == "kick": sender.kick("kick is working!") + elif test_type == "particle": + radius = 1.0 + points = 20 + angles = np.linspace(0, 2 * np.pi, points, endpoint=False) + x_values = radius * np.cos(angles) + z_values = radius * np.sin(angles) + for x, z in zip(x_values, z_values): + location = sender.location + Vector(x, 1, z) + sender.spawn_particle( + "minecraft:basic_flame_particle", + location.x, + location.y, + location.z, + ) case ["block", *rest]: sender.send_message(str(rest)) diff --git a/src/endstone_test/plugin.py b/src/endstone_test/plugin.py index 8265ae8..ba93b5b 100644 --- a/src/endstone_test/plugin.py +++ b/src/endstone_test/plugin.py @@ -15,7 +15,7 @@ class EndstoneTest(Plugin): "usages": [ "/test (form) (message|action|modal)", "/test (sender)", - "/test (player) (toast|kick)", + "/test (player) (toast|title|kick|particle)", "/test (block) [blockStates: block_states]", ], "permissions": ["endstone_test.command.test"], diff --git a/src/endstone_test/tests/on_player_join/test_player.py b/src/endstone_test/tests/on_player_join/test_player.py index de0fdcd..22e817e 100644 --- a/src/endstone_test/tests/on_player_join/test_player.py +++ b/src/endstone_test/tests/on_player_join/test_player.py @@ -110,7 +110,9 @@ def test_player_add_tag(player: Player, server: Server): assert "test_tag" in player.scoreboard_tags assert not player.add_scoreboard_tag("test_tag") - server.dispatch_command(server.command_sender, f'tag "{player.name}" remove test_tag') + server.dispatch_command( + server.command_sender, f'tag "{player.name}" remove test_tag' + ) def test_player_remove_tag(player: Player, server: Server): diff --git a/src/endstone_test/tests/on_player_join/test_scoreboard.py b/src/endstone_test/tests/on_player_join/test_scoreboard.py index 3633ecf..30b24e4 100644 --- a/src/endstone_test/tests/on_player_join/test_scoreboard.py +++ b/src/endstone_test/tests/on_player_join/test_scoreboard.py @@ -14,7 +14,7 @@ def scoreboard(server: Server) -> Scoreboard: def test_scoreboard_value( - player: Player, server: Server, scoreboard: Scoreboard + player: Player, server: Server, scoreboard: Scoreboard ) -> None: server.dispatch_command( server.command_sender, "scoreboard objectives add test_objective dummy"