mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-26 17:05:01 +00:00
Please read the commit description for a full changelog
- Reimplements the clownfish toggle in a much better way - Completely rewrites the plugin's chat formatting system - Tags now use MiniMessage instead of color codes. New tags are automatically converted. - /adminchat now uses MiniMessage for its messages - /autoclear and /autotp now use MiniMessage for their messages - /banip now uses MiniMessage for its messages - /bird now uses MiniMessage for its messages (and also now shows a rainbow message) - /blockcmd now uses MiniMessage for its messages - /clownfish now uses MiniMessage for its messages - /notes now uses MiniMessage for its messages - /op now uses MiniMessage for its messages - /plc now uses MiniMessage for its messages - Fixes bug in /stop where the stop message was not showing properly - Condenses /tagrainbow into /tag and integrates /tag gradient into /tag set using MiniMessage - /toggle now uses MiniMessage for its messages - /tossmob now uses MiniMessage for its messages - /unban, /unbanip, and /unbanname now use MiniMessage for its messages - /unblockcmd now uses MiniMessage for its messages - /uncage now uses MiniMessage for its messages - /undisguiseall now uses MiniMessage for its messages - /unlinkdiscord now uses MiniMessage for its messages - /unmute now uses MiniMessage for its messages - /vanish now uses MiniMessage for its messages - /vote now partially uses MiniMessage for its messages - /warn now uses MiniMessage for its messages - Deprecates FreedomCommand.msg(String) for now
This commit is contained in:
parent
922fa4a34f
commit
34269bde09
@ -1,20 +1,24 @@
|
||||
package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Displayable;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.StyleBuilderApplicable;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.SoundCategory;
|
||||
@ -23,6 +27,9 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static me.totalfreedom.totalfreedommod.util.FUtil.playerMsg;
|
||||
|
||||
public class ChatManager extends FreedomService
|
||||
@ -38,107 +45,103 @@ public class ChatManager extends FreedomService
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onPlayerChatFormat(AsyncPlayerChatEvent event)
|
||||
public void onPlayerChat(AsyncChatEvent event)
|
||||
{
|
||||
try
|
||||
{
|
||||
handleChatEvent(event);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
FLog.severe(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleChatEvent(AsyncPlayerChatEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
String message = event.getMessage().trim();
|
||||
|
||||
// Format colors and strip &k
|
||||
message = FUtil.colorize(message);
|
||||
message = message.replaceAll(ChatColor.MAGIC.toString(), "&k");
|
||||
// Important information for later down the line
|
||||
String steamrolled = FUtil.steamroll(event.originalMessage());
|
||||
Player player = event.getPlayer();
|
||||
FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||
PlayerData playerData = plugin.pl.getData(player);
|
||||
|
||||
// Chat is disabled
|
||||
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
playerMsg(player, "Chat is currently disabled.", org.bukkit.ChatColor.RED);
|
||||
return;
|
||||
}
|
||||
|
||||
// Truncate messages that are too long - 256 characters is vanilla client max
|
||||
if (message.length() > 256)
|
||||
{
|
||||
message = message.substring(0, 256);
|
||||
FSync.playerMsg(player, "Message was shortened because it was too long to send.");
|
||||
}
|
||||
|
||||
final FPlayer fPlayer = plugin.pl.getPlayerSync(player);
|
||||
if (fPlayer.isLockedUp())
|
||||
{
|
||||
FSync.playerMsg(player, "You're locked up and cannot talk.");
|
||||
event.getPlayer().sendMessage(FUtil.miniMessage("<red>The chat is currently disabled."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for adminchat
|
||||
if (fPlayer.inAdminChat())
|
||||
// Locked up
|
||||
else if (fPlayer.isLockedUp())
|
||||
{
|
||||
FSync.adminChatMessage(player, message);
|
||||
event.getPlayer().sendMessage(FUtil.miniMessage("<red>You are locked up and thus can't talk."));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
// Check for 4chan trigger
|
||||
if (ConfigEntry.FOURCHAN_ENABLED.getBoolean())
|
||||
// Admin chat is enabled
|
||||
else if (fPlayer.inAdminChat())
|
||||
{
|
||||
boolean green = ChatColor.stripColor(message).toLowerCase().startsWith(">");
|
||||
boolean orange = ChatColor.stripColor(message).toLowerCase().endsWith("<");
|
||||
|
||||
if (green)
|
||||
{
|
||||
message = ChatColor.GREEN + message;
|
||||
adminChat(player, steamrolled);
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
else if (orange)
|
||||
// The event was already cancelled elsewhere or the player was muted
|
||||
else if (event.isCancelled() || fPlayer.isMuted())
|
||||
{
|
||||
message = ChatColor.GOLD + message;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Finally, set message
|
||||
event.setMessage(message);
|
||||
// Tag
|
||||
Component tag = Strings.isNullOrEmpty(fPlayer.getTag()) ? Component.empty() : FUtil.miniMessage(fPlayer.getTag())
|
||||
.append(Component.space());
|
||||
|
||||
// Make format
|
||||
String format = "%1$s §8\u00BB §f%2$s";
|
||||
// Nickname
|
||||
Component nickname = player.displayName();
|
||||
|
||||
String tag = fPlayer.getTag();
|
||||
if (tag != null && !tag.isEmpty())
|
||||
// Splitter
|
||||
Component splitter = Component.text("»", NamedTextColor.DARK_GRAY);
|
||||
|
||||
// Message
|
||||
TextComponent.Builder message = Component.text();
|
||||
|
||||
// Truncate the message if it's too long
|
||||
if (steamrolled.length() > 256)
|
||||
{
|
||||
format = tag.replace("%", "%%") + " " + format;
|
||||
steamrolled = steamrolled.substring(0, 256);
|
||||
}
|
||||
|
||||
// Check for mentions
|
||||
String stripped = ChatColor.stripColor(message).toLowerCase();
|
||||
// Pinging
|
||||
Arrays.stream(steamrolled.split(" ")).filter(string -> string.startsWith("@")).forEach(possiblePlayer ->
|
||||
{
|
||||
Player potential = server.getPlayer(possiblePlayer.replaceAll("@", ""));
|
||||
|
||||
/* There is an issue would have allowed muted players to ping players. The issue is caused by the order in which
|
||||
* these event handlers are registered when the plugin starts up. Muter is registered after the ChatManager,
|
||||
* which results in latter being called first (before the former can cancel it). EventPriority does not seem to
|
||||
* make a difference. As a short-term solution I've added this mute check alongside the usual isCancelled check
|
||||
* so that the issue is mitigated, but a long-term solution should be to change the order in which things like
|
||||
* ChatManager and Muter are registered. */
|
||||
if (!event.isCancelled() && !plugin.pl.getPlayer(player).isMuted())
|
||||
// Ping only that particular player
|
||||
if (potential != null)
|
||||
{
|
||||
server.getOnlinePlayers().forEach(pl ->
|
||||
ping(player);
|
||||
}
|
||||
// Ping everyone (if the person pinging is an admin)
|
||||
else if (possiblePlayer.equalsIgnoreCase("@everyone") && plugin.al.isAdmin(player))
|
||||
{
|
||||
if (stripped.contains("@" + pl.getName()) || (plugin.al.isAdmin(player) && stripped.contains("@everyone")))
|
||||
{
|
||||
pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
|
||||
server.getOnlinePlayers().forEach(this::ping);
|
||||
}
|
||||
});
|
||||
|
||||
// Chat colorization
|
||||
// -- 4chan mode --
|
||||
if (steamrolled.startsWith("> ") && ConfigEntry.FOURCHAN_ENABLED.getBoolean())
|
||||
{
|
||||
message.append(Component.text(steamrolled, NamedTextColor.GREEN));
|
||||
}
|
||||
// -- Legacy chat colors --
|
||||
else if (FUtil.containsChatColor(steamrolled))
|
||||
{
|
||||
message.append(FUtil.colorizeAsComponent(steamrolled.replaceAll("&k", "")));
|
||||
}
|
||||
// -- MiniMessage --
|
||||
else
|
||||
{
|
||||
message.append(FUtil.miniMessage(steamrolled));
|
||||
}
|
||||
|
||||
// Set format
|
||||
event.setFormat(format);
|
||||
// This simply filters out shit like &k in a simple but stupid way.
|
||||
Component filtered = FUtil.miniMessage(FUtil.miniMessage(message.build()));
|
||||
|
||||
event.setCancelled(true);
|
||||
server.broadcast(FUtil.miniMessage("<tag><nickname> <splitter> <message>",
|
||||
Placeholder.component("tag", tag),
|
||||
Placeholder.component("nickname", nickname),
|
||||
Placeholder.component("splitter", splitter),
|
||||
Placeholder.component("message", filtered)));
|
||||
}
|
||||
|
||||
public ChatColor getColor(Displayable display)
|
||||
@ -193,9 +196,21 @@ public class ChatManager extends FreedomService
|
||||
|
||||
public void messageAllAdmins(String message, TagResolver... placeholders)
|
||||
{
|
||||
Component parsed = FUtil.MINI_MESSAGE.deserialize(message, placeholders);
|
||||
Component parsed = FUtil.miniMessage(message, placeholders);
|
||||
plugin.getComponentLogger().info(parsed);
|
||||
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)).forEach(player ->
|
||||
player.sendMessage(parsed));
|
||||
}
|
||||
|
||||
public void broadcastSplit(String forAdmins, String forOperators, TagResolver... placeholders)
|
||||
{
|
||||
messageAllAdmins(forAdmins, placeholders);
|
||||
server.getOnlinePlayers().stream().filter(player -> !plugin.al.isAdmin(player)).forEach(player ->
|
||||
player.sendMessage(FUtil.miniMessage(forOperators, placeholders)));
|
||||
}
|
||||
|
||||
public void ping(Player player)
|
||||
{
|
||||
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
|
||||
}
|
||||
}
|
@ -36,7 +36,6 @@ public class LoginProcess extends FreedomService
|
||||
private static boolean lockdownEnabled = false;
|
||||
public List<String> TELEPORT_ON_JOIN = new ArrayList<>();
|
||||
public List<String> CLEAR_ON_JOIN = new ArrayList<>();
|
||||
public List<String> CLOWNFISH_TOGGLE = new ArrayList<>();
|
||||
|
||||
public static boolean isLockdownEnabled()
|
||||
{
|
||||
|
@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -19,13 +20,13 @@ public class Command_adminchat extends FreedomCommand
|
||||
{
|
||||
if (senderIsConsole)
|
||||
{
|
||||
msg("You must be in-game to toggle admin chat, it cannot be toggled via CONSOLE or Telnet.");
|
||||
msgNew("<red>You must be in-game to toggle admin chat, it cannot be toggled via CONSOLE or Telnet.");
|
||||
return true;
|
||||
}
|
||||
|
||||
FPlayer userinfo = plugin.pl.getPlayer(playerSender);
|
||||
userinfo.setAdminChat(!userinfo.inAdminChat());
|
||||
msg("Admin chat turned " + (userinfo.inAdminChat() ? "on" : "off") + ".");
|
||||
msgNew("Admin chat turned <status>.", Placeholder.unparsed("status", userinfo.inAdminChat() ? "on" : "off"));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -15,7 +16,7 @@ public class Command_attributelist extends FreedomCommand
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
msg("All possible attributes: " + FUtil.listToString(Arrays.stream(Attribute.values()).map(Enum::name).toList()));
|
||||
msgNew("All possible attributes: <attributes>", Placeholder.unparsed("attributes", FUtil.listToString(Arrays.stream(Attribute.values()).map(Enum::name).toList())));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -29,7 +30,8 @@ public class Command_autoclear extends FreedomCommand
|
||||
plugin.lp.CLEAR_ON_JOIN.add(args[0]);
|
||||
}
|
||||
|
||||
msg(args[0] + " will " + (enabled ? "no longer" : "now") + " have their inventory cleared when they join.");
|
||||
msgNew("<player> will <status> have their inventory cleared when they join.",
|
||||
Placeholder.unparsed("player", args[0]), Placeholder.unparsed("status", enabled ? "no longer" : "now"));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -29,8 +30,8 @@ public class Command_autotp extends FreedomCommand
|
||||
plugin.lp.TELEPORT_ON_JOIN.add(args[0]);
|
||||
}
|
||||
|
||||
msg(args[0] + " will " + (enabled ? "no longer" : "now") + " be automatically teleported when they join.");
|
||||
|
||||
msgNew("<player> will <status> be automatically teleported when they join.",
|
||||
Placeholder.unparsed("player", args[0]), Placeholder.unparsed("status", enabled ? "no longer" : "now"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -62,22 +62,15 @@ public class Command_banip extends FreedomCommand
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
// Kick player and handle others on IP
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
if (FUtil.getIp(player).equals(ip))
|
||||
{
|
||||
player.kickPlayer(ban.bakeKickMessage());
|
||||
}
|
||||
server.getOnlinePlayers().stream().filter(player -> FUtil.getIp(player).equalsIgnoreCase(ip)).forEach(player ->
|
||||
player.kickPlayer(ban.bakeKickMessage()));
|
||||
|
||||
// Broadcasts the message
|
||||
if (!silent)
|
||||
{
|
||||
// Broadcast
|
||||
String message = sender.getName() + " - Banned " + (plugin.al.isAdmin(player) ? "the IP " + ip : "an IP");
|
||||
msg(player, message, ChatColor.RED);
|
||||
}
|
||||
plugin.cm.broadcastSplit("<red><sender> - Banned the IP <ip>", "<red><sender> - Banned an IP", Placeholder.unparsed("ip", ip));
|
||||
}
|
||||
|
||||
FLog.info(ChatColor.RED + sender.getName() + " - Banned the IP " + ip);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ public class Command_bird extends FreedomCommand
|
||||
{
|
||||
Location location = playerSender.getTargetBlock(null, 15).getLocation().add(0, 1, 0);
|
||||
playerSender.getWorld().spawnEntity(location, getRandomFish());
|
||||
msg(":goodbird:");
|
||||
msgNew("<rainbow>:goodbird:");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -36,7 +36,8 @@ public class Command_blockcmd extends FreedomCommand
|
||||
playerdata.setCommandsBlocked(false);
|
||||
}
|
||||
}
|
||||
msg("Unblocked commands for " + counter + " players.");
|
||||
|
||||
msgNew("Unblocked commands for <count> players.", Placeholder.unparsed("count", String.valueOf(counter)));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -53,10 +54,10 @@ public class Command_blockcmd extends FreedomCommand
|
||||
|
||||
counter += 1;
|
||||
plugin.pl.getPlayer(player).setCommandsBlocked(true);
|
||||
msg(player, "Your commands have been blocked by an admin.", ChatColor.RED);
|
||||
msgNew(player, "<red>Your commands have been blocked by an admin.");
|
||||
}
|
||||
|
||||
msg("Blocked commands for " + counter + " players.");
|
||||
msgNew("Blocked commands for <count> players.", Placeholder.unparsed("count", String.valueOf(counter)));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -70,7 +71,7 @@ public class Command_blockcmd extends FreedomCommand
|
||||
|
||||
if (isAdmin(player))
|
||||
{
|
||||
msg(player.getName() + " is an admin, and cannot have their commands blocked.");
|
||||
msgNew("<player> is an admin, and cannot have their commands blocked.", Placeholder.unparsed("player", player.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -79,13 +80,13 @@ public class Command_blockcmd extends FreedomCommand
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
||||
playerdata.setCommandsBlocked(true);
|
||||
msg("Blocked commands for " + player.getName() + ".");
|
||||
msgNew("Blocked commands for <player>.", Placeholder.unparsed("player", player.getName()));
|
||||
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("That players commands are already blocked.", ChatColor.RED);
|
||||
msgNew("<red>That player's commands are already blocked.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.api.ShopItem;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -16,20 +17,27 @@ public class Command_clownfish extends FreedomCommand
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (plugin.sh == null) {
|
||||
sender.sendMessage(Component.text("The shop is currently disabled."));
|
||||
if (plugin.sh == null)
|
||||
{
|
||||
msgNew("<red>Shop is currently disabled.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (plugin.pl.getData(playerSender).hasItem(ShopItem.CLOWN_FISH) && (!plugin.lp.CLOWNFISH_TOGGLE.contains(playerSender.getName())))
|
||||
if (plugin.pl.getData(playerSender).hasItem(ShopItem.CLOWN_FISH))
|
||||
{
|
||||
playerSender.getInventory().addItem(plugin.sh.getClownFish());
|
||||
msg("You have been given a Clown Fish", ChatColor.GREEN);
|
||||
msgNew("<green>You have been given a <name>.", Placeholder.unparsed("name", ShopItem.CLOWN_FISH.getName()));
|
||||
}
|
||||
else if (plugin.pl.getPlayer(playerSender).isClownfishDisabled())
|
||||
{
|
||||
msgNew("<red>An admin has disabled your ability to use the <name>. Guess you were the clown after all.",
|
||||
Placeholder.unparsed("name", ShopItem.CLOWN_FISH.getName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("You do not own a Clown Fish or an admin has toggled your ability to use it. Purchase one from the shop.", ChatColor.RED);
|
||||
msgNew("<red>You don't own a <name>! Purchase one from the shop.", Placeholder.unparsed("name", ShopItem.CLOWN_FISH.getName()));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@ import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -17,7 +17,6 @@ import org.bukkit.entity.Player;
|
||||
@CommandParameters(description = "Manage notes for a player", usage = "/<command> <name> <list | add <note> | remove <id> | clear>")
|
||||
public class Command_notes extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
@ -35,7 +34,7 @@ public class Command_notes extends FreedomCommand
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -50,16 +49,15 @@ public class Command_notes extends FreedomCommand
|
||||
{
|
||||
case "list":
|
||||
{
|
||||
final StringBuilder noteList = new StringBuilder();
|
||||
noteList.append(ChatColor.GREEN).append("Player notes for ").append(playerData.getName()).append(":");
|
||||
msgNew("<green>Player notes for <player>:", Placeholder.unparsed("player", playerData.getName()));
|
||||
int id = 1;
|
||||
for (String note : playerData.getNotes())
|
||||
{
|
||||
String noteLine = id + ". " + note;
|
||||
noteList.append("\n").append(ChatColor.GOLD).append(noteLine);
|
||||
msgNew("<num>. <note>",
|
||||
Placeholder.unparsed("num", String.valueOf(id)),
|
||||
Placeholder.unparsed("note", note));
|
||||
id++;
|
||||
}
|
||||
msg(noteList.toString());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -72,7 +70,7 @@ public class Command_notes extends FreedomCommand
|
||||
String note = sender.getName() + ": " + StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ");
|
||||
playerData.addNote(note);
|
||||
plugin.pl.save(playerData);
|
||||
msg("Note added.", ChatColor.GREEN);
|
||||
msgNew("<green>Note added.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -90,7 +88,7 @@ public class Command_notes extends FreedomCommand
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||
msgNew("<red>Invalid number: <num>", Placeholder.unparsed("num", args[2]));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -99,12 +97,13 @@ public class Command_notes extends FreedomCommand
|
||||
if (playerData.removeNote(id))
|
||||
{
|
||||
plugin.pl.save(playerData);
|
||||
msg("Note removed.");
|
||||
msgNew("<green>Note removed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("No note with the ID of " + args[2] + " exists.", ChatColor.RED);
|
||||
msgNew("<red>No note with the ID of <id> exists.", Placeholder.unparsed("id", args[2]));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -113,7 +112,7 @@ public class Command_notes extends FreedomCommand
|
||||
int count = playerData.getNotes().size();
|
||||
playerData.clearNotes();
|
||||
plugin.pl.save(playerData);
|
||||
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
||||
msgNew("<green>Cleared <count> notes.", Placeholder.unparsed("count", String.valueOf(count)));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ public class Command_op extends FreedomCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Either the player is already opped, or the player could not be found.");
|
||||
msgNew("Either the player is already opped, or the player could not be found.");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -2,6 +2,10 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.*;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@ -33,9 +37,11 @@ public class Command_plugincontrol extends FreedomCommand
|
||||
Arrays.stream(pm.getPlugins()).forEach(pl ->
|
||||
{
|
||||
final String version = pl.getDescription().getVersion();
|
||||
msg(ChatColor.GRAY + "- " + (pl.isEnabled() ? ChatColor.GREEN : ChatColor.RED) + pl.getName()
|
||||
+ ChatColor.GOLD + (!version.isEmpty() ? " v" + version : "") + " by "
|
||||
+ StringUtils.join(pl.getDescription().getAuthors(), ", "));
|
||||
msgNew("<gray>- <statuscolor><name><version> by <authors>",
|
||||
TagResolver.resolver("statuscolor", Tag.styling(pl.isEnabled() ? NamedTextColor.GREEN : NamedTextColor.RED)),
|
||||
Placeholder.unparsed("name", pl.getName()),
|
||||
Placeholder.unparsed("version", version.isEmpty() ? " v" + version : ""),
|
||||
Placeholder.unparsed("authors", StringUtils.join(pl.getDescription().getAuthors(), ", ")));
|
||||
});
|
||||
|
||||
return true;
|
||||
@ -53,7 +59,7 @@ public class Command_plugincontrol extends FreedomCommand
|
||||
{
|
||||
if (pl.isEnabled())
|
||||
{
|
||||
msg(pl.getName() + " is already enabled.");
|
||||
msgNew("<red><plugin> is already enabled.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -61,11 +67,11 @@ public class Command_plugincontrol extends FreedomCommand
|
||||
|
||||
if (pl.isEnabled())
|
||||
{
|
||||
msg(pl.getName() + " is now enabled.");
|
||||
msgNew("<green><plugin> is now enabled.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("An error occurred whilst attempting to enable " + pl.getName() + ".");
|
||||
msgNew("<red>An error occurred whilst attempting to enable <plugin>", Placeholder.unparsed("plugin", pl.getName()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -73,32 +79,32 @@ public class Command_plugincontrol extends FreedomCommand
|
||||
{
|
||||
if (!pl.isEnabled())
|
||||
{
|
||||
msg(pl.getName() + " is already disabled.");
|
||||
msgNew("<red><plugin> is already disabled.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
return true;
|
||||
}
|
||||
else if (UNTOUCHABLE_PLUGINS.contains(pl.getName()))
|
||||
{
|
||||
msg(pl.getName() + " can't be disabled.");
|
||||
msgNew("<red><plugin> can't be disabled.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
pm.disablePlugin(pl);
|
||||
|
||||
msg(pl.getName() + " is now disabled.");
|
||||
msgNew("<green><plugin> is now disabled.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
return true;
|
||||
}
|
||||
case "reload" ->
|
||||
{
|
||||
if (UNTOUCHABLE_PLUGINS.contains(pl.getName()))
|
||||
{
|
||||
msg(pl.getName() + " can't be reloaded.");
|
||||
msgNew("<red><plugin> can't be reloaded.", Placeholder.unparsed("plugin", pl.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
pm.disablePlugin(pl);
|
||||
pm.enablePlugin(pl);
|
||||
|
||||
msg(pl.getName() + " has been reloaded.");
|
||||
msgNew("<green><plugin> has been reloaded.", Placeholder.unparsed("plugin", pl.getName()));;
|
||||
return true;
|
||||
}
|
||||
default ->
|
||||
@ -109,7 +115,7 @@ public class Command_plugincontrol extends FreedomCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Plugin not found!");
|
||||
msgNew("<red>Plugin not found!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class Command_stop extends FreedomCommand
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
String reason = args.length != 0 ? "Server is going offline, come back in about 20 seconds." : StringUtils.join(args, " ");
|
||||
String reason = args.length == 0 ? "Server is going offline, come back in about 20 seconds." : StringUtils.join(args, " ");
|
||||
|
||||
if (sender.getName().equals("CONSOLE"))
|
||||
{
|
||||
|
@ -1,39 +1,37 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import net.kyori.adventure.text.event.HoverEvent;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(rank = Rank.OP, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Allows you to set your own prefix.", usage = "/<command> [-s[ave]] <set <tag..> | list | gradient <hex> <hex> <tag..> | off | clear <player> | clearall>")
|
||||
@CommandParameters(description = "Allows you to set your own prefix.", usage = "/<command> [-ns] <set <tag..> | list | off | clear <player> | clearall>")
|
||||
public class Command_tag extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
|
||||
boolean save = false;
|
||||
boolean save = true;
|
||||
|
||||
if (args.length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (args[0].equals("-s") || args[0].equals("-save"))
|
||||
if (args[0].equalsIgnoreCase("-ns"))
|
||||
{
|
||||
save = true;
|
||||
save = false;
|
||||
args = ArrayUtils.remove(args, 0);
|
||||
}
|
||||
|
||||
@ -146,142 +144,50 @@ public class Command_tag extends FreedomCommand
|
||||
{
|
||||
if (senderIsConsole)
|
||||
{
|
||||
msg("\"/tag set\" can't be used from the console.");
|
||||
msgNew("<red>\"/tag set\" can't be used from the console.");
|
||||
return true;
|
||||
}
|
||||
|
||||
final String inputTag = StringUtils.join(args, " ", 1, args.length);
|
||||
final String strippedTag = StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
|
||||
new String[]
|
||||
{
|
||||
"" + ChatColor.COLOR_CHAR, "&k"
|
||||
},
|
||||
new String[]
|
||||
{
|
||||
"", ""
|
||||
});
|
||||
Component tag;
|
||||
|
||||
final String outputTag = FUtil.colorize(strippedTag);
|
||||
int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20);
|
||||
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
||||
|
||||
if (rawTag.length() > tagLimit)
|
||||
if (FUtil.containsChatColor(inputTag))
|
||||
{
|
||||
msg("That tag is too long (Max is " + tagLimit + " characters).");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
msg("That tag contains a forbidden word.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
plugin.pl.getPlayer(playerSender).setTag(outputTag);
|
||||
|
||||
if (save)
|
||||
{
|
||||
save(playerSender, strippedTag);
|
||||
}
|
||||
|
||||
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : ""));
|
||||
return true;
|
||||
}
|
||||
|
||||
case "gradient":
|
||||
{
|
||||
if (senderIsConsole)
|
||||
{
|
||||
msg("\"/tag gradient\" can't be used from the console.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length < 4)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
String from = "", to = "";
|
||||
java.awt.Color awt1, awt2;
|
||||
|
||||
try
|
||||
{
|
||||
if (args[1].equalsIgnoreCase("random") || args[1].equalsIgnoreCase("r"))
|
||||
{
|
||||
awt1 = FUtil.getRandomAWTColor();
|
||||
from = " (From: " + FUtil.getHexStringOfAWTColor(awt1) + ")";
|
||||
tag = FUtil.colorizeAsComponent(inputTag.replace("&k", ""));
|
||||
}
|
||||
else
|
||||
{
|
||||
awt1 = java.awt.Color.decode(args[1]);
|
||||
tag = FUtil.miniMessage(inputTag);
|
||||
}
|
||||
|
||||
if (args[2].equalsIgnoreCase("random") || args[2].equalsIgnoreCase("r"))
|
||||
String steamrolled = FUtil.steamroll(tag);
|
||||
int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20);
|
||||
if (steamrolled.length() > tagLimit)
|
||||
{
|
||||
awt2 = FUtil.getRandomAWTColor();
|
||||
to = " (To: " + FUtil.getHexStringOfAWTColor(awt2) + ")";
|
||||
msgNew("<red>That tag is too long (Max is <max> characters).", Placeholder.unparsed("max", String.valueOf(tagLimit)));
|
||||
return true;
|
||||
}
|
||||
else if (!plugin.al.isAdmin(sender) && ConfigEntry.FORBIDDEN_WORDS.getStringList().stream().anyMatch(word -> steamrolled.toLowerCase().contains(word)))
|
||||
{
|
||||
msgNew("<red>That tag contains a forbidden word.");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
awt2 = java.awt.Color.decode(args[2]);
|
||||
}
|
||||
}
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
msg("Invalid hex values.");
|
||||
return true;
|
||||
}
|
||||
String flattened = FUtil.miniMessage(tag);
|
||||
|
||||
Color c1 = FUtil.fromAWT(awt1);
|
||||
Color c2 = FUtil.fromAWT(awt2);
|
||||
String tag = StringUtils.join(args, " ", 3, args.length);
|
||||
List<Color> gradient = FUtil.createColorGradient(c1, c2, tag.length());
|
||||
String[] splitTag = tag.split("");
|
||||
|
||||
for (int i = 0; i < splitTag.length; i++)
|
||||
{
|
||||
splitTag[i] = net.md_5.bungee.api.ChatColor.of(FUtil.toAWT(gradient.get(i))) + splitTag[i];
|
||||
}
|
||||
|
||||
tag = StringUtils.join(splitTag, "");
|
||||
final String outputTag = FUtil.colorize(tag);
|
||||
|
||||
int tagLimit = (plugin.al.isAdmin(sender) ? 30 : 20);
|
||||
|
||||
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
||||
|
||||
if (rawTag.length() > tagLimit)
|
||||
{
|
||||
msg("That tag is too long (Max is " + tagLimit + " characters).");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
msg("That tag contains a forbidden word.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
plugin.pl.getPlayer(playerSender).setTag(outputTag);
|
||||
plugin.pl.getPlayer(playerSender).setTag(flattened);
|
||||
|
||||
if (save)
|
||||
{
|
||||
save(playerSender, tag);
|
||||
save(playerSender, flattened);
|
||||
}
|
||||
|
||||
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to);
|
||||
msgNew("Tag set to '<tag>' <saved>",
|
||||
Placeholder.component("tag", tag.hoverEvent(HoverEvent.showText(Component.translatable("chat.copy")))
|
||||
.clickEvent(ClickEvent.copyToClipboard(flattened))),
|
||||
Placeholder.unparsed("saved", save ? "(Saved)" : ""));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,51 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(rank = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
||||
@CommandParameters(description = "Give yourself a prefix with rainbow colors.", usage = "/<command> <tag>")
|
||||
public class Command_tagrainbow extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (args.length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final String tag = ChatColor.stripColor(FUtil.colorize(StringUtils.join(args, " ")));
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
final String rawTag = ChatColor.stripColor(tag).toLowerCase();
|
||||
|
||||
if (rawTag.length() > 20)
|
||||
{
|
||||
msg("That tag is too long (Max is 20 characters).");
|
||||
return true;
|
||||
}
|
||||
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
msg("That tag contains a forbidden word.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
plugin.pl.getPlayer(playerSender).setTag(FUtil.rainbowify(tag));
|
||||
msg("Set tag to " + tag);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -29,11 +29,8 @@ public class Command_toggle extends FreedomCommand
|
||||
{
|
||||
if (args.length == 0)
|
||||
{
|
||||
msg("Available toggles: ");
|
||||
for (String toggle : toggles)
|
||||
{
|
||||
msg("- " + toggle);
|
||||
}
|
||||
msgNew("Available toggles: ");
|
||||
toggles.forEach(toggle -> msgNew("- <toggle>", Placeholder.unparsed("toggle", toggle)));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -70,7 +67,7 @@ public class Command_toggle extends FreedomCommand
|
||||
}
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
msg("<red>The input provided is not a valid integer.");
|
||||
msgNew("<red>The input provided is not a valid integer.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -106,7 +103,7 @@ public class Command_toggle extends FreedomCommand
|
||||
}
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
msg("<red>The input provided is not a valid integer.");
|
||||
msgNew("<red>The input provided is not a valid integer.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -139,11 +136,8 @@ public class Command_toggle extends FreedomCommand
|
||||
case "chat" -> toggle("Chat is", ConfigEntry.TOGGLE_CHAT);
|
||||
default ->
|
||||
{
|
||||
msg("Available toggles: ");
|
||||
for (String toggle : toggles)
|
||||
{
|
||||
msg("- " + toggle);
|
||||
}
|
||||
msgNew("Available toggles: ");
|
||||
toggles.forEach(toggle -> msgNew("- <toggle>", Placeholder.unparsed("toggle", toggle)));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -152,7 +146,8 @@ public class Command_toggle extends FreedomCommand
|
||||
|
||||
private void toggle(final String name, final ConfigEntry entry)
|
||||
{
|
||||
msg(name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled."));
|
||||
msgNew("<name> now <status>.", Placeholder.unparsed("name", name), Placeholder.unparsed("status",
|
||||
entry.setBoolean(!entry.getBoolean()) ? "enabled" : "disabled"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,6 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -9,7 +11,6 @@ import org.bukkit.entity.Player;
|
||||
@CommandParameters(description = "Toggle whether or not a player has the ability to use clownfish", usage = "/<command> <player>", aliases = "togglecf")
|
||||
public class Command_toggleclownfish extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
@ -18,19 +19,19 @@ public class Command_toggleclownfish extends FreedomCommand
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean enabled = plugin.lp.CLOWNFISH_TOGGLE.contains(args[0]);
|
||||
|
||||
if (enabled)
|
||||
Player player = server.getPlayer(args[0]);
|
||||
if (player == null)
|
||||
{
|
||||
plugin.lp.CLOWNFISH_TOGGLE.remove(args[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
plugin.lp.CLOWNFISH_TOGGLE.add(args[0]);
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
|
||||
msg(args[0] + " will " + (enabled ? "now" : "no longer") + " have the ability to use clownfish.");
|
||||
FPlayer fplayer = plugin.pl.getPlayer(player);
|
||||
fplayer.setClownfishDisabled(!fplayer.isClownfishDisabled());
|
||||
|
||||
msgNew("<player> will <status> have the ability to use the Clownfish.",
|
||||
Placeholder.unparsed("player", args[0]),
|
||||
Placeholder.unparsed("status", fplayer.isClownfishDisabled() ? "no longer" : "now"));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import me.totalfreedom.totalfreedommod.util.Groups;
|
||||
import org.bukkit.ChatColor;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -24,7 +24,7 @@ public class Command_tossmob extends FreedomCommand
|
||||
{
|
||||
if (!ConfigEntry.TOSSMOB_ENABLED.getBoolean())
|
||||
{
|
||||
msg("Tossmob is currently disabled.");
|
||||
msgNew("<red>Tossmob is currently disabled.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -39,13 +39,13 @@ public class Command_tossmob extends FreedomCommand
|
||||
if (args[0].equalsIgnoreCase("off"))
|
||||
{
|
||||
playerData.disableMobThrower();
|
||||
msg("Turned off.", ChatColor.GREEN);
|
||||
msgNew("<green>Tossmob has been turned off.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("list"))
|
||||
{
|
||||
msg("Supported mobs: " + Groups.MOB_TYPES.stream().map(Enum::name).toList(), ChatColor.GREEN);
|
||||
msgNew("<green>Supported mobs: <mobs>", Placeholder.unparsed("mobs", String.join(", ", Groups.MOB_TYPES.stream().map(Enum::name).toList())));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -60,13 +60,13 @@ public class Command_tossmob extends FreedomCommand
|
||||
|
||||
if (type == null)
|
||||
{
|
||||
msg("Unknown entity type: " + args[0], ChatColor.RED);
|
||||
msgNew("<red>Unknown entity type: <type>", Placeholder.unparsed("type", args[0]));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Groups.MOB_TYPES.contains(type))
|
||||
{
|
||||
msg(FUtil.formatName(type.name()) + " is an entity, however it is not a mob.", ChatColor.RED);
|
||||
msgNew("<red><entity> is an entity, however it is not a mob.", Placeholder.unparsed("entity", FUtil.formatName(type.name())));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ public class Command_tossmob extends FreedomCommand
|
||||
}
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
msg("The input provided is not a valid integer.");
|
||||
msgNew("<red>The input provided is not a valid integer.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -94,9 +94,11 @@ public class Command_tossmob extends FreedomCommand
|
||||
}
|
||||
|
||||
playerData.enableMobThrower(type, speed);
|
||||
msg("MobThrower is enabled. Mob: " + type + " - Speed: " + speed + ".", ChatColor.GREEN);
|
||||
msg("Right click while holding a " + Material.BONE.toString() + " to throw mobs!", ChatColor.GREEN);
|
||||
msg("Type '/tossmob off' to disable. -By Madgeek1450", ChatColor.GREEN);
|
||||
msgNew("<green>Tossmob is enabled. Mob: <type> - Speed: <speed>.",
|
||||
Placeholder.unparsed("type", String.valueOf(type)),
|
||||
Placeholder.unparsed("speed", String.valueOf(speed)));
|
||||
msgNew("<green>Right click while holding a Bone to throw mobs!");
|
||||
msgNew("<green>Type '/tossmob off' to disable. - By Madgeek1450");
|
||||
|
||||
Objects.requireNonNull(playerSender.getEquipment()).setItemInMainHand(new ItemStack(Material.BONE, 1));
|
||||
return true;
|
||||
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.User;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -45,14 +46,15 @@ public class Command_unban extends FreedomCommand
|
||||
FUtil.adminAction(sender.getName(), "Unbanning " + username, true);
|
||||
plugin.bm.removeBan(plugin.bm.getByUsername(username));
|
||||
plugin.bm.removeBan(plugin.bm.getByIp(ip));
|
||||
msg(username + " has been unbanned along with the IP: " + ip);
|
||||
msgNew("<player> has been unbanned along with the IP: <ip>",
|
||||
Placeholder.unparsed("player", username), Placeholder.unparsed("ip", ip));
|
||||
|
||||
if (args.length >= 2)
|
||||
if (args.length >= 2 && plugin.cpb.isEnabled())
|
||||
{
|
||||
if (args[1].equalsIgnoreCase("-r"))
|
||||
{
|
||||
plugin.cpb.restore(username);
|
||||
msg("Restored edits for: " + username);
|
||||
msgNew("Restored <player>'s edits as well.", Placeholder.unparsed("player", username));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -3,13 +3,14 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(rank = Rank.ADMIN, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Unbans the specified ip.", usage = "/<command> <ip> [-q]")
|
||||
@CommandParameters(description = "Unbans the specified IP.", usage = "/<command> <ip> [-q]")
|
||||
public class Command_unbanip extends FreedomCommand
|
||||
{
|
||||
|
||||
@ -27,7 +28,7 @@ public class Command_unbanip extends FreedomCommand
|
||||
|
||||
if (FUtil.isValidIPv4(ip))
|
||||
{
|
||||
msg(ip + " is not a valid IP address", ChatColor.RED);
|
||||
msgNew("<red><ip> is not a valid IP address.", Placeholder.unparsed("ip", ip));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -35,13 +36,13 @@ public class Command_unbanip extends FreedomCommand
|
||||
|
||||
if (ban == null)
|
||||
{
|
||||
msg("The ip " + ip + " is not banned", ChatColor.RED);
|
||||
msgNew("<red><ip> is not a banned IP address.", Placeholder.unparsed("ip", ip));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ban.hasUsername())
|
||||
{
|
||||
msg("This ban is not an ip-only ban.");
|
||||
msgNew("<red>This ban is not an IP-only ban.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -54,7 +55,9 @@ public class Command_unbanip extends FreedomCommand
|
||||
|
||||
if (!silent)
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Unbanned the ip " + ip, true);
|
||||
plugin.cm.broadcastSplit("<red><sender> - Unbanned the IP <ip>", "<red><sender> - Unbanned an IP",
|
||||
Placeholder.unparsed("sender", sender.getName()),
|
||||
Placeholder.unparsed("ip", ip));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -29,13 +30,12 @@ public class Command_unbanname extends FreedomCommand
|
||||
|
||||
if (ban == null)
|
||||
{
|
||||
msg("The name " + name + " is not banned", ChatColor.RED);
|
||||
msgNew("<red>The name <name> is not banned.", Placeholder.unparsed("name", name));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ban.hasIps())
|
||||
else if (ban.hasIps())
|
||||
{
|
||||
msg("This ban is not a name-only ban.");
|
||||
msgNew("<red>This ban is not a name-only ban.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -33,11 +33,11 @@ public class Command_unblockcmd extends FreedomCommand
|
||||
{
|
||||
fPlayer.setCommandsBlocked(false);
|
||||
FUtil.adminAction(sender.getName(), "Unblocking all commands for " + player.getName(), true);
|
||||
msg("Unblocked commands for " + player.getName() + ".");
|
||||
msgNew("Unblocked commands for <player>.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("That players commands aren't blocked.", ChatColor.RED);
|
||||
msgNew("<red>That player's commands aren't blocked.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public class Command_uncage extends FreedomCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("That player is not caged!", ChatColor.RED);
|
||||
msgNew("<red>That player is not caged!");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ public class Command_undisguiseall extends FreedomCommand
|
||||
{
|
||||
if (!plugin.ldb.isEnabled())
|
||||
{
|
||||
msg("LibsDisguises is not enabled.");
|
||||
msgNew("<red>LibsDisguises is not enabled.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -17,7 +18,7 @@ public class Command_unlinkdiscord extends FreedomCommand
|
||||
{
|
||||
if (plugin.dc == null || !plugin.dc.isEnabled())
|
||||
{
|
||||
msg("The Discord integration system is currently disabled.", ChatColor.RED);
|
||||
msgNew("<red>The Discord integration system is currently disabled.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -31,19 +32,19 @@ public class Command_unlinkdiscord extends FreedomCommand
|
||||
}
|
||||
|
||||
playerData.setDiscordID(null);
|
||||
msg("Unlinked " + args[0] + "'s Discord account.", ChatColor.GREEN);
|
||||
msgNew("<green>Unlinked <player>'s Discord account.", Placeholder.unparsed("player", playerData.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData data = plugin.pl.getData(playerSender);
|
||||
if (data.getDiscordID() == null)
|
||||
{
|
||||
msg("Your Minecraft account is not linked to a Discord account.", ChatColor.RED);
|
||||
msgNew("<red>Your Minecraft account is not linked to a Discord account.");
|
||||
return true;
|
||||
}
|
||||
data.setDiscordID(null);
|
||||
plugin.pl.save(data);
|
||||
msg("Your Minecraft account has been successfully unlinked from the Discord account.", ChatColor.GREEN);
|
||||
msgNew("<green>Your Minecraft account has been successfully unlinked from the Discord account.");
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@ -13,7 +14,6 @@ import org.bukkit.entity.Player;
|
||||
@CommandParameters(description = "Unmutes a player", usage = "/<command> [-q] <player>")
|
||||
public class Command_unmute extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
@ -45,22 +45,25 @@ public class Command_unmute extends FreedomCommand
|
||||
if (playerdata.isMuted())
|
||||
{
|
||||
playerdata.setMuted(false);
|
||||
player.sendTitle(ChatColor.RED + "You've been unmuted.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60);
|
||||
FUtil.playerTitle(sender, "<red>You have been unmuted.", "<yellow>Be sure to follow the rules!");
|
||||
msgNew("<green>You have been unmuted.");
|
||||
|
||||
if (quiet)
|
||||
{
|
||||
msg("Unmuted " + player.getName() + " quietly");
|
||||
msgNew("Quietly unmuted <player>.", Placeholder.unparsed("player", player.getName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Unmuting " + player.getName(), true);
|
||||
msg("Unmuted " + player.getName());
|
||||
msg(player, "You have been unmuted.", ChatColor.RED);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg(ChatColor.RED + "That player is not muted.");
|
||||
FUtil.adminAction(sender.getName(), "Unmuting " + player.getName(), true);
|
||||
msgNew("Unmuted <player>.", Placeholder.unparsed("player", player.getName()));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
msgNew("<red>That player is not muted.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
@ -38,11 +39,11 @@ public class Command_vanish extends FreedomCommand
|
||||
{
|
||||
if (silent)
|
||||
{
|
||||
msg(ChatColor.GOLD + "Silently unvanished.");
|
||||
msgNew("<gold>Silently unvanished.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("You have unvanished.", ChatColor.GOLD);
|
||||
msgNew("<gold>You have unvanished.");
|
||||
FUtil.bcastMsg(plugin.rm.craftLoginMessage(playerSender, null));
|
||||
server.broadcast(Component.translatable("multiplayer.player.joined", Component.text(playerSender.getName()))
|
||||
.color(NamedTextColor.YELLOW));
|
||||
@ -59,16 +60,11 @@ public class Command_vanish extends FreedomCommand
|
||||
}
|
||||
|
||||
plugin.pl.getData(playerSender).setTag(tag);
|
||||
FLog.info(playerSender.getName() + " is no longer vanished.");
|
||||
plugin.al.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has unvanished and is now visible to everyone.");
|
||||
plugin.cm.messageAllAdmins("<yellow><player> has unvanished and is now visible to everyone.", Placeholder.unparsed("player", sender.getName()));
|
||||
|
||||
server.getOnlinePlayers().stream().filter(player -> !plugin.al.isAdmin(player)).forEach(player ->
|
||||
player.showPlayer(plugin, playerSender));
|
||||
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
if (!plugin.al.isAdmin(player))
|
||||
{
|
||||
player.showPlayer(plugin, playerSender);
|
||||
}
|
||||
}
|
||||
plugin.esb.setVanished(playerSender.getName(), false);
|
||||
playerSender.setPlayerListName(StringUtils.substring(displayName, 0, 16));
|
||||
AdminList.vanished.remove(playerSender.getUniqueId());
|
||||
@ -93,11 +89,11 @@ public class Command_vanish extends FreedomCommand
|
||||
|
||||
if (silent)
|
||||
{
|
||||
msg("Silently vanished.", ChatColor.GOLD);
|
||||
msgNew("<gold>Silently vanished.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("You have vanished.", ChatColor.GOLD);
|
||||
msgNew("<gold>You have vanished.");
|
||||
server.broadcast(Component.translatable("multiplayer.player.left", Component.text(playerSender.getName()))
|
||||
.color(NamedTextColor.YELLOW));
|
||||
if (plugin.dc != null) {
|
||||
@ -105,8 +101,7 @@ public class Command_vanish extends FreedomCommand
|
||||
}
|
||||
}
|
||||
|
||||
FLog.info(playerSender.getName() + " is now vanished.");
|
||||
plugin.al.messageAllAdmins(ChatColor.YELLOW + sender.getName() + " has vanished and is now only visible to admins.");
|
||||
plugin.cm.messageAllAdmins("<yellow><player> has vanished and is now only visible to admins.", Placeholder.unparsed("player", sender.getName()));
|
||||
|
||||
server.getOnlinePlayers().stream().filter(player -> !plugin.al.isAdmin(player)).forEach(player ->
|
||||
player.hidePlayer(plugin,playerSender));
|
||||
|
@ -22,7 +22,7 @@ public class Command_vote extends FreedomCommand
|
||||
|
||||
if (voteInfo.isEmpty())
|
||||
{
|
||||
msg(Component.text("The voting information section of the config.yml file has not been configured.", NamedTextColor.RED));
|
||||
msgNew("<red>The voting information section of the config.yml file has not been configured.");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -61,9 +61,7 @@ public class Command_warn extends FreedomCommand
|
||||
}
|
||||
|
||||
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
||||
player.showTitle(Title.title(Component.text("You have been warned.", NamedTextColor.RED),
|
||||
Component.text("Reason: " + warnReason, NamedTextColor.YELLOW),
|
||||
Title.Times.times(Duration.ofSeconds(1), Duration.ofSeconds(5), Duration.ofSeconds(3))));
|
||||
FUtil.playerTitle(player, "<red>You have been warned.", "<yellow>Reason: <reason>", Placeholder.unparsed("reason", warnReason));
|
||||
msgNew("<red>[WARNING] You received a warning from <sender>: <reason>", Placeholder.unparsed("sender", sender.getName()), Placeholder.unparsed("reason", warnReason));
|
||||
plugin.pl.getPlayer(player).incrementWarnings(quiet);
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
|
||||
@ -74,15 +72,10 @@ public class Command_warn extends FreedomCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
String adminNotice = ChatColor.RED +
|
||||
sender.getName() +
|
||||
" - " +
|
||||
"Warning: " +
|
||||
player.getName() +
|
||||
" - Reason: " +
|
||||
ChatColor.YELLOW +
|
||||
warnReason;
|
||||
plugin.al.messageAllAdmins(adminNotice);
|
||||
plugin.cm.messageAllAdmins("<red><sender> - Warning: <player> - Reason: <yellow><reason> ",
|
||||
Placeholder.unparsed("sender", sender.getName()),
|
||||
Placeholder.unparsed("player", player.getName()),
|
||||
Placeholder.unparsed("reason", warnReason));
|
||||
|
||||
msgNew("You have successfully warned <player>.", Placeholder.unparsed("player", player.getName()));
|
||||
}
|
||||
|
@ -133,11 +133,13 @@ public abstract class FreedomCommand implements CommandExecutor, TabCompleter
|
||||
player.sendMessage(ChatColor.GRAY + message);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void msg(Player player, String message, ChatColor color)
|
||||
{
|
||||
player.sendMessage(color + message);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
protected void msg(String message)
|
||||
{
|
||||
msg(sender, message);
|
||||
|
@ -228,7 +228,7 @@ public class ItemFun extends FreedomService
|
||||
final int RADIUS_HIT = 5;
|
||||
final int STRENGTH = 4;
|
||||
|
||||
if (plugin.lp.CLOWNFISH_TOGGLE.contains(player.getName()))
|
||||
if (plugin.pl.getPlayer(player).isClownfishDisabled())
|
||||
{
|
||||
player.sendMessage(ChatColor.GRAY + "An admin has disabled your ability to use clownfish.");
|
||||
break;
|
||||
|
@ -63,6 +63,8 @@ public class FPlayer
|
||||
|
||||
private boolean invSee = false;
|
||||
|
||||
private boolean clownfishDisabled = false;
|
||||
|
||||
public FPlayer(TotalFreedomMod plugin, Player player)
|
||||
{
|
||||
this(plugin, player.getUniqueId(), player.getName(), FUtil.getIp(player));
|
||||
@ -350,14 +352,7 @@ public class FPlayer
|
||||
|
||||
public void setTag(String tag)
|
||||
{
|
||||
if (tag == null)
|
||||
{
|
||||
this.tag = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.tag = FUtil.colorize(tag) + ChatColor.WHITE;
|
||||
}
|
||||
this.tag = tag;
|
||||
}
|
||||
|
||||
public void incrementWarnings(boolean quiet)
|
||||
@ -442,6 +437,16 @@ public class FPlayer
|
||||
this.invSee = invSee;
|
||||
}
|
||||
|
||||
public boolean isClownfishDisabled()
|
||||
{
|
||||
return clownfishDisabled;
|
||||
}
|
||||
|
||||
public void setClownfishDisabled(boolean bool)
|
||||
{
|
||||
this.clownfishDisabled = bool;
|
||||
}
|
||||
|
||||
private static class ArrowShooter extends BukkitRunnable
|
||||
{
|
||||
|
||||
|
@ -167,7 +167,8 @@ public class RankManager extends FreedomService
|
||||
fPlayer.setTag(null);
|
||||
player.setPlayerListName(null);
|
||||
}
|
||||
fPlayer.setTag(getTag(player, display.getColoredTag()));
|
||||
// FIXME: Adjust Rank to use MiniMessage instead of the legacy stuff
|
||||
fPlayer.setTag(getTag(player, FUtil.miniMessage(FUtil.colorizeAsComponent(display.getColoredTag()))));
|
||||
updatePlayerTeam(player);
|
||||
plugin.pem.setPermissions(player);
|
||||
}
|
||||
|
@ -1,12 +1,10 @@
|
||||
package me.totalfreedom.totalfreedommod.util;
|
||||
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class FConverter
|
||||
{
|
||||
private static final Pattern godFuckingDamnit = Pattern.compile(".*(?i)(&((#[a-f0-9]{3,6})|([0-9a-fklmnopr]))|%[a-z]+%).*");
|
||||
private static final Pattern godFuckingDamnit = Pattern.compile(".*(?i)(&((#[a-f0-9]{3,6})|([0-9a-fklmnor]))|%[a-z]+%).*");
|
||||
|
||||
public static boolean needsConversion(String messageOrFormat)
|
||||
{
|
||||
@ -15,18 +13,11 @@ public class FConverter
|
||||
|
||||
public static String convertAdminChatFormat(String format)
|
||||
{
|
||||
// %name%
|
||||
// %rank%
|
||||
// %rankcolor%
|
||||
// %msg%
|
||||
|
||||
return FUtil.MINI_MESSAGE.serialize(FUtil.LEGACY_AMPERSAND.deserialize(
|
||||
format.replaceAll("%name%", "<name>")
|
||||
.replaceAll("%rank%", "<rank>")
|
||||
.replaceAll("%rankcolor%", "<rankcolor>")
|
||||
.replaceAll("%msg%", "<message>")))
|
||||
.replaceAll("\\\\<", "<"); // GOD FUCKING DAMMIT
|
||||
|
||||
//zTagResolver.resolver("rankcolor", Tag.styling(lol -> lol.color()))
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import net.kyori.adventure.text.minimessage.tag.standard.StandardTags;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.kyori.adventure.title.Title;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang.WordUtils;
|
||||
@ -19,7 +20,6 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.management.ManagementFactory;
|
||||
@ -80,6 +80,8 @@ public class FUtil
|
||||
"Taahh",
|
||||
"G6_",
|
||||
"ayunami2000");
|
||||
|
||||
private static final PlainTextComponentSerializer STEAMROLLER = PlainTextComponentSerializer.plainText();
|
||||
public static final LegacyComponentSerializer LEGACY_AMPERSAND = LegacyComponentSerializer.legacyAmpersand();
|
||||
public static final MiniMessage MINI_MESSAGE = MiniMessage.builder().tags(TagResolver.resolver(
|
||||
StandardTags.color(),
|
||||
@ -89,7 +91,6 @@ public class FUtil
|
||||
StandardTags.decorations(TextDecoration.BOLD),
|
||||
StandardTags.decorations(TextDecoration.STRIKETHROUGH),
|
||||
StandardTags.decorations(TextDecoration.UNDERLINED))).build();
|
||||
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
|
||||
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
|
||||
ChatColor.DARK_RED,
|
||||
ChatColor.RED,
|
||||
@ -103,15 +104,11 @@ public class FUtil
|
||||
ChatColor.DARK_BLUE,
|
||||
ChatColor.DARK_PURPLE,
|
||||
ChatColor.LIGHT_PURPLE);
|
||||
private static final Pattern CHATCOLOR_PATTERN = Pattern.compile(".*(?i)(&((#[a-f0-9]{3,6})|([0-9a-fklmnor]))).*");
|
||||
private static final SplittableRandom RANDOM = new SplittableRandom();
|
||||
public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z";
|
||||
private static final List<String> regxList = Arrays.asList("y", "mo", "w", "d", "h", "m", "s");
|
||||
|
||||
static
|
||||
{
|
||||
CHAT_COLOR_POOL.forEach(color -> CHAT_COLOR_NAMES.put(color.name().toLowerCase().replace("_", ""), color));
|
||||
}
|
||||
|
||||
public static void cancel(BukkitTask task)
|
||||
{
|
||||
if (task == null)
|
||||
@ -498,6 +495,21 @@ public class FUtil
|
||||
return MINI_MESSAGE.deserialize(string, placeholders);
|
||||
}
|
||||
|
||||
public static String miniMessage(Component component)
|
||||
{
|
||||
return MINI_MESSAGE.serialize(component);
|
||||
}
|
||||
|
||||
public static String steamroll(Component text)
|
||||
{
|
||||
return STEAMROLLER.serialize(text);
|
||||
}
|
||||
|
||||
public static boolean containsChatColor(String input)
|
||||
{
|
||||
return CHATCOLOR_PATTERN.matcher(input).find();
|
||||
}
|
||||
|
||||
public static String stripColors(String string)
|
||||
{
|
||||
return string.replaceAll("§", "");
|
||||
|
Loading…
Reference in New Issue
Block a user