annotate messaging classes + update more things to use mmoPlayer

This commit is contained in:
nossr50 2020-12-09 18:09:04 -08:00
parent a2a41e77ea
commit 8491d0f4e5
13 changed files with 127 additions and 109 deletions

View File

@ -3,6 +3,9 @@ Version 2.2.000
Parts of the API have been migrated to mcMMO-API
(API) mcMMO makes use of jmal (Java Minecraft Abstraction Library) for some abstraction now
Codebase Stuff
Many places that passed type Player now passes type McMMOPlayer instead
New Skill - Tridents
New Skill - Crossbows

View File

@ -43,7 +43,7 @@ public class ExcavationCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
ExcavationManager excavationManager = mmoPlayer.getExcavationManager();
@ -67,7 +67,7 @@ public class ExcavationCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.EXCAVATION);

View File

@ -107,7 +107,7 @@ public class FishingCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
if (canFishermansDiet) {
@ -152,7 +152,7 @@ public class FishingCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.FISHING);

View File

@ -77,7 +77,7 @@ public class MiningCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
if (canBiggerBombs) {
@ -111,7 +111,7 @@ public class MiningCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.MINING);

View File

@ -91,7 +91,7 @@ public class RepairCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
if (canArcaneForge) {
@ -122,7 +122,7 @@ public class RepairCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.REPAIR);

View File

@ -36,7 +36,7 @@ public class SalvageCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
SalvageManager salvageManager = mmoPlayer.getSalvageManager();
@ -65,7 +65,7 @@ public class SalvageCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.SALVAGE);

View File

