diff --git a/Changelog.txt b/Changelog.txt
index 3fc305deb5..1a5db6a57d 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,3 +1,8 @@
+Version 2.1.225
+ Fixed various bugs with ability text
+ Updated Adventure dependencies
+ Added new API McMMOPlayerNotificationEvent.getPlayer
+
Version 2.1.224
Updated to a new build of ACF to fix NoSuchFieldException locale
Improved Folia Support (Thanks HSGamer)
diff --git a/pom.xml b/pom.xml
index 99cdf9db03..232befc70a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
4.0.0
com.gmail.nossr50.mcMMO
mcMMO
- 2.1.225-SNAPSHOT
+ 2.1.225
mcMMO
https://github.com/mcMMO-Dev/mcMMO
@@ -150,21 +150,20 @@
net.kyori:examination-api
net.kyori:examination-string
net.kyori:adventure-text-serializer-legacy
+ net.kyori:adventure-text-serializer-gson
+ net.kyori:adventure-text-serializer-json
net.kyori:adventure-text-serializer-bungeecord
net.kyori:adventure-text-serializer-craftbukkit
net.kyori:adventure-text-serializer-gson-legacy-impl
+ net.kyori:adventure-text-serializer-json-legacy-impl
co.aikar:acf-bukkit
com.tcoded:FoliaLib
- net.kyori.examination
- com.gmail.nossr50.mcmmo.kyori.examination
-
-
- net.kyori.adventure
- com.gmail.nossr50.mcmmo.kyori.adventure
+ net.kyori
+ com.gmail.nossr50.mcmmo.kyori
co.aikar.commands
@@ -269,41 +268,65 @@
acf-bukkit
0.5.1-SNAPSHOT
-
+
+ net.kyori
+ adventure-text-serializer-bungeecord
+ 4.3.1
+
net.kyori
adventure-text-serializer-gson
- 4.13.0
+ 4.14.0
+
+
+ net.kyori
+ adventure-text-serializer-gson-legacy-impl
+ 4.14.0
+
+
+ net.kyori
+ adventure-text-serializer-json
+ 4.14.0
+
+
+ net.kyori
+ adventure-text-serializer-json-legacy-impl
+ 4.14.0
net.kyori
adventure-api
- 4.13.0
+ 4.14.0
net.kyori
adventure-nbt
- 4.13.0
+ 4.14.0
net.kyori
adventure-key
- 4.13.0
+ 4.14.0
net.kyori
- adventure-text-serializer-gson-legacy-impl
- 4.13.0
+ adventure-platform-api
+ 4.3.1
net.kyori
adventure-platform-bukkit
- 4.3.0
+ 4.3.1
net.kyori
- adventure-platform-api
- 4.3.0
+ adventure-platform-facet
+ 4.3.1
+
+
+ net.kyori
+ adventure-platform-viaversion
+ 4.3.1
org.apache.maven.scm
diff --git a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
index 1b0c17949a..75d8eae834 100644
--- a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
+++ b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerNotificationEvent.java
@@ -27,8 +27,13 @@ public class McMMOPlayerNotificationEvent extends Event implements Cancellable {
protected Component notificationTextComponent;
protected final NotificationType notificationType;
- public McMMOPlayerNotificationEvent(Player who, NotificationType notificationType, Component notificationTextComponent, McMMOMessageType chatMessageType, boolean isMessageAlsoBeingSentToChat) {
+ protected final Player player;
+
+ public McMMOPlayerNotificationEvent(Player player, NotificationType notificationType,
+ Component notificationTextComponent, McMMOMessageType chatMessageType,
+ boolean isMessageAlsoBeingSentToChat) {
super(false);
+ this.player = player;
this.notificationType = notificationType;
this.notificationTextComponent = notificationTextComponent;
this.chatMessageType = chatMessageType;
@@ -48,6 +53,10 @@ public void setMessageAlsoBeingSentToChat(boolean messageAlsoBeingSentToChat) {
isMessageAlsoBeingSentToChat = messageAlsoBeingSentToChat;
}
+ public Player getPlayer() {
+ return player;
+ }
+
public Component getNotificationTextComponent() {
return notificationTextComponent;
}
diff --git a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
index d7b9afcd05..615ae3fbb8 100644
--- a/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
+++ b/src/main/java/com/gmail/nossr50/util/player/NotificationManager.java
@@ -16,7 +16,6 @@
import com.gmail.nossr50.util.text.McMMOMessageType;
import com.gmail.nossr50.util.text.TextComponentFactory;
import net.kyori.adventure.audience.Audience;
-import net.kyori.adventure.audience.MessageType;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
@@ -49,7 +48,9 @@ public static void sendPlayerInformation(Player player, NotificationType notific
if(UserManager.getPlayer(player) == null || !UserManager.getPlayer(player).useChatNotifications())
return;
- McMMOMessageType destination = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
+ McMMOMessageType destination
+ = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(notificationType)
+ ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
Component message = TextComponentFactory.getNotificationTextComponentFromLocale(key);
McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(player, notificationType, destination, message);
@@ -75,7 +76,8 @@ public static boolean doesPlayerUseNotifications(Player player)
* @param key Locale Key for the string to use with this event
* @param values values to be injected into the locale string
*/
- public static void sendNearbyPlayersInformation(Player targetPlayer, NotificationType notificationType, String key, String... values)
+ public static void sendNearbyPlayersInformation(Player targetPlayer, NotificationType notificationType, String key,
+ String... values)
{
sendPlayerInformation(targetPlayer, notificationType, key, values);
}
@@ -99,7 +101,8 @@ public static void sendPlayerInformationChatOnlyPrefixed(Player player, String k
player.sendMessage(prefixFormattedMessage);
}
- public static void sendPlayerInformation(Player player, NotificationType notificationType, String key, String... values)
+ public static void sendPlayerInformation(Player player, NotificationType notificationType, String key,
+ String... values)
{
if(UserManager.getPlayer(player) == null || !UserManager.getPlayer(player).useChatNotifications())
return;
@@ -119,24 +122,28 @@ private static void sendNotification(Player player, McMMOPlayerNotificationEvent
final Audience audience = mcMMO.getAudiences().player(player);
//If the message is being sent to the action bar we need to check if the copy if a copy is sent to the chat system
+ Component notificationTextComponent = customEvent.getNotificationTextComponent();
if(customEvent.getChatMessageType() == McMMOMessageType.ACTION_BAR)
{
- audience.sendActionBar(customEvent.getNotificationTextComponent());
+ audience.sendActionBar(notificationTextComponent);
if(customEvent.isMessageAlsoBeingSentToChat())
{
//Send copy to chat system
- audience.sendMessage(Identity.nil(), customEvent.getNotificationTextComponent(), MessageType.SYSTEM);
+ audience.sendMessage(notificationTextComponent);
}
} else {
- audience.sendMessage(Identity.nil(), customEvent.getNotificationTextComponent(), MessageType.SYSTEM);
+ audience.sendMessage(notificationTextComponent);
}
}
- private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType, McMMOMessageType destination, Component message) {
+ private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player, NotificationType notificationType,
+ McMMOMessageType destination,
+ Component message) {
//Init event
McMMOPlayerNotificationEvent customEvent = new McMMOPlayerNotificationEvent(player,
- notificationType, message, destination, mcMMO.p.getAdvancedConfig().doesNotificationSendCopyToChat(notificationType));
+ notificationType, message, destination,
+ mcMMO.p.getAdvancedConfig().doesNotificationSendCopyToChat(notificationType));
//Call event
Bukkit.getServer().getPluginManager().callEvent(customEvent);
@@ -149,15 +156,23 @@ private static McMMOPlayerNotificationEvent checkNotificationEvent(Player player
* @param skillName skill that leveled up
* @param newLevel new level of that skill
*/
- public static void sendPlayerLevelUpNotification(McMMOPlayer mcMMOPlayer, PrimarySkillType skillName, int levelsGained, int newLevel)
+ public static void sendPlayerLevelUpNotification(McMMOPlayer mcMMOPlayer, PrimarySkillType skillName,
+ int levelsGained, int newLevel)
{
if(!mcMMOPlayer.useChatNotifications())
return;
- McMMOMessageType destination = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
+ McMMOMessageType destination
+ = mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.LEVEL_UP_MESSAGE)
+ ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
- Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(skillName, levelsGained, newLevel);
- McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(mcMMOPlayer.getPlayer(), NotificationType.LEVEL_UP_MESSAGE, destination, levelUpTextComponent);
+ Component levelUpTextComponent = TextComponentFactory.getNotificationLevelUpTextComponent(
+ skillName, levelsGained, newLevel);
+ McMMOPlayerNotificationEvent customEvent = checkNotificationEvent(
+ mcMMOPlayer.getPlayer(),
+ NotificationType.LEVEL_UP_MESSAGE,
+ destination,
+ levelUpTextComponent);
sendNotification(mcMMOPlayer.getPlayer(), customEvent);
}
@@ -176,17 +191,12 @@ public static void sendPlayerUnlockNotification(McMMOPlayer mcMMOPlayer, SubSkil
return;
//CHAT MESSAGE
- mcMMO.getAudiences().player(mcMMOPlayer.getPlayer()).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mcMMOPlayer.getPlayer(), subSkillType));
+ mcMMO.getAudiences().player(mcMMOPlayer.getPlayer()).sendMessage(Identity.nil(),
+ TextComponentFactory.getSubSkillUnlockedNotificationComponents(mcMMOPlayer.getPlayer(), subSkillType));
//Unlock Sound Effect
- SoundManager.sendCategorizedSound(mcMMOPlayer.getPlayer(), mcMMOPlayer.getPlayer().getLocation(), SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
-
- //ACTION BAR MESSAGE
- /*if(mcMMO.p.getAdvancedConfig().doesNotificationUseActionBar(NotificationType.SUBSKILL_UNLOCKED))
- mcMMOPlayer.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(LocaleLoader.getString("JSON.SkillUnlockMessage",
- subSkillType.getLocaleName(),
- String.valueOf(RankUtils.getRank(mcMMOPlayer.getPlayer(),
- subSkillType)))));*/
+ SoundManager.sendCategorizedSound(mcMMOPlayer.getPlayer(), mcMMOPlayer.getPlayer().getLocation(),
+ SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
}
/**
@@ -225,7 +235,8 @@ private static void sendAdminCommandConfirmation(CommandSender commandSender, St
* @param commandSender the command user
* @param sensitiveCommandType type of command issued
*/
- public static void processSensitiveCommandNotification(CommandSender commandSender, SensitiveCommandType sensitiveCommandType, String... args) {
+ public static void processSensitiveCommandNotification(CommandSender commandSender,
+ SensitiveCommandType sensitiveCommandType, String... args) {
/*
* Determine the 'identity' of the one who executed the command to pass as a parameters
*/
@@ -233,19 +244,26 @@ public static void processSensitiveCommandNotification(CommandSender commandSend
if(commandSender instanceof Player)
{
- senderName = ((Player) commandSender).getDisplayName() + ChatColor.RESET + "-" + ((Player) commandSender).getUniqueId();
+ senderName = ((Player) commandSender).getDisplayName()
+ + ChatColor.RESET + "-" + ((Player) commandSender).getUniqueId();
}
//Send the notification
switch(sensitiveCommandType)
{
case XPRATE_MODIFY:
- sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.Start.Others", addItemToFirstPositionOfArray(senderName, args)));
- sendAdminCommandConfirmation(commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.Start.Self", args));
+ sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.Start.Others",
+ addItemToFirstPositionOfArray(senderName, args)));
+ sendAdminCommandConfirmation(
+ commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.Start.Self", args));
break;
case XPRATE_END:
- sendAdminNotification(LocaleLoader.getString("Notifications.Admin.XPRate.End.Others", addItemToFirstPositionOfArray(senderName, args)));
- sendAdminCommandConfirmation(commandSender, LocaleLoader.getString("Notifications.Admin.XPRate.End.Self", args));
+ sendAdminNotification(
+ LocaleLoader.getString(
+ "Notifications.Admin.XPRate.End.Others",
+ addItemToFirstPositionOfArray(senderName, args)));
+ sendAdminCommandConfirmation(commandSender,
+ LocaleLoader.getString("Notifications.Admin.XPRate.End.Self", args));
break;
}
}
@@ -266,8 +284,6 @@ public static String[] addItemToFirstPositionOfArray(String itemToAdd, String...
return newArray;
}
- //TODO: Remove the code duplication, am lazy atm
- //TODO: Fix broadcasts being skipped for situations where a player skips over the milestone like with the addlevels command
public static void processLevelUpBroadcasting(@NotNull McMMOPlayer mmoPlayer, @NotNull PrimarySkillType primarySkillType, int level) {
if(level <= 0)
return;
@@ -290,13 +306,22 @@ public static void processLevelUpBroadcasting(@NotNull McMMOPlayer mmoPlayer, @N
.append(Component.newline())
.append(Component.text(LocalDate.now().toString()))
.append(Component.newline())
- .append(Component.text(mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType)+" reached level "+level)).color(TextColor.fromHexString(HEX_BEIGE_COLOR))
+ .append(Component.text(
+ mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType)
+ + " reached level "+level)).color(TextColor.fromHexString(HEX_BEIGE_COLOR))
.asHoverEvent();
- String localeMessage = LocaleLoader.getString("Broadcasts.LevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), level, mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType));
- Component message = LegacyComponentSerializer.legacySection().deserialize(localeMessage).hoverEvent(levelMilestoneHover);
-
- mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(Identity.nil(), message));
+ String localeMessage = LocaleLoader.getString(
+ "Broadcasts.LevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), level,
+ mcMMO.p.getSkillTools().getLocalizedSkillName(primarySkillType));
+ Component component = LegacyComponentSerializer
+ .legacySection()
+ .deserialize(localeMessage)
+ .hoverEvent(levelMilestoneHover);
+
+ // TODO: Update system msg API
+ mcMMO.p.getFoliaLib().getImpl().runNextTick(
+ t -> audience.sendMessage(component));
}
}
}
@@ -331,7 +356,7 @@ public static void processPowerLevelUpBroadcasting(@NotNull McMMOPlayer mmoPlaye
String localeMessage = LocaleLoader.getString("Broadcasts.PowerLevelUpMilestone", mmoPlayer.getPlayer().getDisplayName(), powerLevel);
Component message = LegacyComponentSerializer.legacySection().deserialize(localeMessage).hoverEvent(levelMilestoneHover);
- mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(Identity.nil(), message));
+ mcMMO.p.getFoliaLib().getImpl().runNextTick(t -> audience.sendMessage(message));
}
}
}
diff --git a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
index ae2f842ad6..ec4d56481e 100644
--- a/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
+++ b/src/main/java/com/gmail/nossr50/util/skills/RankUtils.java
@@ -291,30 +291,12 @@ private static void initMaps(String s) {
subSkillRanks.computeIfAbsent(s, k -> new HashMap<>());
}
-/* public static int getSubSkillUnlockRequirement(SubSkillType subSkillType)
- {
- String skillName = subSkillType.toString();
- int numRanks = subSkillType.getNumRanks();
-
- if(subSkillRanks == null)
- subSkillRanks = new HashMap<>();
-
- if(numRanks == 0)
- return -1; //-1 Means the skill doesn't have ranks
-
- if(subSkillRanks.get(skillName) == null && numRanks > 0)
- addRanks(subSkillType);
-
- return subSkillRanks.get(subSkillType.toString()).get(1);
- }*/
-
/**
* Gets the unlock level for a specific rank in a subskill
* @param subSkillType The target subskill
* @param rank The target rank
* @return The level at which this rank unlocks
*/
- @Deprecated
public static int getRankUnlockLevel(SubSkillType subSkillType, int rank)
{
return RankConfig.getInstance().getSubSkillUnlockLevel(subSkillType, rank);
diff --git a/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java b/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
index e6961de1d9..81ac8da280 100644
--- a/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
+++ b/src/main/java/com/gmail/nossr50/util/text/TextComponentFactory.java
@@ -12,8 +12,6 @@
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.RankUtils;
import net.kyori.adventure.audience.Audience;
-import net.kyori.adventure.audience.MessageType;
-import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
@@ -35,41 +33,37 @@ public class TextComponentFactory {
/**
* Makes a text component using strings from a locale and supports passing an undefined number of variables to the LocaleLoader
+ *
* @param localeKey target locale string address
- * @param values vars to be passed to the locale loader
+ * @param values vars to be passed to the locale loader
* @return
*/
- public static TextComponent getNotificationMultipleValues(String localeKey, String... values)
- {
+ public static TextComponent getNotificationMultipleValues(String localeKey, String... values) {
String preColoredString = LocaleLoader.getString(localeKey, (Object[]) values);
return Component.text(preColoredString);
}
- public static Component getNotificationTextComponentFromLocale(String localeKey)
- {
+ public static Component getNotificationTextComponentFromLocale(String localeKey) {
return getNotificationTextComponent(LocaleLoader.getString(localeKey));
}
- public static Component getNotificationLevelUpTextComponent(PrimarySkillType skill, int levelsGained, int currentLevel)
- {
- return Component.text(LocaleLoader.getString("Overhaul.Levelup", LocaleLoader.getString("Overhaul.Name."+ StringUtils.getCapitalized(skill.toString())), levelsGained, currentLevel));
+ public static Component getNotificationLevelUpTextComponent(PrimarySkillType skill, int levelsGained, int currentLevel) {
+ return Component.text(LocaleLoader.getString("Overhaul.Levelup", LocaleLoader.getString("Overhaul.Name." + StringUtils.getCapitalized(skill.toString())), levelsGained, currentLevel));
}
- private static TextComponent getNotificationTextComponent(String text)
- {
+ private static TextComponent getNotificationTextComponent(String text) {
//textComponent.setColor(getNotificationColor(notificationType));
return Component.text(text);
}
- public static void sendPlayerSubSkillWikiLink(Player player, String subskillformatted)
- {
- if(!mcMMO.p.getGeneralConfig().getUrlLinksEnabled())
+ public static void sendPlayerSubSkillWikiLink(Player player, String subskillformatted) {
+ if (!mcMMO.p.getGeneralConfig().getUrlLinksEnabled())
return;
TextComponent.Builder wikiLinkComponent = Component.text().content(LocaleLoader.getString("Overhaul.mcMMO.MmoInfo.Wiki"));
wikiLinkComponent.decoration(TextDecoration.UNDERLINED, true);
- String wikiUrl = "https://wiki.mcmmo.org/"+subskillformatted;
+ String wikiUrl = "https://wiki.mcmmo.org/" + subskillformatted;
wikiLinkComponent.clickEvent(ClickEvent.openUrl(wikiUrl));
@@ -77,39 +71,40 @@ public static void sendPlayerSubSkillWikiLink(Player player, String subskillform
wikiLinkComponent.hoverEvent(HoverEvent.showText(componentBuilder.build()));
- mcMMO.getAudiences().player(player).sendMessage(Identity.nil(), wikiLinkComponent, MessageType.SYSTEM);
+ mcMMO.getAudiences().player(player).sendMessage(wikiLinkComponent);
}
public static void sendPlayerUrlHeader(Player player) {
TextComponent prefix = Component.text(LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Prefix") + " ");
/*prefix.setColor(ChatColor.DARK_AQUA);*/
- TextComponent suffix = Component.text(" "+LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Suffix"));
+ TextComponent suffix = Component.text(" " + LocaleLoader.getString("Overhaul.mcMMO.Url.Wrap.Suffix"));
/*suffix.setColor(ChatColor.DARK_AQUA);*/
TextComponent emptySpace = Component.space();
- mcMMO.getAudiences().player(player).sendMessage(Identity.nil(),TextComponent.ofChildren(
- prefix,
- getWebLinkTextComponent(McMMOWebLinks.WEBSITE),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.DISCORD),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.PATREON),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.WIKI),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.SPIGOT),
- emptySpace,
- getWebLinkTextComponent(McMMOWebLinks.HELP_TRANSLATE),
- suffix
- ), MessageType.SYSTEM);
+ // TODO: Update system msg API
+ mcMMO.getAudiences().player(player).sendMessage(Component.textOfChildren(
+ prefix,
+ getWebLinkTextComponent(McMMOWebLinks.WEBSITE),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.DISCORD),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.PATREON),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.WIKI),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.SPIGOT),
+ emptySpace,
+ getWebLinkTextComponent(McMMOWebLinks.HELP_TRANSLATE),
+ suffix
+ ));
}
/**
* Sends a player a bunch of text components that represent a list of sub-skills
* Styling and formatting is applied before sending the messages
*
- * @param player target player
+ * @param player target player
* @param subSkillComponents the text components representing the sub-skills by name
*/
public static void sendPlayerSubSkillList(@NotNull Player player, @NotNull List subSkillComponents) {
@@ -129,17 +124,15 @@ public static void sendPlayerSubSkillList(@NotNull Player player, @NotNull List<
}
//Send each group
- for(Component curLine : individualLinesToSend) {
- audience.sendMessage(Identity.nil(), curLine);
+ for (Component curLine : individualLinesToSend) {
+ audience.sendMessage(curLine);
}
}
- private static Component getWebLinkTextComponent(McMMOWebLinks webLinks)
- {
+ private static Component getWebLinkTextComponent(McMMOWebLinks webLinks) {
TextComponent.Builder webTextComponent;
- switch(webLinks)
- {
+ switch (webLinks) {
case WEBSITE:
webTextComponent = Component.text().content(LocaleLoader.getString("JSON.Hover.AtSymbolURL"));
TextUtils.addChildWebComponent(webTextComponent, "Web");
@@ -180,12 +173,10 @@ private static Component getWebLinkTextComponent(McMMOWebLinks webLinks)
return webTextComponent.build();
}
- private static Component getUrlHoverEvent(McMMOWebLinks webLinks)
- {
+ private static Component getUrlHoverEvent(McMMOWebLinks webLinks) {
TextComponent.Builder componentBuilder = Component.text().content(webLinks.getNiceTitle());
- switch(webLinks)
- {
+ switch (webLinks) {
case WEBSITE:
addUrlHeaderHover(webLinks, componentBuilder);
componentBuilder.append(Component.newline()).append(Component.newline());
@@ -223,7 +214,7 @@ private static Component getUrlHoverEvent(McMMOWebLinks webLinks)
componentBuilder.append(Component.text(webLinks.getLocaleDescription(), NamedTextColor.GREEN));
componentBuilder.append(Component.newline());
componentBuilder.append(Component.text("You can use this website to help translate mcMMO into your language!" +
- "\nIf you want to know more contact me in discord.", NamedTextColor.DARK_GRAY));
+ "\nIf you want to know more contact me in discord.", NamedTextColor.DARK_GRAY));
}
return componentBuilder.build();
@@ -234,13 +225,11 @@ private static void addUrlHeaderHover(McMMOWebLinks webLinks, TextComponent.Buil
componentBuilder.append(Component.text(webLinks.getUrl(), NamedTextColor.GRAY, TextDecoration.ITALIC));
}
- private static ClickEvent getUrlClickEvent(String url)
- {
+ private static ClickEvent getUrlClickEvent(String url) {
return ClickEvent.openUrl(url);
}
- private static Component getSubSkillTextComponent(Player player, SubSkillType subSkillType)
- {
+ private static Component getSubSkillTextComponent(Player player, SubSkillType subSkillType) {
//Get skill name
String skillName = subSkillType.getLocaleName();
@@ -257,8 +246,7 @@ private static Component getSubSkillTextComponent(Player player, SubSkillType su
return textComponent.build();
}
- private static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill)
- {
+ private static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill) {
//String key = abstractSubSkill.getConfigKeyName();
String skillName = abstractSubSkill.getNiceName();
@@ -297,46 +285,37 @@ private static TextComponent.Builder initNewSkillTextComponent(Player player, St
return textComponent;
}
- private static Component getSubSkillHoverComponent(Player player, AbstractSubSkill abstractSubSkill)
- {
+ private static Component getSubSkillHoverComponent(Player player, AbstractSubSkill abstractSubSkill) {
return getSubSkillHoverEventJSON(abstractSubSkill, player);
}
- private static Component getSubSkillHoverComponent(Player player, SubSkillType subSkillType)
- {
+ private static Component getSubSkillHoverComponent(Player player, SubSkillType subSkillType) {
return getSubSkillHoverEventJSON(subSkillType, player);
}
/**
* Used for the skill in the new skill system (Deriving from AbstractSubSkill)
+ *
* @param abstractSubSkill this subskill
- * @param player the player who owns this subskill
+ * @param player the player who owns this subskill
* @return the hover basecomponent object for this subskill
*/
- private static Component getSubSkillHoverEventJSON(AbstractSubSkill abstractSubSkill, Player player)
- {
+ private static Component getSubSkillHoverEventJSON(AbstractSubSkill abstractSubSkill, Player player) {
String skillName = abstractSubSkill.getNiceName();
/*
* Hover Event BaseComponent color table
*/
- TextColor ccSubSkillHeader = NamedTextColor.GOLD;
- TextColor ccRank = NamedTextColor.BLUE;
- TextColor ccCurRank = NamedTextColor.GREEN;
- TextColor ccPossessive = NamedTextColor.WHITE;
- //ChatColor ccDescriptionHeader = ChatColor.DARK_PURPLE;
- //ChatColor ccDescription = ChatColor.WHITE;
- TextColor ccLocked = NamedTextColor.DARK_GRAY;
- TextColor ccLevelRequirement = NamedTextColor.BLUE;
- TextColor ccLevelRequired = NamedTextColor.RED;
+ TextColor ccLocked = NamedTextColor.DARK_GRAY;
+ TextColor ccLevelRequirement = NamedTextColor.BLUE;
+ TextColor ccLevelRequired = NamedTextColor.RED;
SubSkillType subSkillType = abstractSubSkill.getSubSkillType();
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, abstractSubSkill));
- if(!RankUtils.hasUnlockedSubskill(player, abstractSubSkill))
- {
+ if (!RankUtils.hasUnlockedSubskill(player, abstractSubSkill)) {
//Skill is not unlocked yet
addLocked(abstractSubSkill, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
} else {
@@ -346,12 +325,11 @@ private static Component getSubSkillHoverEventJSON(AbstractSubSkill abstractSubS
int curRank = RankUtils.getRank(player, abstractSubSkill);
int nextRank = 0;
- if(curRank < abstractSubSkill.getNumRanks() && abstractSubSkill.getNumRanks() > 0)
- {
- nextRank = RankUtils.getRankUnlockLevel(abstractSubSkill, curRank+1);
+ if (curRank < abstractSubSkill.getNumRanks() && abstractSubSkill.getNumRanks() > 0) {
+ nextRank = RankUtils.getRankUnlockLevel(abstractSubSkill, curRank + 1);
}
- addRanked(ccRank, ccCurRank, ccPossessive, ccCurRank, componentBuilder, abstractSubSkill.getNumRanks(), RankUtils.getRank(player, abstractSubSkill), nextRank);
+ addRanked(componentBuilder, abstractSubSkill.getNumRanks(), RankUtils.getRank(player, abstractSubSkill), nextRank);
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.DescriptionHeader")));
componentBuilder.append(Component.newline()).append(Component.text(abstractSubSkill.getDescription())).append(Component.newline());
@@ -386,17 +364,14 @@ private static TextComponent.Builder getNewComponentBuilder(String skillName) {
return componentBuilder;
}
- private static void addRanked(TextColor ccRank, TextColor ccCurRank, TextColor ccPossessive, TextColor ccNumRanks, TextComponent.Builder componentBuilder, int numRanks, int rank, int nextRank) {
+ private static void addRanked(TextComponent.Builder componentBuilder, int numRanks, int rank, int nextRank) {
if (numRanks > 0) {
//Rank: x
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Hover.Rank", String.valueOf(rank)))).append(Component.newline());
//Next Rank: x
- if(nextRank > rank)
+ if (nextRank > rank)
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Hover.NextRank", String.valueOf(nextRank)))).append(Component.newline());
-
- /*componentBuilder.append(" " + LocaleLoader.getString("JSON.RankPossesive") + " ").color(ccPossessive);
- componentBuilder.append(String.valueOf(numRanks)).color(ccNumRanks);*/
}
}
@@ -418,47 +393,38 @@ private static void addLocked(TextColor ccLocked, TextColor ccLevelRequirement,
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.LevelRequirement") + ": ", ccLevelRequirement));
}
- @Deprecated
- private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Player player)
- {
+ private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Player player) {
String skillName = subSkillType.getLocaleName();
/*
* Hover Event BaseComponent color table
*/
- TextColor ccSubSkillHeader = NamedTextColor.GOLD;
- TextColor ccRank = NamedTextColor.BLUE;
- TextColor ccCurRank = NamedTextColor.GREEN;
- TextColor ccPossessive = NamedTextColor.WHITE;
- TextColor ccDescriptionHeader = NamedTextColor.DARK_PURPLE;
- TextColor ccDescription = NamedTextColor.DARK_GRAY;
- TextColor ccLocked = NamedTextColor.DARK_GRAY;
- TextColor ccLevelRequirement = NamedTextColor.BLUE;
- TextColor ccLevelRequired = NamedTextColor.RED;
+ TextColor ccDescriptionHeader = NamedTextColor.DARK_PURPLE;
+ TextColor ccDescription = NamedTextColor.DARK_GRAY;
+ TextColor ccLocked = NamedTextColor.DARK_GRAY;
+ TextColor ccLevelRequirement = NamedTextColor.BLUE;
+ TextColor ccLevelRequired = NamedTextColor.RED;
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, subSkillType));
- if(!RankUtils.hasUnlockedSubskill(player, subSkillType))
- {
+ if (!RankUtils.hasUnlockedSubskill(player, subSkillType)) {
//Skill is not unlocked yet
addLocked(subSkillType, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
} else {
//addSubSkillTypeToHoverEventJSON(subSkillType, componentBuilder);
//RANK
- if(subSkillType.getNumRanks() > 0)
- {
+ if (subSkillType.getNumRanks() > 0) {
int curRank = RankUtils.getRank(player, subSkillType);
int nextRank = 0;
- if(curRank < subSkillType.getNumRanks())
- {
- nextRank = RankUtils.getRankUnlockLevel(subSkillType, curRank+1);
+ if (curRank < subSkillType.getNumRanks()) {
+ nextRank = RankUtils.getRankUnlockLevel(subSkillType, curRank + 1);
}
- addRanked(ccRank, ccCurRank, ccPossessive, ccCurRank, componentBuilder, subSkillType.getNumRanks(), RankUtils.getRank(player, subSkillType), nextRank);
-
+ addRanked(componentBuilder, subSkillType.getNumRanks(),
+ RankUtils.getRank(player, subSkillType), nextRank);
}
componentBuilder.append(Component.newline());
@@ -472,55 +438,52 @@ private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Pl
return componentBuilder.build();
}
- private static void addSubSkillTypeToHoverEventJSON(AbstractSubSkill abstractSubSkill, TextComponent.Builder componentBuilder)
- {
- if(abstractSubSkill.isSuperAbility())
- {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.SuperAbility"), NamedTextColor.LIGHT_PURPLE, TextDecoration.BOLD));
- } else if(abstractSubSkill.isActiveUse())
- {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Active"), NamedTextColor.DARK_RED, TextDecoration.BOLD));
+ private static void addSubSkillTypeToHoverEventJSON(AbstractSubSkill abstractSubSkill,
+ TextComponent.Builder componentBuilder) {
+ if (abstractSubSkill.isSuperAbility()) {
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.SuperAbility"),
+ NamedTextColor.LIGHT_PURPLE, TextDecoration.BOLD));
+ } else if (abstractSubSkill.isActiveUse()) {
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Active"),
+ NamedTextColor.DARK_RED, TextDecoration.BOLD));
} else {
- componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Passive"), NamedTextColor.GREEN, TextDecoration.BOLD));
+ componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Type.Passive"),
+ NamedTextColor.GREEN, TextDecoration.BOLD));
}
componentBuilder.append(Component.newline());
}
- public static void getSubSkillTextComponents(Player player, List textComponents, PrimarySkillType parentSkill) {
- for(SubSkillType subSkillType : SubSkillType.values())
- {
- if(subSkillType.getParentSkill() == parentSkill)
- {
+ public static void getSubSkillTextComponents(Player player, List textComponents,
+ PrimarySkillType parentSkill) {
+ for (SubSkillType subSkillType : SubSkillType.values()) {
+ if (subSkillType.getParentSkill() == parentSkill) {
//TODO: Hacky rewrite later
//Only some versions of MC have this skill
- if(subSkillType == SubSkillType.FISHING_MASTER_ANGLER && mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer() == null)
+ if (subSkillType == SubSkillType.FISHING_MASTER_ANGLER
+ && mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer() == null)
continue;
- if(Permissions.isSubSkillEnabled(player, subSkillType))
- {
- if(!InteractionManager.hasSubSkill(subSkillType))
+ if (Permissions.isSubSkillEnabled(player, subSkillType)) {
+ if (!InteractionManager.hasSubSkill(subSkillType))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, subSkillType));
}
}
}
/* NEW SKILL SYSTEM */
- for(AbstractSubSkill abstractSubSkill : InteractionManager.getSubSkillList())
- {
- if(abstractSubSkill.getPrimarySkill() == parentSkill)
- {
- if(Permissions.isSubSkillEnabled(player, abstractSubSkill))
+ for (AbstractSubSkill abstractSubSkill : InteractionManager.getSubSkillList()) {
+ if (abstractSubSkill.getPrimarySkill() == parentSkill) {
+ if (Permissions.isSubSkillEnabled(player, abstractSubSkill))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, abstractSubSkill));
}
}
}
- public static TextComponent getSubSkillUnlockedNotificationComponents(Player player, SubSkillType subSkillType)
- {
+ public static TextComponent getSubSkillUnlockedNotificationComponents(Player player, SubSkillType subSkillType) {
TextComponent.Builder unlockMessage = Component.text().content(LocaleLoader.getString("JSON.SkillUnlockMessage", subSkillType.getLocaleName(), RankUtils.getRank(player, subSkillType)));
unlockMessage.hoverEvent(HoverEvent.showText(getSubSkillHoverComponent(player, subSkillType)));
- unlockMessage.clickEvent(ClickEvent.runCommand("/"+subSkillType.getParentSkill().toString().toLowerCase(Locale.ENGLISH)));
+ unlockMessage.clickEvent(ClickEvent.runCommand("/" + subSkillType.getParentSkill().toString().toLowerCase(Locale.ENGLISH)));
return unlockMessage.build();
}
}