commit a6561de5be9309448a523eccfbbb0dbe6aafc667 Author: hexlocation Date: Sun Mar 16 09:55:16 2025 +0100 add: source code diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..df66b20 --- /dev/null +++ b/.classpath @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.factorypath b/.factorypath new file mode 100644 index 0000000..a260be9 --- /dev/null +++ b/.factorypath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..cee294f --- /dev/null +++ b/.project @@ -0,0 +1,34 @@ + + + silencer + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + + + 1742071841443 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..dfa4f3a --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=true +org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations +org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..87f474b --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..cfe7866 --- /dev/null +++ b/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + dev.hex + silencer + 1.0.0 + + + UTF-8 + UTF-8 + 17 + 17 + + + + + paper + https://repo.papermc.io/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.21.4-R0.1-SNAPSHOT + provided + + + + + diff --git a/src/main/java/dev/hex/silencer/Silencer.java b/src/main/java/dev/hex/silencer/Silencer.java new file mode 100644 index 0000000..7ab0e0d --- /dev/null +++ b/src/main/java/dev/hex/silencer/Silencer.java @@ -0,0 +1,88 @@ +package dev.hex.silencer; + +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.plugin.java.JavaPlugin; + +import com.mojang.brigadier.Command; +import com.mojang.brigadier.tree.LiteralCommandNode; + +import io.papermc.paper.command.brigadier.CommandSourceStack; +import io.papermc.paper.command.brigadier.Commands; +import io.papermc.paper.command.brigadier.argument.ArgumentTypes; +import io.papermc.paper.command.brigadier.argument.resolvers.selector.PlayerSelectorArgumentResolver; +import io.papermc.paper.event.player.AsyncChatEvent; +import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; + +public class Silencer extends JavaPlugin implements Listener { + + private LiteralCommandNode muteCommand() { + return Commands.literal("mute") + .then(Commands.argument("targets", ArgumentTypes.players()) + .executes(ctx -> { + final PlayerSelectorArgumentResolver targetResolver = ctx.getArgument("targets", + PlayerSelectorArgumentResolver.class); + final List targets = targetResolver.resolve(ctx.getSource()); + final CommandSender commandExecutor = ctx.getSource().getSender(); + + for (final Player target : targets) { + NamespacedKey key = new NamespacedKey(this, "isMuted"); + PersistentDataContainer pdc = target.getPersistentDataContainer(); + + boolean isMuted = false; + + if (pdc.has(key)) + isMuted = pdc.get(key, PersistentDataType.BOOLEAN); + + pdc.set(key, PersistentDataType.BOOLEAN, !isMuted); + + final Component component = MiniMessage.miniMessage().deserialize( + String.format(getConfig().getString(isMuted ? "messages.UNMUTE_CMD_RESPONSE" + : "messages.MUTE_CMD_RESPONSE"), target.getName())); + + commandExecutor.sendMessage(component); + } + + return Command.SINGLE_SUCCESS; + })) + .build(); + } + + @Override + public void onEnable() { + saveResource("config.yml", false); + saveDefaultConfig(); + + Bukkit.getLogger().info("Seems like we are ready to go!"); + + getServer().getPluginManager().registerEvents(this, this); + + getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, commands -> { + commands.registrar().register(muteCommand()); + }); + } + + @EventHandler + public void onPlayerChat(AsyncChatEvent ev) { + + PersistentDataContainer pdc = ev.getPlayer().getPersistentDataContainer(); + NamespacedKey pKey = new NamespacedKey(this, "isMuted"); + + if (pdc.has(pKey, PersistentDataType.BOOLEAN) && pdc.get(pKey, PersistentDataType.BOOLEAN)) { + ev.getPlayer().sendMessage( + MiniMessage.miniMessage().deserialize(getConfig().getString("messages.MUTE_OFFENDER_RESPONSE"))); + ev.setCancelled(true); + } + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..44c9b80 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,7 @@ +# Silencer configuration file. + +messages: + MUTE_CMD_RESPONSE: "%s has been muted." + UNMUTE_CMD_RESPONSE: "%s has been unmuted." + MUTE_OFFENDER_RESPONSE: "You have been muted!" + diff --git a/src/main/resources/paper-plugin.yml b/src/main/resources/paper-plugin.yml new file mode 100644 index 0000000..0f2507c --- /dev/null +++ b/src/main/resources/paper-plugin.yml @@ -0,0 +1,5 @@ +name: Silencer +version: '1.0' +main: dev.hex.silencer.Silencer +description: A simple mute plugin. +api-version: '1.21.4' diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..56c10c7 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,4 @@ +name: Silencer +author: hex +main: dev.hex.silencer.Silencer +version: 1.0.0 diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..c783139 --- /dev/null +++ b/target/classes/config.yml @@ -0,0 +1,7 @@ +# Silencer configuration file. + +messages: + MUTE_CMD_RESPONSE: "%p has been muted." + UNMUTE_CMD_RESPONSE: "%p has been unmuted." + MUTE_OFFENDER_RESPONSE: "You have been muted!" + diff --git a/target/classes/dev/hex/silencer/Silencer.class b/target/classes/dev/hex/silencer/Silencer.class new file mode 100644 index 0000000..707dc6a Binary files /dev/null and b/target/classes/dev/hex/silencer/Silencer.class differ diff --git a/target/classes/paper-plugin.yml b/target/classes/paper-plugin.yml new file mode 100644 index 0000000..0f2507c --- /dev/null +++ b/target/classes/paper-plugin.yml @@ -0,0 +1,5 @@ +name: Silencer +version: '1.0' +main: dev.hex.silencer.Silencer +description: A simple mute plugin. +api-version: '1.21.4' diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..56c10c7 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,4 @@ +name: Silencer +author: hex +main: dev.hex.silencer.Silencer +version: 1.0.0 diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..3c9f0ee --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=silencer +groupId=dev.hex +version=1.0.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..4b8f66b --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +/home/hex/Documents/dev/Silencer/src/main/java/dev/hex/silencer/Silencer.java diff --git a/target/silencer-1.0.0.jar b/target/silencer-1.0.0.jar new file mode 100644 index 0000000..25c735b Binary files /dev/null and b/target/silencer-1.0.0.jar differ