@ -67,7 +67,7 @@ public abstract class SkillCommand implements TabExecutor {
}
if (args.length == 0) {
Player player = (Player) sender;
Player player = mmoPlayer.getPlayer();
boolean isLucky = Permissions.lucky(player, skill);
boolean hasEndurance = (PerksUtils.handleActivationPerks(player, 0, 0) != 0);
@ -79,7 +79,7 @@ public abstract class SkillCommand implements TabExecutor {
player.sendMessage("");
}
permissionsCheck(player);
permissionsCheck(mmoPlayer);
dataCalculations(mmoPlayer, skillValue);
sendSkillCommandHeader(player, mmoPlayer, (int) skillValue);
@ -209,7 +209,7 @@ public abstract class SkillCommand implements TabExecutor {
}
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
public @NotNull List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
if (args.length == 1) {
return ImmutableList.of("?");
}
@ -220,11 +220,11 @@ public abstract class SkillCommand implements TabExecutor {
return Math.min((int) skillValue, maxLevel) / rankChangeLevel;
}
protected String[] getAbilityDisplayValues(@NotNull SkillActivationType skillActivationType, @NotNull McMMOPlayer mmoPlayer, @NotNull SubSkillType subSkill) {
protected @NotNull String[] getAbilityDisplayValues(@NotNull SkillActivationType skillActivationType, @NotNull McMMOPlayer mmoPlayer, @NotNull SubSkillType subSkill) {
return RandomChanceUtil.calculateAbilityDisplayValues(skillActivationType, mmoPlayer.getPlayer(), subSkill);
}
protected String[] calculateLengthDisplayValues(@NotNull McMMOPlayer mmoPlayer, float skillValue) {
protected @NotNull String[] calculateLengthDisplayValues(@NotNull McMMOPlayer mmoPlayer, float skillValue) {
int maxLength = skill.getSuperAbilityType().getMaxLength();
int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength();
int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap();
@ -248,12 +248,12 @@ public abstract class SkillCommand implements TabExecutor {
return new String[] { String.valueOf(length), String.valueOf(enduranceLength) };
}
protected String getStatMessage(SubSkillType subSkillType, String... vars)
protected @NotNull String getStatMessage(SubSkillType subSkillType, String... vars)
{
return getStatMessage(false, false, subSkillType, vars);
}
protected String getStatMessage(boolean isExtra, boolean isCustom, SubSkillType subSkillType, String... vars)
protected @NotNull String getStatMessage(boolean isExtra, boolean isCustom, SubSkillType subSkillType, String... vars)
{
String templateKey = isCustom ? "Ability.Generic.Template.Custom" : "Ability.Generic.Template";
String statDescriptionKey = !isExtra ? subSkillType.getLocaleKeyStatDescription() : subSkillType.getLocaleKeyStatExtraDescription();
@ -277,13 +277,13 @@ public abstract class SkillCommand implements TabExecutor {
protected abstract void dataCalculations(@NotNull McMMOPlayer mmoPlayer, float skillValue);
protected abstract void permissionsCheck(@NotNull Player player);
protected abstract void permissionsCheck(@NotNull McMMOPlayer mmoPlayer);
//protected abstract List<String> effectsDisplay();
protected abstract List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky);
protected abstract @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky);
protected abstract List<Component> getTextComponents(@NotNull McMMOPlayer player);
protected abstract @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer player);
/**
* Checks if a player can use a skill

View File

@ -61,7 +61,7 @@ public class SmeltingCommand extends SkillCommand {
}
@Override
protected List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
protected @NotNull List<String> statsDisplay(@NotNull McMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
List<String> messages = new ArrayList<>();
/*if (canFluxMine) {
@ -88,7 +88,7 @@ public class SmeltingCommand extends SkillCommand {
}
@Override
protected List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
protected @NotNull List<Component> getTextComponents(@NotNull McMMOPlayer mmoPlayer) {
List<Component> textComponents = new ArrayList<>();
TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.SMELTING);

View File

@ -38,15 +38,20 @@ import net.kyori.adventure.identity.Identity;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.permissions.Permissible;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public class McMMOPlayer extends PlayerProfile implements Identified {
public class McMMOPlayer extends PlayerProfile implements Identified, Permissible {
private final @NotNull Player player;
private final @NotNull Identity identity;
private @Nullable Party playerPartyRef;

View File

@ -1,8 +1,10 @@
package com.gmail.nossr50.datatypes.skills.subskills.interfaces;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.interfaces.Skill;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public interface SubSkill extends Skill {
/**
@ -59,9 +61,9 @@ public interface SubSkill extends Skill {
/**
* Adds detailed stats specific to this skill
* @param componentBuilder target component builder
* @param player owner of this skill
* @param mmoPlayer owner of this skill
*/
void addStats(TextComponent.Builder componentBuilder, Player player);
void addStats(TextComponent.Builder componentBuilder, @NotNull McMMOPlayer mmoPlayer);
/**
* Whether or not this subskill is enabled

View File

@ -25,6 +25,7 @@ import org.bukkit.Server;
import org.bukkit.SoundCategory;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class NotificationManager {
/**
@ -34,9 +35,11 @@ public class NotificationManager {
* @param notificationType notifications defined type
* @param key the locale key for the notifications defined message
*/
public static void sendPlayerInformation(Player player, NotificationType notificationType, String key)
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key)
{
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
return;
McMMOMessageType destination = AdvancedConfig.getInstance().doesNotificationUseActionBar(notificationType) ? McMMOMessageType.ACTION_BAR : McMMOMessageType.SYSTEM;
@ -48,40 +51,47 @@ public class NotificationManager {
}
public static boolean doesPlayerUseNotifications(Player player)
public static boolean doesPlayerUseNotifications(@NotNull Player player)
{
if(mcMMO.getUserManager().queryPlayer(player) == null)
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
if(mmoPlayer == null)
return false;
else
return mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications();
return mmoPlayer.hasSkillChatNotifications();
}
/**
* Sends players notifications from mcMMO
* This does this by sending out an event so other plugins can cancel it
* This event in particular is provided with a source player, and players near the source player are sent the information
*
* @param targetPlayer the recipient player for this message
* @param notificationType type of notification
* @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(@NotNull Player targetPlayer, @NotNull NotificationType notificationType, @NotNull String key, String... values)
{
sendPlayerInformation(targetPlayer, notificationType, key, values);
}
public static void sendPlayerInformationChatOnly(Player player, String key, String... values)
public static void sendPlayerInformationChatOnly(@NotNull Player player, @NotNull String key, String... values)
{
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
return;
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
player.sendMessage(preColoredString);
}
public static void sendPlayerInformationChatOnlyPrefixed(Player player, String key, String... values)
public static void sendPlayerInformationChatOnlyPrefixed(@NotNull Player player, @NotNull String key, String... values)
{
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
McMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
if(mmoPlayer == null || !mmoPlayer.hasSkillChatNotifications())
return;
String preColoredString = LocaleLoader.getString(key, (Object[]) values);
@ -89,7 +99,7 @@ public class NotificationManager {
player.sendMessage(prefixFormattedMessage);
}
public static void sendPlayerInformation(Player player, NotificationType notificationType, String key, String... values)
public static void sendPlayerInformation(@NotNull Player player, @NotNull NotificationType notificationType, @NotNull String key, String... values)
{
if(mcMMO.getUserManager().queryPlayer(player) == null || !mcMMO.getUserManager().queryPlayer(player).hasSkillChatNotifications())
return;
@ -102,7 +112,7 @@ public class NotificationManager {
sendNotification(player, customEvent);
}
private static void sendNotification(Player player, McMMOPlayerNotificationEvent customEvent) {
private static void sendNotification(@NotNull Player player, @NotNull McMMOPlayerNotificationEvent customEvent) {
if (customEvent.isCancelled())
return;
@ -152,7 +162,7 @@ public class NotificationManager {
sendNotification(mmoPlayer.getPlayer(), customEvent);
}
public static void broadcastTitle(Server server, String title, String subtitle, int i1, int i2, int i3)
public static void broadcastTitle(@NotNull Server server, @NotNull String title, @NotNull String subtitle, int i1, int i2, int i3)
{
for(Player player : server.getOnlinePlayers())
{
@ -160,13 +170,13 @@ public class NotificationManager {
}
}
public static void sendPlayerUnlockNotification(McMMOPlayer mmoPlayer, SubSkillType subSkillType)
public static void sendPlayerUnlockNotification(@NotNull McMMOPlayer mmoPlayer, @NotNull SubSkillType subSkillType)
{
if(!mmoPlayer.hasSkillChatNotifications())
return;
//CHAT MESSAGE
mcMMO.getAudiences().player(mmoPlayer.getPlayer()).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mmoPlayer.getPlayer(), subSkillType));
mcMMO.getAudiences().player(mmoPlayer.getPlayer()).sendMessage(Identity.nil(), TextComponentFactory.getSubSkillUnlockedNotificationComponents(mmoPlayer, subSkillType));
//Unlock Sound Effect
SoundManager.sendCategorizedSound(mmoPlayer.getPlayer(), mmoPlayer.getPlayer().getLocation(), SoundType.SKILL_UNLOCKED, SoundCategory.MASTER);
@ -184,7 +194,7 @@ public class NotificationManager {
* Admins are currently players with either Operator status or Admin Chat permission
* @param msg message fetched from locale
*/
private static void sendAdminNotification(String msg) {
private static void sendAdminNotification(@NotNull String msg) {
//If its not enabled exit
if(!Config.getInstance().adminNotifications())
return;
@ -206,7 +216,7 @@ public class NotificationManager {
* @param commandSender target command sender
* @param msg message fetched from locale
*/
private static void sendAdminCommandConfirmation(CommandSender commandSender, String msg) {
private static void sendAdminCommandConfirmation(@NotNull CommandSender commandSender, @NotNull String msg) {
commandSender.sendMessage(LocaleLoader.getString("Notifications.Admin.Format.Self", msg));
}
@ -215,7 +225,7 @@ public class NotificationManager {
* @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(@NotNull CommandSender commandSender, @NotNull SensitiveCommandType sensitiveCommandType, String... args) {
/*
* Determine the 'identity' of the one who executed the command to pass as a parameters
*/
@ -247,7 +257,7 @@ public class NotificationManager {
* @param existingArray the existing array to be copied to the new array at position [0]+1 relative to their original index
* @return the new array combining itemToAdd at the start and existing array elements following while retaining their order
*/
public static String[] addItemToFirstPositionOfArray(String itemToAdd, String... existingArray) {
public static @NotNull String[] addItemToFirstPositionOfArray(@NotNull String itemToAdd, @NotNull String... existingArray) {
String[] newArray = new String[existingArray.length + 1];
newArray[0] = itemToAdd;

View File

@ -1,6 +1,7 @@
package com.gmail.nossr50.util.random;
import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
@ -327,7 +328,7 @@ public class RandomChanceUtil
return displayValues;
}
public static String[] calculateAbilityDisplayValuesStatic(Player player, PrimarySkillType primarySkillType, double chance) {
public static String[] calculateAbilityDisplayValuesStatic(@NotNull McMMOPlayer mmoPlayer, PrimarySkillType primarySkillType, double chance) {
RandomChanceStatic rcs = new RandomChanceStatic(chance, false);
double successChance = getRandomChanceExecutionChance(rcs);
@ -336,7 +337,7 @@ public class RandomChanceUtil
String[] displayValues = new String[2];
boolean isLucky = Permissions.lucky(player, primarySkillType);
boolean isLucky = Permissions.lucky(mmoPlayer.getPlayer(), primarySkillType);
displayValues[0] = percent.format(Math.min(successChance, 100.0D) / 100.0D);
displayValues[1] = isLucky ? percent.format(Math.min(successChance_lucky, 100.0D) / 100.0D) : null;

View File

@ -4,6 +4,7 @@ import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.RankConfig;
import com.gmail.nossr50.datatypes.json.McMMOUrl;
import com.gmail.nossr50.datatypes.json.McMMOWebLinks;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
@ -38,31 +39,31 @@ 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
*
* @return
*/
public static TextComponent getNotificationMultipleValues(String localeKey, String... values)
public static TextComponent getNotificationMultipleValues(@NotNull 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(@NotNull String localeKey)
{
return getNotificationTextComponent(LocaleLoader.getString(localeKey));
}
public static Component getNotificationLevelUpTextComponent(PrimarySkillType skill, int levelsGained, int currentLevel)
public static Component getNotificationLevelUpTextComponent(@NotNull 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(@NotNull String text)
{
//textComponent.setColor(getNotificationColor(notificationType));
return Component.text(text);
}
public static void sendPlayerSubSkillWikiLink(Player player, String subskillformatted)
public static void sendPlayerSubSkillWikiLink(McMMOPlayer mmoPlayer, String subskillformatted)
{
if(!Config.getInstance().getUrlLinksEnabled())
return;
@ -78,10 +79,10 @@ public class TextComponentFactory {
wikiLinkComponent.hoverEvent(HoverEvent.showText(componentBuilder.build()));
mcMMO.getAudiences().player(player).sendMessage(Identity.nil(), wikiLinkComponent, MessageType.SYSTEM);
mcMMO.getAudiences().player(mmoPlayer.getPlayer()).sendMessage(Identity.nil(), wikiLinkComponent, MessageType.SYSTEM);
}
public static void sendPlayerUrlHeader(Player player) {
public static void sendPlayerUrlHeader(@NotNull McMMOPlayer mmoPlayer) {
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"));
@ -89,7 +90,7 @@ public class TextComponentFactory {
TextComponent emptySpace = Component.space();
mcMMO.getAudiences().player(player).sendMessage(Identity.nil(),TextComponent.ofChildren(
mcMMO.getAudiences().player(mmoPlayer.getPlayer()).sendMessage(Identity.nil(),TextComponent.ofChildren(
prefix,
getWebLinkTextComponent(McMMOWebLinks.WEBSITE),
emptySpace,
@ -135,7 +136,7 @@ public class TextComponentFactory {
}
}
private static Component getWebLinkTextComponent(McMMOWebLinks webLinks)
private static Component getWebLinkTextComponent(@NotNull McMMOWebLinks webLinks)
{
TextComponent.Builder webTextComponent;
@ -181,7 +182,7 @@ public class TextComponentFactory {
return webTextComponent.build();
}
private static Component getUrlHoverEvent(McMMOWebLinks webLinks)
private static Component getUrlHoverEvent(@NotNull McMMOWebLinks webLinks)
{
TextComponent.Builder componentBuilder = Component.text().content(webLinks.getNiceTitle());
@ -230,7 +231,7 @@ public class TextComponentFactory {
return componentBuilder.build();
}
private static void addUrlHeaderHover(McMMOWebLinks webLinks, TextComponent.Builder componentBuilder) {
private static void addUrlHeaderHover(@NotNull McMMOWebLinks webLinks, @NotNull TextComponent.Builder componentBuilder) {
componentBuilder.append(Component.newline());
componentBuilder.append(Component.text(webLinks.getUrl(), NamedTextColor.GRAY, TextDecoration.ITALIC));
}
@ -240,17 +241,17 @@ public class TextComponentFactory {
return ClickEvent.openUrl(url);
}
private static Component getSubSkillTextComponent(Player player, SubSkillType subSkillType)
private static Component getSubSkillTextComponent(@NotNull McMMOPlayer mmoPlayer, @NotNull SubSkillType subSkillType)
{
//Get skill name
String skillName = subSkillType.getLocaleName();
boolean skillUnlocked = RankUtils.hasUnlockedSubskill(player, subSkillType);
boolean skillUnlocked = RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType);
TextComponent.Builder textComponent = initNewSkillTextComponent(player, skillName, subSkillType, skillUnlocked);
TextComponent.Builder textComponent = initNewSkillTextComponent(mmoPlayer, skillName, subSkillType, skillUnlocked);
//Hover Event
TextUtils.addNewHoverComponentToTextComponent(textComponent, getSubSkillHoverComponent(player, subSkillType));
TextUtils.addNewHoverComponentToTextComponent(textComponent, getSubSkillHoverComponent(mmoPlayer, subSkillType));
//Insertion
textComponent.insertion(skillName);
@ -258,7 +259,7 @@ public class TextComponentFactory {
return textComponent.build();
}
private static TextComponent getSubSkillTextComponent(Player player, AbstractSubSkill abstractSubSkill)
private static TextComponent getSubSkillTextComponent(@NotNull McMMOPlayer mmoPlayer, @NotNull AbstractSubSkill abstractSubSkill)
{
//String key = abstractSubSkill.getConfigKeyName();
String skillName = abstractSubSkill.getNiceName();
@ -266,12 +267,12 @@ public class TextComponentFactory {
//Setup Text Component
SubSkillType subSkillType = abstractSubSkill.getSubSkillType();
boolean skillUnlocked = RankUtils.hasUnlockedSubskill(player, subSkillType);
boolean skillUnlocked = RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType);
TextComponent.Builder textComponent = initNewSkillTextComponent(player, skillName, subSkillType, skillUnlocked);
TextComponent.Builder textComponent = initNewSkillTextComponent(mmoPlayer, skillName, subSkillType, skillUnlocked);
//Hover Event
TextUtils.addNewHoverComponentToTextComponent(textComponent, getSubSkillHoverComponent(player, abstractSubSkill));
TextUtils.addNewHoverComponentToTextComponent(textComponent, getSubSkillHoverComponent(mmoPlayer, abstractSubSkill));
//Insertion
textComponent.insertion(skillName);
@ -279,10 +280,10 @@ public class TextComponentFactory {
return textComponent.build();
}
private static TextComponent.Builder initNewSkillTextComponent(Player player, String skillName, SubSkillType subSkillType, boolean skillUnlocked) {
private static TextComponent.Builder initNewSkillTextComponent(@NotNull McMMOPlayer mmoPlayer, @NotNull String skillName, @NotNull SubSkillType subSkillType, boolean skillUnlocked) {
TextComponent.Builder textComponent;
if (skillUnlocked) {
if (RankUtils.getHighestRank(subSkillType) == RankUtils.getRank(player, subSkillType) && subSkillType.getNumRanks() > 1)
if (RankUtils.getHighestRank(subSkillType) == RankUtils.getRank(mmoPlayer, subSkillType) && subSkillType.getNumRanks() > 1)
textComponent = Component.text().content(LocaleLoader.getString("JSON.Hover.MaxRankSkillName", skillName));
else
textComponent = Component.text().content(LocaleLoader.getString("JSON.Hover.SkillName", skillName));
@ -298,35 +299,29 @@ public class TextComponentFactory {
return textComponent;
}
private static Component getSubSkillHoverComponent(Player player, AbstractSubSkill abstractSubSkill)
private static Component getSubSkillHoverComponent(@NotNull McMMOPlayer mmoPlayer, @NotNull AbstractSubSkill abstractSubSkill)
{
return getSubSkillHoverEventJSON(abstractSubSkill, player);
return getSubSkillHoverEventJSON(abstractSubSkill, mmoPlayer);
}
private static Component getSubSkillHoverComponent(Player player, SubSkillType subSkillType)
private static Component getSubSkillHoverComponent(@NotNull McMMOPlayer mmoPlayer, SubSkillType subSkillType)
{
return getSubSkillHoverEventJSON(subSkillType, player);
return getSubSkillHoverEventJSON(subSkillType, mmoPlayer);
}
/**
* 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 mmoPlayer 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(@NotNull AbstractSubSkill abstractSubSkill, @NotNull McMMOPlayer mmoPlayer)
{
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;
@ -334,9 +329,9 @@ public class TextComponentFactory {
SubSkillType subSkillType = abstractSubSkill.getSubSkillType();
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, abstractSubSkill));
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(mmoPlayer, skillName, subSkillType, RankUtils.hasUnlockedSubskill(mmoPlayer, abstractSubSkill));
if(!RankUtils.hasUnlockedSubskill(player, abstractSubSkill))
if(!RankUtils.hasUnlockedSubskill(mmoPlayer, abstractSubSkill))
{
//Skill is not unlocked yet
addLocked(abstractSubSkill, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
@ -344,7 +339,7 @@ public class TextComponentFactory {
addSubSkillTypeToHoverEventJSON(abstractSubSkill, componentBuilder);
//RANK
int curRank = RankUtils.getRank(player, abstractSubSkill);
int curRank = RankUtils.getRank(mmoPlayer, abstractSubSkill);
int nextRank = 0;
if(curRank < abstractSubSkill.getNumRanks() && abstractSubSkill.getNumRanks() > 0)
@ -352,7 +347,7 @@ public class TextComponentFactory {
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(mmoPlayer, abstractSubSkill), nextRank);
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.DescriptionHeader")));
componentBuilder.append(Component.newline()).append(Component.text(abstractSubSkill.getDescription())).append(Component.newline());
@ -362,16 +357,16 @@ public class TextComponentFactory {
componentBuilder.append(Component.newline());
//Finally, add details to the tooltip
abstractSubSkill.addStats(componentBuilder, player);
abstractSubSkill.addStats(componentBuilder, mmoPlayer);
}
return componentBuilder.build();
}
private static TextComponent.Builder setupSkillComponentNameStyle(Player player, String skillName, SubSkillType subSkillType, boolean skillUnlocked) {
private static TextComponent.Builder setupSkillComponentNameStyle(@NotNull McMMOPlayer mmoPlayer, @NotNull String skillName, @NotNull SubSkillType subSkillType, boolean skillUnlocked) {
TextComponent.Builder componentBuilder;
if (skillUnlocked) {
if (RankUtils.getHighestRank(subSkillType) == RankUtils.getRank(player, subSkillType) && subSkillType.getNumRanks() > 1)
if (RankUtils.getHighestRank(subSkillType) == RankUtils.getRank(mmoPlayer, subSkillType) && subSkillType.getNumRanks() > 1)
componentBuilder = getNewComponentBuilder(LocaleLoader.getString("JSON.Hover.MaxRankSkillName", skillName));
else
componentBuilder = getNewComponentBuilder(LocaleLoader.getString("JSON.Hover.SkillName", skillName));
@ -381,13 +376,13 @@ public class TextComponentFactory {
return componentBuilder;
}
private static TextComponent.Builder getNewComponentBuilder(String skillName) {
private static TextComponent.Builder getNewComponentBuilder(@NotNull String skillName) {
TextComponent.Builder componentBuilder = Component.text().content(skillName);
componentBuilder.append(Component.newline());
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(@NotNull 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());
@ -395,32 +390,34 @@ public class TextComponentFactory {
//Next Rank: x
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);*/
}
}
private static void addLocked(SubSkillType subSkillType, TextColor ccLocked, TextColor ccLevelRequirement, TextColor ccLevelRequired, TextComponent.Builder componentBuilder) {
private static void addLocked(@NotNull SubSkillType subSkillType, @NotNull TextColor ccLocked, @NotNull TextColor ccLevelRequirement,
@NotNull TextColor ccLevelRequired, @NotNull TextComponent.Builder componentBuilder) {
addLocked(ccLocked, ccLevelRequirement, componentBuilder);
componentBuilder.append(Component.text(String.valueOf(RankConfig.getInstance().getSubSkillUnlockLevel(subSkillType, 1)), ccLevelRequired));
//componentBuilder.append(Component.newline());
}
private static void addLocked(AbstractSubSkill abstractSubSkill, TextColor ccLocked, TextColor ccLevelRequirement, TextColor ccLevelRequired, TextComponent.Builder componentBuilder) {
private static void addLocked(@NotNull AbstractSubSkill abstractSubSkill, @NotNull TextColor ccLocked,
@NotNull TextColor ccLevelRequirement, @NotNull TextColor ccLevelRequired,
@NotNull TextComponent.Builder componentBuilder) {
addLocked(ccLocked, ccLevelRequirement, componentBuilder);
componentBuilder.append(Component.text(String.valueOf(RankConfig.getInstance().getSubSkillUnlockLevel(abstractSubSkill, 1)), ccLevelRequired));
//componentBuilder.append(Component.newline());
}
private static void addLocked(TextColor ccLocked, TextColor ccLevelRequirement, TextComponent.Builder componentBuilder) {
private static void addLocked(@NotNull TextColor ccLocked,
@NotNull TextColor ccLevelRequirement,
@NotNull TextComponent.Builder componentBuilder) {
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.Locked"), ccLocked, TextDecoration.BOLD));
componentBuilder.append(Component.newline()).append(Component.newline());
componentBuilder.append(Component.text(LocaleLoader.getString("JSON.LevelRequirement") + ": ", ccLevelRequirement));
}
@Deprecated
private static Component getSubSkillHoverEventJSON(SubSkillType subSkillType, Player player)
private static @NotNull Component getSubSkillHoverEventJSON(@NotNull SubSkillType subSkillType, @NotNull McMMOPlayer mmoPlayer)
{
String skillName = subSkillType.getLocaleName();
@ -438,9 +435,9 @@ public class TextComponentFactory {
TextColor ccLevelRequired = NamedTextColor.RED;
//SubSkillType Name
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(player, skillName, subSkillType, RankUtils.hasUnlockedSubskill(player, subSkillType));
TextComponent.Builder componentBuilder = setupSkillComponentNameStyle(mmoPlayer, skillName, subSkillType, RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType));
if(!RankUtils.hasUnlockedSubskill(player, subSkillType))
if(!RankUtils.hasUnlockedSubskill(mmoPlayer, subSkillType))
{
//Skill is not unlocked yet
addLocked(subSkillType, ccLocked, ccLevelRequirement, ccLevelRequired, componentBuilder);
@ -450,7 +447,7 @@ public class TextComponentFactory {
//RANK
if(subSkillType.getNumRanks() > 0)
{
int curRank = RankUtils.getRank(player, subSkillType);
int curRank = RankUtils.getRank(mmoPlayer, subSkillType);
int nextRank = 0;
if(curRank < subSkillType.getNumRanks())
@ -458,7 +455,7 @@ public class TextComponentFactory {
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(mmoPlayer, subSkillType), nextRank);
}
@ -473,7 +470,7 @@ public class TextComponentFactory {
return componentBuilder.build();
}
private static void addSubSkillTypeToHoverEventJSON(AbstractSubSkill abstractSubSkill, TextComponent.Builder componentBuilder)
private static void addSubSkillTypeToHoverEventJSON(@NotNull AbstractSubSkill abstractSubSkill, @NotNull TextComponent.Builder componentBuilder)
{
if(abstractSubSkill.isSuperAbility())
{
@ -488,7 +485,7 @@ public class TextComponentFactory {
componentBuilder.append(Component.newline());
}
public static void getSubSkillTextComponents(Player player, List<Component> textComponents, PrimarySkillType parentSkill) {
public static void getSubSkillTextComponents(@NotNull McMMOPlayer mmoPlayer, @NotNull List<Component> textComponents, @NotNull PrimarySkillType parentSkill) {
for(SubSkillType subSkillType : SubSkillType.values())
{
if(subSkillType.getParentSkill() == parentSkill)
@ -498,10 +495,10 @@ public class TextComponentFactory {
if(subSkillType == SubSkillType.FISHING_MASTER_ANGLER && mcMMO.getCompatibilityManager().getMasterAnglerCompatibilityLayer() == null)
continue;
if(Permissions.isSubSkillEnabled(player, subSkillType))
if(Permissions.isSubSkillEnabled(mmoPlayer, subSkillType))
{
if(!InteractionManager.hasSubSkill(subSkillType))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, subSkillType));
textComponents.add(TextComponentFactory.getSubSkillTextComponent(mmoPlayer, subSkillType));
}
}
}
@ -511,16 +508,16 @@ public class TextComponentFactory {
{
if(abstractSubSkill.getPrimarySkill() == parentSkill)
{
if(Permissions.isSubSkillEnabled(player, abstractSubSkill))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(player, abstractSubSkill));
if(Permissions.isSubSkillEnabled(mmoPlayer, abstractSubSkill))
textComponents.add(TextComponentFactory.getSubSkillTextComponent(mmoPlayer, abstractSubSkill));
}
}
}
public static TextComponent getSubSkillUnlockedNotificationComponents(Player player, SubSkillType subSkillType)
public static @NotNull TextComponent getSubSkillUnlockedNotificationComponents(@NotNull McMMOPlayer mmoPlayer, @NotNull 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)));
TextComponent.Builder unlockMessage = Component.text().content(LocaleLoader.getString("JSON.SkillUnlockMessage", subSkillType.getLocaleName(), RankUtils.getRank(mmoPlayer, subSkillType)));
unlockMessage.hoverEvent(HoverEvent.showText(getSubSkillHoverComponent(mmoPlayer, subSkillType)));
unlockMessage.clickEvent(ClickEvent.runCommand("/"+subSkillType.getParentSkill().toString().toLowerCase(Locale.ENGLISH)));
return unlockMessage.build();
}