From f4c64d7fe62b823eee0b07fcfa79d15da39847f9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 14 Oct 2026 11:56:00 +0000 Subject: [PATCH] Add basics-ping module with /ping Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EE9ZFuiZvhoWuGuZx6MPxV --- modules/basics-ping/README.md | 4 ++ modules/basics-ping/build.gradle.kts | 3 + .../modules/basicsping/BasicsPingModule.kt | 58 +++++++++++++++++++ .../src/main/resources/basics-module.yml | 3 + .../src/main/resources/messages.yml | 3 + 5 files changed, 71 insertions(+) create mode 100644 modules/basics-ping/README.md create mode 100644 modules/basics-ping/build.gradle.kts create mode 100644 modules/basics-ping/src/main/kotlin/com/github/spigotbasics/modules/basicsping/BasicsPingModule.kt create mode 100644 modules/basics-ping/src/main/resources/basics-module.yml create mode 100644 modules/basics-ping/src/main/resources/messages.yml diff --git a/modules/basics-ping/README.md b/modules/basics-ping/README.md new file mode 100644 index 00000000..73c1ca21 --- /dev/null +++ b/modules/basics-ping/README.md @@ -0,0 +1,4 @@ +| Command | Permission | +|------------------|--------------------| +| `/ping` | basics.ping | +| `/ping ` | basics.ping.others | diff --git a/modules/basics-ping/build.gradle.kts b/modules/basics-ping/build.gradle.kts new file mode 100644 index 00000000..c1fb740e --- /dev/null +++ b/modules/basics-ping/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + id("basics.module") +} diff --git a/modules/basics-ping/src/main/kotlin/com/github/spigotbasics/modules/basicsping/BasicsPingModule.kt b/modules/basics-ping/src/main/kotlin/com/github/spigotbasics/modules/basicsping/BasicsPingModule.kt new file mode 100644 index 00000000..33cabb77 --- /dev/null +++ b/modules/basics-ping/src/main/kotlin/com/github/spigotbasics/modules/basicsping/BasicsPingModule.kt @@ -0,0 +1,58 @@ +package com.github.spigotbasics.modules.basicsping + +import com.github.spigotbasics.core.command.parsed.CommandContextExecutor +import com.github.spigotbasics.core.command.parsed.arguments.SelectorSinglePlayerArg +import com.github.spigotbasics.core.command.parsed.context.MapContext +import com.github.spigotbasics.core.module.AbstractBasicsModule +import com.github.spigotbasics.core.module.loader.ModuleInstantiationContext +import org.bukkit.command.CommandSender +import org.bukkit.entity.Player + +class BasicsPingModule(context: ModuleInstantiationContext) : AbstractBasicsModule(context) { + private val permission = + permissionManager.createSimplePermission( + "basics.ping", + "Allows the player to see their own ping", + ) + private val permissionOthers = + permissionManager.createSimplePermission( + "basics.ping.others", + "Allows the player to see the ping of other players", + ) + + private fun msgPing(ping: Int) = messages.getMessage("ping").tagParsed("ping", ping.toString()) + + private fun msgPingOthers( + player: Player, + ping: Int, + ) = messages.getMessage("ping-others").tagParsed("ping", ping.toString()).concerns(player) + + override fun onEnable() { + commandFactory.parsedCommandBuilder("ping", permission).mapContext { + usage = "[player]" + description("Shows the ping of a player") + + path { + playerOnly() + } + + path { + permissions(permissionOthers) + arguments { + named("player", SelectorSinglePlayerArg("player")) + } + } + }.executor( + object : CommandContextExecutor { + override fun execute( + sender: CommandSender, + context: MapContext, + ) { + val target = context["player"] as Player? ?: sender as Player + val message = if (sender == target) msgPing(target.ping) else msgPingOthers(target, target.ping) + message.sendToSender(sender) + } + }, + ).register() + } +} diff --git a/modules/basics-ping/src/main/resources/basics-module.yml b/modules/basics-ping/src/main/resources/basics-module.yml new file mode 100644 index 00000000..a437f378 --- /dev/null +++ b/modules/basics-ping/src/main/resources/basics-module.yml @@ -0,0 +1,3 @@ +main-class: com.github.spigotbasics.modules.basicsping.BasicsPingModule +name: basics-ping +version: ${moduleVersion} diff --git a/modules/basics-ping/src/main/resources/messages.yml b/modules/basics-ping/src/main/resources/messages.yml new file mode 100644 index 00000000..7ae541fd --- /dev/null +++ b/modules/basics-ping/src/main/resources/messages.yml @@ -0,0 +1,3 @@ +# Tags: <#ping> +ping: "Pong! Your ping is <#ping>ms." +ping-others: "<#player-name-genitive-suffix> ping is <#ping>ms."