mirror of
https://github.com/Shiewk/SModeration.git
synced 2026-04-28 05:54:16 +02:00
Add permissions for mute/kick/ban immunity
This commit is contained in:
@@ -17,6 +17,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static net.kyori.adventure.text.Component.text;
|
||||||
|
|
||||||
public class BanCommand implements TabExecutor {
|
public class BanCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
@@ -45,6 +47,11 @@ public class BanCommand implements TabExecutor {
|
|||||||
sender.sendMessage(Component.text("This player is either offline or was never on this server.").color(NamedTextColor.RED));
|
sender.sendMessage(Component.text("This player is either offline or was never on this server.").color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
final Player toPlayer = Bukkit.getPlayer(uuid);
|
||||||
|
if (toPlayer != null && toPlayer.hasPermission("smod.preventban")){
|
||||||
|
sender.sendMessage(text().content("This player can't be banned.").color(NamedTextColor.RED));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
long duration = 0;
|
long duration = 0;
|
||||||
int p = 1;
|
int p = 1;
|
||||||
for (int i = 1 /* start with index 1 to avoid player name */; i < args.length; i++) {
|
for (int i = 1 /* start with index 1 to avoid player name */; i < args.length; i++) {
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static net.kyori.adventure.text.Component.text;
|
||||||
|
|
||||||
public class KickCommand implements TabExecutor {
|
public class KickCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
@@ -45,6 +47,10 @@ public class KickCommand implements TabExecutor {
|
|||||||
sender.sendMessage(Component.text("You can't kick yourself.").color(NamedTextColor.RED));
|
sender.sendMessage(Component.text("You can't kick yourself.").color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (player.hasPermission("smod.preventkick")){
|
||||||
|
sender.sendMessage(text().content("This player can't be kicked.").color(NamedTextColor.RED));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
StringBuilder reason = new StringBuilder();
|
StringBuilder reason = new StringBuilder();
|
||||||
for (int i = 1; i < args.length; i++) {
|
for (int i = 1; i < args.length; i++) {
|
||||||
if (!reason.isEmpty()){
|
if (!reason.isEmpty()){
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import de.shiewk.smoderation.SModeration;
|
|||||||
import de.shiewk.smoderation.punishments.Punishment;
|
import de.shiewk.smoderation.punishments.Punishment;
|
||||||
import de.shiewk.smoderation.util.PlayerUtil;
|
import de.shiewk.smoderation.util.PlayerUtil;
|
||||||
import de.shiewk.smoderation.util.TimeUtil;
|
import de.shiewk.smoderation.util.TimeUtil;
|
||||||
import net.kyori.adventure.text.Component;
|
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.*;
|
import org.bukkit.command.*;
|
||||||
@@ -17,6 +16,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static net.kyori.adventure.text.Component.text;
|
||||||
|
|
||||||
public class MuteCommand implements TabExecutor {
|
public class MuteCommand implements TabExecutor {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
@@ -29,20 +30,25 @@ public class MuteCommand implements TabExecutor {
|
|||||||
} else if (sender instanceof Player pl){
|
} else if (sender instanceof Player pl){
|
||||||
senderUUID = pl.getUniqueId();
|
senderUUID = pl.getUniqueId();
|
||||||
} else if (sender instanceof BlockCommandSender){
|
} else if (sender instanceof BlockCommandSender){
|
||||||
sender.sendMessage(Component.text("Blocks can't execute this command.").color(NamedTextColor.RED));
|
sender.sendMessage(text("Blocks can't execute this command.").color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage(Component.text("Your command sender type is unknown (%s).".formatted(sender.getClass().getName())).color(NamedTextColor.RED));
|
sender.sendMessage(text("Your command sender type is unknown (%s).".formatted(sender.getClass().getName())).color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
UUID uuid = PlayerUtil.offlinePlayerUUIDByName(playerName);
|
UUID uuid = PlayerUtil.offlinePlayerUUIDByName(playerName);
|
||||||
if (senderUUID.equals(uuid)) {
|
if (senderUUID.equals(uuid)) {
|
||||||
sender.sendMessage(Component.text("You can't mute yourself.").color(NamedTextColor.RED));
|
sender.sendMessage(text("You can't mute yourself.").color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (uuid == null) {
|
if (uuid == null) {
|
||||||
sender.sendMessage(Component.text("This player is either offline or was never on this server.").color(NamedTextColor.RED));
|
sender.sendMessage(text("This player is either offline or was never on this server.").color(NamedTextColor.RED));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
final Player toPlayer = Bukkit.getPlayer(uuid);
|
||||||
|
if (toPlayer != null && toPlayer.hasPermission("smod.preventmute")){
|
||||||
|
sender.sendMessage(text().content("This player can't be muted.").color(NamedTextColor.RED));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
long duration = 0;
|
long duration = 0;
|
||||||
@@ -59,11 +65,11 @@ public class MuteCommand implements TabExecutor {
|
|||||||
if (i == args.length - 1){ p = args.length; }
|
if (i == args.length - 1){ p = args.length; }
|
||||||
}
|
}
|
||||||
if (duration == 0){
|
if (duration == 0){
|
||||||
sender.sendMessage(Component.text("Please provide a valid duration.").color(NamedTextColor.RED));
|
sender.sendMessage(text("Please provide a valid duration.").color(NamedTextColor.RED));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (duration < 0){
|
if (duration < 0){
|
||||||
sender.sendMessage(Component.text("Please provide a duration that's longer than 0ms.").color(NamedTextColor.RED));
|
sender.sendMessage(text("Please provide a duration that's longer than 0ms.").color(NamedTextColor.RED));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
StringBuilder reason = new StringBuilder();
|
StringBuilder reason = new StringBuilder();
|
||||||
|
|||||||
@@ -117,3 +117,12 @@ permissions:
|
|||||||
description: Allows the player to view and modify other players ender chests.
|
description: Allows the player to view and modify other players ender chests.
|
||||||
children:
|
children:
|
||||||
- smod.enderchestsee
|
- smod.enderchestsee
|
||||||
|
smod.preventmute:
|
||||||
|
default: op
|
||||||
|
description: Prevents the player from being muted (if online)
|
||||||
|
smod.preventkick:
|
||||||
|
default: op
|
||||||
|
description: Prevents the player from being muted (if online)
|
||||||
|
smod.preventban:
|
||||||
|
default: op
|
||||||
|
description: Prevents the player from being muted (if online)
|
||||||
Reference in New Issue
Block a user