Releases: Foxikle/FoxRank
2.0.0 beta
Prerelease Day!
FoxRank 2.0.0-beta1
Hey everyone. It sure has been a while. But I (hope that I am) and delivering the biggest update to FoxRank.
New Features:
- Customizable ranks! (Finally, ik)
- Permission node support
- PAPI!
- Customizable messages. (All except the messages in /rank, since I'm too lazy)
- Switched to using PersistenDataContainer instead of TagContainer in the logs menu
- Added the ability to permanantly mute players using
-1
as the duration - Generalized default config settings to be more beginner friendly,
- DisableChatFormatting: true -> false
- Added notes to prevent errors in configuration
- Slightly altered nick name system
- Redid the name page.
- Added an option to reuse a nickname
/nick reuse
- Ranks can be optionally included in the nickname system
- Re-wrote duration parser.
- Supports
y
for years - Supports compound durations like
1d12h
- Added support for name spaced commands (
/foxrank:rank <arguments>
) - Italicized the
/immuted
message by defualt - Added a command to reload the plugin,
/rank reload
- Added anonymous statistic collection with bStats. The information I collect can be viewed here. If at any point you decide to opt out, you can do so in the configuration files of the bStats folder in your plugin directory.
Bug Fixes
- Fixed an error when disabling the plugin if
UseSqlStorage
was off - Drastically improved performance of chat handling
- Fixed command tab completions not working properly
Developer Changes
- Removal of RankedPlayer and OfflineRankedPlayer (They were terribly optimized, and basically useless. Use permission nodes instead.)
- Asynchronized all calls to the DataManager class. So all fetching of data is not on the main thread
- Data Caching: All of the data stored about the user (Except for logging, that is fetched on demand) is stored in memory.
- The api is pretty much useless now, so it might see a removal. Since y'know, the /rank and /setrank commands exist.
A huge thanks to everyone who has come here asking for support, it makes my day knowing that someone chose MY plugin to use. Thanks everyone :)
I am working on a bot to help with support tickets, so stick around for that :D
Please NOTE: The bungeecord part of this plugin has not yet been tested. So if you encounter any bugs please report them!
FoxRank 2.0.0-beta2
Bug Fixes
- Fixed being able to set a player's rank that didn't exist. (Not really, it would default to the lowest power level).
- Fixed updating the cached data with bungeecord. (or waterfall, I don't discriminate. Sadly no velocity)
- Fixed numerous errors related to using the PlayerRank placeholder for an offline player.
- Fixed an error whilst muting a player that was previously muted.
- Fixed an error whilst trying to view the logs of a player that had none.
- Removed 6 debug messages that slipped through the cracks
- Fixed parsing entries whilst using sql storage
- Added support for permanent mutes with sql storage
- Tuned duration parsing to be less error prone when parsing permanent mutes
That's it!
Cheers,
Foxikle
1.9.4
FoxRank v1.9.4
Hey! This update is a small yet important one! You can now directly access the instance of FoxRank using Bukkit's ServicesManager
.
To get started, add the following dependency tag to your pom.xml
<dependency>
<groupId>me.foxikle</groupId>
<artifactId>foxrank</artifactId>
<version>1.9.4</version>
</dependency>
This tells maven to download the FoxRank library for you.
Next, to get an Instance of FoxRank, simply use Bukkit's ServicesManager
class.
Here is an example class using it. Make sure this is in your main class' onEnable
method.
import me.foxikle.foxrank.FoxRank;
import org.bukkit.plugin.java.JavaPlugin;
public class Demo implements JavaPlugin {
private FoxRank foxRank;
@Override
onEnable() {
foxrank = this.getServer().getServicesManager().load(FoxRank.class);
}
public FoxRank getFoxRank() {
return foxRank;
}
}
Now you should be all set to use the FoxRank library. If you encounter any bugs, please be sure to report them in the
issues tab.
Other Changes
RankedPlayer
now requires an Instance of FoxRank.RankedPlayer(Player, FoxRank)
- Fixed an issue with the Bungeecord Channel connecting even when it was disabled.
FoxRank 1.9.1
FoxRank 1.9.1
What's Changed
- The methods in ModerationAction are now public. Anyone can use them
There are no gameplay changes
Thanks guys!
-Foxikle
FoxRank Version 1.9
FoxRank 1.9
Hello! It sure has been a while. This update brings support for SQL data storage and BungeeCord
New Features
Events
FoxRank now supports Spigot Events! The currently supported actions are:
- Rank Changes (
RankChangeEvent
) - Player Vanish (
PlayerVanishEvent
) - Player Nickname (
PlayerNicknameEvent
) - Moderation Actions (Ban, Mute, Unban, Unmute) (
ModerationActionEvent
)
SQL Data Storage
FoxRank now supports SQL Storage. It is disabled by default, but can be enabled in the config.yml
All of the credentials for the database can also be configured. It is recommended that you use SQL storage over yaml.
NOTE: If invalid credentials are provided, the plugin will disable itself.
BungeeCord Support
FoxRank now supports BungeeCord. You can enable this in your config.yml
. This is only to be used if you are using a BungeeCord network. Any command can be run from a different server. FoxRank will provide tab-completions where applicable.
Miscellaneous changes
- The Actionbar is now toggleable.
- The Actionbar is now updated when the player joins or the plugin is enabled.
- Fixed typo in the
NicknameChangedMessage
- Fixed unvanishing if your reset your nickname whilst being vanished
- Fixed players that joined after you vanished being able to see you
Technical Changes
- Logging Overhaul
Recoded the entire logging system. Everything is stored in a much more robust and scalable format.
NOTE: There is a noticeable delay between sending the logs command and the menu popping up. This is intentional as fetching and parsing the data can take a second or two.
Rank#ofString
now returnsDEFAULT
if the provided string is null instead of throwing an error.- Removed deprecated methods.
- Minecraft Teams are unregistered on plugin disable.
As always if you encounter any bugs, please report them here.
Thanks everyone!
~ Foxikle
FoxRank 1.8 - Bans and Logging
Hello! This update has been a long time in the making.
Here's what I've been busy working on:
Bans
- Added a command to ban players. (Toggleable in the
config.yml
file)/ban <Player>, <Preset or 'CUSTOM'>, <Duration>, <Silent/Public>, [Custom reason. Only applies if the preset reason specified is 'CUSTOM']
- Added a command to unban players.
- Added ban message and ban duration presets to the config.
BanDurations
andBanReasons
. - Ban messages are completely customizable. The default is inspired by the ban messages of Hypixel.
Preset message options
SECURITY: Suspicious activity has been detected on your account.
HACKING: Cheating through the use of unfair game mechanics. (Hacking)
DUPING: Using unfair game mechanics to duplicate items.
BUG_ABUSE: Using unintentional bugs or defects to your advantage.
INAPPROPRIATE_COSMETICS: Using a skin or cape that violates our terms of service.
INAPPROPRIATE_BUILD: Building a structure that violates our terms of service.
BOOSTING: Attempting to boost another player's stats
CUSTOM: This is overwritten, so any value you put here does not matter.
NOTE: You can ban, unban, mute, and unmute Offline players. (Their names will show up in tab completion, more info later)
Logging
- Added a command to view the logs of a player.
/logs <Player>, <Logtype>
- All of the data is stored in
Auditlog.yml
.
NOTE: If a player is unmuted by themselves (And not a staff rank), this is natural. It simply means that the mute has expired.
Log types
'MUTE'
'UNMUTE'
'BAN'
'UNBAN'
'NICKNAME'
General Changes
- The
config.yml
has been drastically improved for a better user experience. - Reworked placeholders slightly. Instead of being in only block capitols, there is a
$
in front of the placeholder.
For Developers
FoxRank now supports offline players. You can access (Most) of the methods by instantiating OfflineRankedPlayer
.
The methods RankedPlayer#mutePlayer(Instant duration, String reason)
, RankedPlayer#unmutePlayer()
, and Rank#getRankFromString(String s)
are now deprecated and will be removed at the release of FoxRank 1.9
They have been replaced by mutePlayer(RankedPlayer staff, Instant duration, String reason)
, mutePlayer(Instant duration, String reason)
, and Rank#ofString(String s)
.
If you wish to get the banned players, simply use FoxRank#getBannedPlayers()
. This simply returns a list of offline players, similar to how Bukkit does.
NOTE: This update does require you to delete your config. A new one will be regenerated on the next server restart. I am working on a solution to detect and automatically transfer your data to a new format.
As always if you encounter any bugs, please report them here.
Thanks everyone!
~ Foxikle
(Edited 2/1/23)
Clarified support for offline players Added note about future plans for backward compatibility.
FoxRank v1.7
Customization Update (1.7)
What's Changed
The ability to cosmetically disable ranks.
Customizing EVERY message!
These can be found in the config.yml
Currently these are the messages you can configure:
Mutes
- Initial Mute message (
MuteMessage
) - Muting a player that is already muted (
MuteCommandPlayerAlreadyMuted
) - Unmuting a player that isn't muted (
UnmuteCommandPlayerNotMuted
) - Using /immuted whilst not being muted (
ImmutedCommandNotMutedMessage
) - The message sent to the sender of /mute if successful (
UnmuteSenderMessage
) - The message sent to the player being unmuted (
UnmuteRecieverMessage
) - Attempting to mute a player with a higher powerlevel (
MutePlayerWithHigherPowerLevelMessage
) - Attempting to chat while muted (
ChatWhileMutedMessage
) - Immuted message (
IAmMutedCommandMessageToMuted
) & (IAmMutedCommandMessageFromMuted
)
Ranks
- Rank change (
RankIsNowMessage
)
Nicknames
- Trying to change your nickname to something longer than 16 characters (
NicknameTooLongMessage
) - Successfully updating your nickname (
NickNameChangedMessage
) - Using a blacklisted nickname (
BlacklistedNicknameMessage
);
Vanishing
- Going into vanish (
VanishMessage
) - Going out of vanish(
UnvanishMessage
)
General
- Lacking permissions (
NoPermissionMessage
) - Command Disabled (
CommandDisabledMessage
) - Missing Arguments (
MissingArgsMessage
) - Invalid arguments (
InvalidArgumentMessage
)
All messages are configurable using §
color codes.
Many messages have placeholdors (defined in the comment above explaining each option)
Many (but not all) messages support making a new line using \n
NOTE: This update does require you to delete your config. A new one will be regenerated on the next server restart.
As always if you encounter any bugs, please report them here.
Have a great 2023!
Thanks everyone!
~ Foxikle
1.6.3.2
FoxRank V1.6.3.2
What's Changed
- Added a method to get a formatted duration ex.
9d 23h 59m 59s
(RankedPlayer#getFormattedMuteDuration()
) - Neatened Mute code to be more consistent.
- Muting a player will send them a message similar to the message when they attempt to chat.
- Unmuting a player sends them a message saying they've been unmuted.
- Unmutes will now trigger on the
PlayerJoinEvent
as well as theAsyncPlayerChatEvent
For Developers:
You can no longer directly access the methods in FoxRank, so please use the methods on RankedPlayer
instead.
That's it everyone! This list is not exhaustive, so some changes may have been made, but are minor enough as to not necessitate noting.
If you find any bugs or want any features please head over to the issues tab, here.
Thanks!
-Foxikle
FoxRank 1.6.3 -- HotFix 1
Whoops! Somehow I managed to not log mutes while using the command.
What's Changed
- Logging mutes while using the
/mute
command.
Thanks!
-Foxikle
FoxRank v1.6.3
FoxRank v1.6.3
Hello all! About a week ago I proposed some changes I'd like to make. I listed them in order that I'd be making them, and the first two were about muting players. Today's update is rather small. But this update includes:
- More api support via github packages.
- Api support for mute related activities.
- A command to mute players
/mute <player> <duration (1d, 4h, 30m etc)> <reason>
- A separate log file for mutes
- Fixed a minor grammatical error in
NicknameLog.yml
That's all for today folks,
As always if you find any issues please report them here
-Foxikle