skill realloc points

This commit is contained in:
Ka0rX 2022-08-07 23:43:17 +02:00
parent a61b9bc634
commit 5e6b504a35
12 changed files with 202 additions and 114 deletions

View File

@ -13,7 +13,8 @@ public enum SoundEvent {
SELECT_CLASS,
LEVEL_ATTRIBUTE,
RESET_ATTRIBUTES,
NOT_ENOUGH_POINTS,
RESET_SKILLS
,NOT_ENOUGH_POINTS,
CANCEL_QUEST,
START_QUEST,
CLOSE_LOOT_CHEST;

View File

@ -66,7 +66,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
*/
@Nullable
private PlayerClass profess;
private int level, classPoints, skillPoints, attributePoints, attributeReallocationPoints;// skillReallocationPoints,
private int level, classPoints, skillPoints, attributePoints, attributeReallocationPoints, skillReallocationPoints;
private double experience;
private double mana, stamina, stellium;
private Guild guild;
@ -238,6 +238,19 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
return skillPoints;
}
public void giveSkillReallocationPoints(int value) {
skillReallocationPoints+=value;
}
public int countSkillPointsWhenReallocate() {
int sum = 0;
for(ClassSkill skill:getProfess().getSkills()) {
//0 if the skill is level 1(just unlocked) or 0 locked.
sum+=Math.max(0,getSkillLevel(skill.getSkill())-1);
}
return sum;
}
@Override
public int getClaims(ExperienceObject object, ExperienceTable table, ExperienceItem item) {
@ -350,6 +363,14 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
attributeReallocationPoints = Math.max(0, value);
}
public void setSkillReallocationPoints(int value) {
skillReallocationPoints = Math.max(0, value);
}
public int getSkillReallocationPoints() {
return skillReallocationPoints;
}
public void setSkillPoints(int value) {
skillPoints = Math.max(0, value);
}
@ -851,7 +872,6 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
Validate.notNull(skill, "Skill cannot be null");
if (boundSkills.size() < getProfess().getMaxBoundSkills())
boundSkills.add(skill);
else
@ -875,7 +895,7 @@ public class PlayerData extends OfflinePlayerData implements Closable, Experienc
* checks if they could potentially upgrade to one of these
*
* @return If the player can change its current class to
* a subclass
* a subclass
*/
public boolean canChooseSubclass() {
for (Subclass subclass : getProfess().getSubclasses())

View File

@ -25,6 +25,7 @@ public class AdminCommandTreeNode extends CommandTreeNode {
addChild(new PointsCommandTreeNode("class", this, PlayerData::setClassPoints, PlayerData::giveClassPoints, PlayerData::getClassPoints));
addChild(new PointsCommandTreeNode("attribute", this, PlayerData::setAttributePoints, PlayerData::giveAttributePoints, PlayerData::getAttributePoints));
addChild(new PointsCommandTreeNode("attr-realloc", this, PlayerData::setAttributeReallocationPoints, PlayerData::giveAttributeReallocationPoints, PlayerData::getAttributeReallocationPoints));
addChild(new PointsCommandTreeNode("skill-realloc",this,PlayerData::setSkillReallocationPoints,PlayerData::giveSkillReallocationPoints,PlayerData::getSkillReallocationPoints));
addChild(new SkillCommandTreeNode(this));
for (PlayerResource res : PlayerResource.values())
addChild(new ResourceCommandTreeNode(res.name().toLowerCase(), this, res));

View File

@ -4,6 +4,7 @@ import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.api.item.ItemTag;
import io.lumine.mythic.lib.api.item.NBTItem;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
@ -14,6 +15,7 @@ import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.skill.ClassSkill;
import net.Indyuce.mmocore.skill.RegisteredSkill;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
@ -46,6 +48,23 @@ public class SkillList extends EditableInventory {
if (function.equals("upgrade"))
return new UpgradeItem(config);
if (function.equals("reallocation")) {
return new InventoryItem(config) {
@Override
public Placeholders getPlaceholders(GeneratedInventory inv, int n) {
Placeholders holders = new Placeholders();
holders.register("skill_points", inv.getPlayerData().getSkillPoints());
holders.register("points", inv.getPlayerData().getSkillReallocationPoints());
holders.register("total", inv.getPlayerData().countSkillPointsWhenReallocate());
return holders;
}
};
}
if (function.equals("slot"))
return new InventoryItem<SkillViewerInventory>(config) {
private final String none = MythicLib.plugin.parseColors(config.getString("no-skill"));
@ -308,6 +327,35 @@ public class SkillList extends EditableInventory {
return;
}
if(item.getFunction().equals("reallocation")) {
int spent= getPlayerData().countSkillPointsWhenReallocate();
if (spent < 1) {
MMOCore.plugin.configManager.getSimpleMessage("no-skill-points-spent").send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return;
}
if (playerData.getSkillReallocationPoints() < 1) {
MMOCore.plugin.configManager.getSimpleMessage("not-skill-reallocation-point").send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return;
}
for(ClassSkill skill:playerData.getProfess().getSkills()) {
playerData.setSkillLevel(skill.getSkill(), 1);
}
playerData.giveSkillPoints(spent);
playerData.setSkillReallocationPoints(playerData.getSkillReallocationPoints()-1);
MMOCore.plugin.configManager.getSimpleMessage("skill-points-reallocated", "points", "" + playerData.getSkillPoints()).send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_SKILLS).playTo(getPlayer());
open();
}
if (item.getFunction().equals("previous")) {
player.playSound(player.getLocation(), Sound.UI_BUTTON_CLICK, 1, 2);
page--;

View File

@ -16,7 +16,7 @@ import java.util.*;
public abstract class PlayerDataManager {
private final static Map<UUID, PlayerData> data = Collections.synchronizedMap(new HashMap<>());
private DefaultPlayerData defaultData = new DefaultPlayerData(1, 0, 0, 0, 0);
private DefaultPlayerData defaultData = new DefaultPlayerData(1, 0, 0, 0, 0,0);
public PlayerData get(OfflinePlayer player) {
return get(player.getUniqueId());
@ -134,7 +134,7 @@ public abstract class PlayerDataManager {
public abstract void saveData(PlayerData data);
public class DefaultPlayerData {
private final int level, classPoints, skillPoints, attributePoints, attrReallocPoints;
private final int level, classPoints, skillPoints, attributePoints, attrReallocPoints,skillReallocPoints;
public DefaultPlayerData(ConfigurationSection config) {
level = config.getInt("level", 1);
@ -142,14 +142,17 @@ public abstract class PlayerDataManager {
skillPoints = config.getInt("skill-points");
attributePoints = config.getInt("attribute-points");
attrReallocPoints = config.getInt("attribute-realloc-points");
skillReallocPoints=config.getInt("skill-realloc-points",0);
}
public DefaultPlayerData(int level, int classPoints, int skillPoints, int attributePoints, int attrReallocPoints) {
public DefaultPlayerData(int level, int classPoints, int skillPoints, int attributePoints, int attrReallocPoints,int skillReallocPoints) {
this.level = level;
this.classPoints = classPoints;
this.skillPoints = skillPoints;
this.attributePoints = attributePoints;
this.attrReallocPoints = attrReallocPoints;
this.skillReallocPoints=skillReallocPoints;
}
public int getLevel() {
@ -172,6 +175,10 @@ public abstract class PlayerDataManager {
return attributePoints;
}
public int getSkillReallocPoints() {
return skillReallocPoints;
}
public void apply(PlayerData player) {
player.setLevel(level);
player.setClassPoints(classPoints);

View File

@ -60,6 +60,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
data.setClassPoints(result.getInt("class_points"));
data.setSkillPoints(result.getInt("skill_points"));
data.setSkillReallocationPoints(result.getInt("skill_reallocation_points"));
data.setAttributePoints(result.getInt("attribute_points"));
data.setAttributeReallocationPoints(result.getInt("attribute_realloc_points"));
data.setLevel(result.getInt("level"));
@ -126,6 +127,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
data.setLevel(getDefaultData().getLevel());
data.setClassPoints(getDefaultData().getClassPoints());
data.setSkillPoints(getDefaultData().getSkillPoints());
data.setSkillReallocationPoints(getDefaultData().getSkillReallocPoints());
data.setAttributePoints(getDefaultData().getAttributePoints());
data.setAttributeReallocationPoints(getDefaultData().getAttrReallocPoints());
data.setExperience(0);
@ -155,6 +157,7 @@ public class MySQLPlayerDataManager extends PlayerDataManager {
sql.updateData("class_points", data.getClassPoints());
sql.updateData("skill_points", data.getSkillPoints());
sql.updateData("skill_reallocation_points",data.getSkillReallocationPoints());
sql.updateData("attribute_points", data.getAttributePoints());
sql.updateData("attribute_realloc_points", data.getAttributeReallocationPoints());
sql.updateData("level", data.getLevel());

View File

@ -30,6 +30,7 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
data.setClassPoints(config.getInt("class-points", getDefaultData().getClassPoints()));
data.setSkillPoints(config.getInt("skill-points", getDefaultData().getSkillPoints()));
data.setSkillReallocationPoints(config.getInt("skill-reallocation-points",getDefaultData().getSkillReallocPoints()));
data.setAttributePoints(config.getInt("attribute-points", getDefaultData().getAttributePoints()));
data.setAttributeReallocationPoints(config.getInt("attribute-realloc-points", getDefaultData().getAttrReallocPoints()));
data.setLevel(config.getInt("level", getDefaultData().getLevel()));
@ -90,6 +91,7 @@ public class YAMLPlayerDataManager extends PlayerDataManager {
config.set("class-points", data.getClassPoints());
config.set("skill-points", data.getSkillPoints());
config.set("skill-reallocation-points",data.getSkillReallocationPoints());
config.set("attribute-points", data.getAttributePoints());
// config.set("skill-realloc-points", skillReallocationPoints);
config.set("attribute-realloc-points", data.getAttributeReallocationPoints());

View File

@ -31,9 +31,11 @@ default-playerdata:
level: 1
class-points: 0
skill-points: 0
skill-realloc-points: 0
attribute-points: 0
attribute-realloc-points: 0
# The list of all conditions which must be met for the
# BLOCK REGEN and BLOCK RESTRICTIONS to apply. Set to
# 'custom-mine-conditions: []' to disable custom mining entirely.

View File

@ -2,6 +2,7 @@
# GUI display name
name: Player Attributes
# Number of slots in your inventory. Must be
# between 9 and 54 and must be a multiple of 9.
slots: 27
@ -11,70 +12,61 @@ items:
slots: [26]
function: reallocation
item: CAULDRON
name: '&aReallocate Skill Points'
name: '&aAttribute Points'
lore:
- ''
- 'You have spent a total of &6{total}&7 skill points.'
- '&7Right click to reallocate them.'
- ''
- '&eCosts 1 attribute reallocation point.'
- '&e◆ Attribute Reallocation Points: &6{points}'
- ''
- 'You have spent a total of &6{total}&7 attribute points.'
- '&7Right click to reallocate them.'
- ''
- '&eCosts 1 attribute reallocation point.'
- '&e◆ Attribute Reallocation Points: &6{points}'
str:
slots: [11]
function: attribute_strength
shift-cost: 10
name: '&a{name}'
item: GOLDEN_APPLE
lore: # {buffs} returns amount of buffs
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_weapon_damage}% Weapon Damage (&a+{total_weapon_damage}%&7)'
- '&7 +{buff_max_health}% Max Health (&a+{total_max_health}%&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&eShift-Click to level up for {shift_points} attribute points.'
- ''
- '&e◆ Current Attribute Points: {attribute_points}'
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_weapon_damage}% Weapon Damage (&a+{total_weapon_damage}%&7)'
- '&7 +{buff_max_health} Max Health (&a+{total_max_health}&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&e◆ Current Attribute Points: {attribute_points}'
dex:
slots: [13]
function: attribute_dexterity
shift-cost: 10
name: '&a{name}'
item: LEATHER_BOOTS
hide-flags: true
lore:
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_physical_damage}% Physical Damage (&a+{total_physical_damage}%&7)'
- '&7 +{buff_projectile_damage}% Projectile Damage (&a+{total_projectile_damage}%&7)'
- '&7 +{buff_attack_speed}% Attack Speed (&a+{total_attack_speed}&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&eShift-Click to level up for {shift_points} attribute points.'
- ''
- '&e◆ Current Attribute Points: {attribute_points}'
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_physical_damage}% Physical Damage (&a+{total_physical_damage}%&7)'
- '&7 +{buff_projectile_damage}% Projectile Damage (&a+{total_projectile_damage}%&7)'
- '&7 +{buff_attack_speed} Attack Speed (&a+{total_attack_speed}&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&e◆ Current Attribute Points: {attribute_points}'
int:
slots: [15]
function: attribute_intelligence
shift-cost: 10
name: '&a{name}'
item: BOOK
lore:
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_magic_damage}% Magic Damage (&a+{total_magic_damage}%&7)'
- '&7 +{buff_cooldown_reduction}% Cooldown Reduction (&a+{total_cooldown_reduction}%&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&eShift-Click to level up for {shift_points} attribute points.'
- ''
- '&e◆ Current Attribute Points: {attribute_points}'
- ''
- '&7Points Spent: &6{spent}&7/&6{max}'
- '&7Current {name}: &6&l{current}'
- ''
- '&8When Leveled Up:'
- '&7 +{buff_magic_damage}% Magic Damage (&a+{total_magic_damage}%&7)'
- '&7 +{buff_cooldown_reduction}% Cooldown Reduction (&a+{total_cooldown_reduction}%&7)'
- ''
- '&eClick to level up for 1 attribute point.'
- '&e◆ Current Attribute Points: {attribute_points}'

View File

@ -33,6 +33,18 @@ items:
name: '&aPrevious'
lore: { }
reallocate:
slots: [26]
function: reallocation
item: CAULDRON
name: '&aReallocate Skill Points'
lore:
- ''
- 'You have spent a total of &6{total}&7 skill points.'
- '&7Right click to reallocate them.'
- ''
- '&eCosts 1 skill reallocation point.'
- '&e◆ Skill Reallocation Points: &6{points}'
#switch:
#
@ -87,11 +99,9 @@ items:
upgrade:
slots: [ 15 ]
function: upgrade
shift-cost: 10
item: GREEN_STAINED_GLASS_PANE
name: '&a&lUPGRADE {skill_caps}'
lore:
- '&7Costs 1 skill point.'
- '&7Shift-Click to spend {shift_points} points'
- ''
- '&eCurrent Skill Points: {skill_points}'

View File

@ -1,30 +1,29 @@
# Level & Experience
level-up:
- ''
- '&eCongratulations, you reached level &6{level}&e!'
- '&eUse &6/p &eto see your new statistics!'
- ''
- ''
- '&eCongratulations, you reached level &6{level}&e!'
- '&eUse &6/p &eto see your new statistics!'
- ''
profession-level-up:
- '&eYou are now level &6{level}&e in &6{profession}&e!'
- '&eYou are now level &6{level}&e in &6{profession}&e!'
exp-notification: '%&f{profession} &e{progress} &e{ratio}%'
exp-hologram: '&e+{exp} EXP!'
class-select: '&eYou are now a &6{class}&e!'
already-on-class: '&cYou are already a {class}.'
death-exp-loss:
- ''
- '&4You died and lost {loss} experience.'
- ''
- ''
- '&4You died and lost {loss} experience.'
- ''
# General
booster-main:
- '&e'
- '&eA &6{multiplier}x&e EXP multiplier is now active!'
- '&e'
- '&e'
- '&eA &6{multiplier}x&e EXP multiplier is now active!'
- '&e'
booster-skill:
- '&e'
- '&eA &6{multiplier}x&e &6{profession} &eEXP multiplier is now active!'
- '&e'
- '&e'
- '&eA &6{multiplier}x&e &6{profession} &eEXP multiplier is now active!'
- '&e'
booster-expired: '&cExpired!'
# Fishing Profession
@ -34,32 +33,32 @@ fish-out-water-crit: '&aCritical Fish!'
# Player Input
player-input:
anvil:
friend-request: 'Friend name..'
party-invite: 'Player name..'
guild-invite: 'Player name..'
guild-creation-tag: 'Guild tag..'
guild-creation-name: 'Guild name..'
chat:
friend-request: '&eWrite in the chat the player name.'
party-invite: '&eWrite in the chat the player you want to invite.'
guild-invite: '&eWrite in the chat the player you want to invite.'
guild-creation-tag: '&eWrite in the chat the TAG of the Guild you want to create.'
guild-creation-name: '&eWrite in the chat the name of the Guild you want to create.'
cancel: '&eWrite &c''cancel'' &eto cancel.'
anvil:
friend-request: 'Friend name..'
party-invite: 'Player name..'
guild-invite: 'Player name..'
guild-creation-tag: 'Guild tag..'
guild-creation-name: 'Guild name..'
chat:
friend-request: '&eWrite in the chat the player name.'
party-invite: '&eWrite in the chat the player you want to invite.'
guild-invite: '&eWrite in the chat the player you want to invite.'
guild-creation-tag: '&eWrite in the chat the TAG of the Guild you want to create.'
guild-creation-name: '&eWrite in the chat the name of the Guild you want to create.'
cancel: '&eWrite &c''cancel'' &eto cancel.'
# Spell Casting
casting:
action-bar:
ready: '&6[{index}] &a&l{skill}'
on-cooldown: '&6[{index}] &c&l{skill} &6(&c{cooldown}&6)'
no-mana: '&6[{index}] &9&l{skill}'
no-stamina: '&6[{index}] &9&l{skill}'
split: '&7 &7 - &7 '
no-longer: '%&cYou cancelled skill casting.'
no-mana: '&cYou do not have enough {mana}!'
no-stamina: '&cYou do not have enough stamina!'
on-cooldown: '&cThis skill is on cooldown.'
action-bar:
ready: '&6[{index}] &a&l{skill}'
on-cooldown: '&6[{index}] &c&l{skill} &6(&c{cooldown}&6)'
no-mana: '&6[{index}] &9&l{skill}'
no-stamina: '&6[{index}] &9&l{skill}'
split: '&7 &7 - &7 '
no-longer: '%&cYou cancelled skill casting.'
no-mana: '&cYou do not have enough {mana}!'
no-stamina: '&cYou do not have enough stamina!'
on-cooldown: '&cThis skill is on cooldown.'
# Combat Log
now-in-combat: '%&cYou are now in combat!'
@ -98,20 +97,20 @@ friend-request-cooldown: '&cPlease wait {cooldown}.'
cant-request-to-yourself: '&cYou can''t send a request to yourself.'
already-friends: '&cYou are already friends with {player}.'
friend-request:
- '{"text":""}'
- '{"text":"&6{player} &ejust sent you a friend request!"}'
- '[{"text":" ","hoverEvent":{}},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/friends accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r ","hoverEvent":{}},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/friends deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
- '{"text":""}'
- '{"text":"&6{player} &ejust sent you a friend request!"}'
- '[{"text":" ","hoverEvent":{}},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/friends accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r ","hoverEvent":{}},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/friends deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
# Parties
party-chat: '&5[Party] {player}: {message}'
sent-party-invite: '&eYou sent a party invite to &6{player}&e.'
already-in-party: '&c{player} is already in your party.'
party-invite:
- '{"text":""}'
- '{"text":"&6{player} &ehas invited you to their party!"}'
- '[{"text":" "},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/party accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r "},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/party deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
- '{"text":""}'
- '{"text":"&6{player} &ehas invited you to their party!"}'
- '[{"text":" "},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/party accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r "},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/party deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
party-is-full: '&cSorry, your party is full.'
party-joined: '&eYou successfully joined &6{owner}&e''s party.'
party-joined-other: '&6{player}&e joined your party!'
@ -125,10 +124,10 @@ guild-chat: '&a[{tag}] {player}: {message}'
sent-guild-invite: '&eYou sent a guild invite to &6{player}&e.'
already-in-guild: '&c{player} is already in your guild.'
guild-invite:
- '{"text":""}'
- '{"text":"&6{player} &ehas invited you to their guild!"}'
- '[{"text":" "},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/guild accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r "},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/guild deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
- '{"text":""}'
- '{"text":"&6{player} &ehas invited you to their guild!"}'
- '[{"text":" "},{"text":"&8[&a&lACCEPT&8]","clickEvent":{"action":"run_command","value":"/guild accept {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to accept!"}},{"text":"&r "},{"text":"&8[&c&lDENY&8]","clickEvent":{"action":"run_command","value":"/guild deny {uuid}"},"hoverEvent":{"action":"show_text","value":"&eClick to deny."}}]'
- '{"text":""}'
#guild-is-full: '&cSorry, your guild is full.' -Unused right now
guild-joined: '&eYou successfully joined &6{owner}&e''s guild.'
guild-joined-other: '&6{player}&e joined your guild!'
@ -136,11 +135,11 @@ transfer-guild-ownership: '&eYou were transfered the guild ownership.'
kick-from-guild: '&eYou successfully kicked &6{player}&e from the guild.'
guild-invite-cooldown: '&cPlease wait {cooldown} before inviting {player}.'
guild-creation:
failed: "&cCouldn't create guild: {reason}"
reasons:
invalid-characters: "&eInvalid character(s)!"
invalid-length: "&eThe length must be between {min} and {max}!"
already-exists: "&eThat guild tag already exists!"
failed: "&cCouldn't create guild: {reason}"
reasons:
invalid-characters: "&eInvalid character(s)!"
invalid-length: "&eThe length must be between {min} and {max}!"
already-exists: "&eThat guild tag already exists!"
# Quests
already-on-quest: '&cYou are already on a quest.'
@ -151,9 +150,9 @@ quest-cooldown: '&cYou need to wait {delay}.'
start-quest: '&eYou successfully started &6{quest}&e.'
cant-choose-new-class:
- '&cYou need one class point to perform this action.'
- '&cYou need one class point to perform this action.'
no-permission-for-class:
- "&cYou don't have the permission to choose this class."
- "&cYou don't have the permission to choose this class."
# Attributes
no-attribute-points-spent: '&cYou have not spent any attribute points.'
not-attribute-reallocation-point: '&cYou do not have 1 reallocation point.'
@ -173,3 +172,6 @@ no-skill-bound: '&cYou don''t have any skill bound to this slot.'
not-active-skill: '&cThis is not an active skill.'
skill-max-level-hit: '&cYou already hit the max level for that skill.'
no-skill-placeholder: 'No Skill Bound'
not-skill-reallocation-point: '&cYou do not have 1 skill reallocation point.'
no-skill-points-spent: '&cYou have not spent any skill points.'
skill-points-reallocated: '&eYou successfully reset your attributes. You now have &6{points} &eskill points.'

View File

@ -19,7 +19,7 @@ select-class: UI_TOAST_CHALLENGE_COMPLETE
level-attribute: ENTITY_PLAYER_LEVELUP
reset-attributes: ENTITY_PLAYER_LEVELUP
reset-skills: ENTITY_PLAYER_LEVELUP
not-enough-points: ENTITY_VILLAGER_NO
cancel-quest: ENTITY_VILLAGER_NO