diff --git a/src/main/java/net/Indyuce/mmocore/api/event/MMOCommandEvent.java b/src/main/java/net/Indyuce/mmocore/api/event/MMOCommandEvent.java new file mode 100644 index 00000000..2e6527cc --- /dev/null +++ b/src/main/java/net/Indyuce/mmocore/api/event/MMOCommandEvent.java @@ -0,0 +1,42 @@ +package net.Indyuce.mmocore.api.event; + +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; + +import net.Indyuce.mmocore.api.player.PlayerData; + +public class MMOCommandEvent extends PlayerDataEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private boolean cancelled; + + private final String command; + + public MMOCommandEvent(PlayerData player, String command) { + super(player); + + this.command = command; + } + + public String getCommand() { + return command; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean b) { + cancelled = b; + } +} diff --git a/src/main/java/net/Indyuce/mmocore/api/event/PlayerExperienceGainEvent.java b/src/main/java/net/Indyuce/mmocore/api/event/PlayerExperienceGainEvent.java index eb740b08..1d3e04cf 100644 --- a/src/main/java/net/Indyuce/mmocore/api/event/PlayerExperienceGainEvent.java +++ b/src/main/java/net/Indyuce/mmocore/api/event/PlayerExperienceGainEvent.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.event; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.Profession; import net.Indyuce.mmocore.api.player.PlayerData; @@ -11,19 +12,21 @@ public class PlayerExperienceGainEvent extends PlayerDataEvent implements Cancel // if null, this is main experience private final Profession profession; + private final EXPSource source; private int experience; private boolean cancelled; - public PlayerExperienceGainEvent(PlayerData player, int experience) { - this(player, null, experience); + public PlayerExperienceGainEvent(PlayerData player, int experience, EXPSource source) { + this(player, null, experience, source); } - public PlayerExperienceGainEvent(PlayerData player, Profession profession, int experience) { + public PlayerExperienceGainEvent(PlayerData player, Profession profession, int experience, EXPSource source) { super(player); this.profession = profession; this.experience = experience; + this.source = source; } public int getExperience() { @@ -52,6 +55,10 @@ public class PlayerExperienceGainEvent extends PlayerDataEvent implements Cancel return profession; } + public EXPSource getSource() { + return source; + } + @Override public HandlerList getHandlers() { return handlers; diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java new file mode 100644 index 00000000..a0104eb8 --- /dev/null +++ b/src/main/java/net/Indyuce/mmocore/api/experience/EXPSource.java @@ -0,0 +1,9 @@ +package net.Indyuce.mmocore.api.experience; + +public enum EXPSource { + COMMAND, + VANILLA, + QUEST, + SOURCE, + OTHER; +} diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/type/ExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/type/ExperienceSource.java index d1f44567..5c86ed5c 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/type/ExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/type/ExperienceSource.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.api.experience.source.type; import org.bukkit.Location; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.Profession; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.profess.PlayerClass; @@ -48,6 +49,6 @@ public abstract class ExperienceSource { if (hasProfession()) player.getCollectionSkills().giveExperience(profession, amount, location == null ? player.getPlayer().getLocation() : location); else - player.giveExperience(amount, location == null ? player.getPlayer().getLocation() : location); + player.giveExperience(amount, location == null ? player.getPlayer().getLocation() : location, EXPSource.SOURCE); } } diff --git a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 756a440b..db7943f6 100644 --- a/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -29,6 +29,7 @@ import net.Indyuce.mmocore.api.event.PlayerCastSkillEvent; import net.Indyuce.mmocore.api.event.PlayerExperienceGainEvent; import net.Indyuce.mmocore.api.event.PlayerLevelUpEvent; import net.Indyuce.mmocore.api.event.PlayerRegenResourceEvent; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.PlayerProfessions; import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute; import net.Indyuce.mmocore.api.player.attribute.PlayerAttributes; @@ -245,11 +246,11 @@ public class PlayerData extends OfflinePlayerData { getStats().updateStats(); } - public void giveLevels(int value) { + public void giveLevels(int value, EXPSource source) { int total = 0; while (value-- > 0) total += getProfess().getExpCurve().getExperience(getLevel() + value + 1); - giveExperience(total); + giveExperience(total, source); } public void setExperience(int value) { @@ -422,11 +423,11 @@ public class PlayerData extends OfflinePlayerData { return getProfess().getMaxLevel() > 0 && getLevel() >= getProfess().getMaxLevel(); } - public void giveExperience(int value) { - giveExperience(value, null); + public void giveExperience(int value, EXPSource source) { + giveExperience(value, null, source); } - public void giveExperience(int value, Location loc) { + public void giveExperience(int value, Location loc, EXPSource source) { if (hasReachedMaxLevel()) { setExperience(0); return; @@ -441,7 +442,7 @@ public class PlayerData extends OfflinePlayerData { value = MMOCore.plugin.boosterManager.calculateExp(null, value); value *= 1 + getStats().getStat(StatType.ADDITIONAL_EXPERIENCE) / 100; - PlayerExperienceGainEvent event = new PlayerExperienceGainEvent(this, value); + PlayerExperienceGainEvent event = new PlayerExperienceGainEvent(this, value, source); Bukkit.getPluginManager().callEvent(event); if (event.isCancelled()) return; diff --git a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ExperienceTrigger.java b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ExperienceTrigger.java index 9ca30293..fd1654ec 100644 --- a/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ExperienceTrigger.java +++ b/src/main/java/net/Indyuce/mmocore/api/quest/trigger/ExperienceTrigger.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.api.quest.trigger; import org.apache.commons.lang.Validate; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.ExperienceInfo; import net.Indyuce.mmocore.api.experience.Profession; import net.Indyuce.mmocore.api.player.PlayerData; @@ -29,7 +30,7 @@ public class ExperienceTrigger extends Trigger { @Override public void apply(PlayerData player) { if (profession == null) - player.giveExperience(amount.calculateInt()); + player.giveExperience(amount.calculateInt(), EXPSource.QUEST); else player.getCollectionSkills().giveExperience(profession, amount.calculateInt()); } diff --git a/src/main/java/net/Indyuce/mmocore/command/AttributesCommand.java b/src/main/java/net/Indyuce/mmocore/command/AttributesCommand.java index 2799e166..4c5240b0 100644 --- a/src/main/java/net/Indyuce/mmocore/command/AttributesCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/AttributesCommand.java @@ -1,11 +1,13 @@ package net.Indyuce.mmocore.command; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -24,7 +26,10 @@ public class AttributesCommand extends BukkitCommand { return true; } - InventoryManager.ATTRIBUTE_VIEW.newInventory(PlayerData.get((Player) sender)).open(); + PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "attributes"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(!event.isCancelled()) InventoryManager.ATTRIBUTE_VIEW.newInventory(data).open(); return true; } } diff --git a/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java b/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java index ec788c16..43bdd134 100644 --- a/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/ClassCommand.java @@ -7,6 +7,7 @@ import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -30,6 +31,9 @@ public class ClassCommand extends BukkitCommand { } PlayerData data = PlayerData.get(player); + MMOCommandEvent event = new MMOCommandEvent(data, "class"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(event.isCancelled()) return true; if (data.getProfess().getSubclasses().stream().filter(sub -> sub.getLevel() <= data.getLevel()).count() > 0) InventoryManager.SUBCLASS_SELECT.newInventory(data).open(); else diff --git a/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java b/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java index 8b9e26c6..bb57a151 100644 --- a/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/FriendsCommand.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; @@ -9,6 +10,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.OfflinePlayerData; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.social.FriendRequest; @@ -30,6 +32,11 @@ public class FriendsCommand extends BukkitCommand { return true; } + PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "friends"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(event.isCancelled()) return true; + if (args.length > 1) { UUID uuid; try { @@ -59,7 +66,7 @@ public class FriendsCommand extends BukkitCommand { return true; } - InventoryManager.FRIEND_LIST.newInventory(PlayerData.get((Player) sender)).open(); + InventoryManager.FRIEND_LIST.newInventory(data).open(); return true; } } diff --git a/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java b/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java index 2458a334..bdf6784d 100644 --- a/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/GuildCommand.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -10,6 +11,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.social.Request; import net.Indyuce.mmocore.api.player.social.guilds.GuildInvite; @@ -31,6 +33,11 @@ public class GuildCommand extends BukkitCommand { return true; } + PlayerData data = PlayerData.get((OfflinePlayer) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "guild"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(event.isCancelled()) return true; + if (args.length > 1) { UUID uuid; try { @@ -60,7 +67,6 @@ public class GuildCommand extends BukkitCommand { return true; } - PlayerData data = PlayerData.get((OfflinePlayer) sender); if (data.inGuild()) InventoryManager.GUILD_VIEW.newInventory(data).open(); else diff --git a/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java b/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java index c2d8e9e1..8cf39f66 100644 --- a/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/PartyCommand.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.command; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -10,6 +11,7 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.social.PartyInvite; import net.Indyuce.mmocore.api.player.social.Request; @@ -31,6 +33,11 @@ public class PartyCommand extends BukkitCommand { return true; } + PlayerData data = PlayerData.get((OfflinePlayer) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "party"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(event.isCancelled()) return true; + if (args.length > 1) { UUID uuid; try { @@ -60,7 +67,6 @@ public class PartyCommand extends BukkitCommand { return true; } - PlayerData data = PlayerData.get((OfflinePlayer) sender); if (data.hasParty()) InventoryManager.PARTY_VIEW.newInventory(data).open(); else diff --git a/src/main/java/net/Indyuce/mmocore/command/PlayerStatsCommand.java b/src/main/java/net/Indyuce/mmocore/command/PlayerStatsCommand.java index b5bca585..a8bfe6fa 100644 --- a/src/main/java/net/Indyuce/mmocore/command/PlayerStatsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/PlayerStatsCommand.java @@ -1,11 +1,13 @@ package net.Indyuce.mmocore.command; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -23,8 +25,11 @@ public class PlayerStatsCommand extends BukkitCommand { sender.sendMessage(ChatColor.RED + "This command is for players only."); return true; } - - InventoryManager.PLAYER_STATS.newInventory(PlayerData.get((Player) sender)).open(); + + PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "profile"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(!event.isCancelled()) InventoryManager.PLAYER_STATS.newInventory(data).open(); return true; } } diff --git a/src/main/java/net/Indyuce/mmocore/command/QuestsCommand.java b/src/main/java/net/Indyuce/mmocore/command/QuestsCommand.java index fdd3db7b..2eebc76b 100644 --- a/src/main/java/net/Indyuce/mmocore/command/QuestsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/QuestsCommand.java @@ -1,10 +1,12 @@ package net.Indyuce.mmocore.command; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -18,8 +20,12 @@ public class QuestsCommand extends BukkitCommand { @Override public boolean execute(CommandSender sender, String label, String[] args) { - if (sender instanceof Player) - InventoryManager.QUEST_LIST.newInventory(PlayerData.get((Player) sender)).open(); + if (sender instanceof Player) { + PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "quests"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(!event.isCancelled()) InventoryManager.QUEST_LIST.newInventory(data).open(); + } return true; } } diff --git a/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java b/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java index b512c021..a13b5c1f 100644 --- a/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java @@ -1,11 +1,13 @@ package net.Indyuce.mmocore.command; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -21,6 +23,10 @@ public class SkillsCommand extends BukkitCommand { public boolean execute(CommandSender sender, String label, String[] args) { if (sender instanceof Player) { PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "skills"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(event.isCancelled()) return true; + if (data.getProfess().getSkills().size() < 1) { MMOCore.plugin.configManager.getSimpleMessage("no-class-skill").send((Player) sender); return true; diff --git a/src/main/java/net/Indyuce/mmocore/command/WaypointsCommand.java b/src/main/java/net/Indyuce/mmocore/command/WaypointsCommand.java index e826cdbc..0e958636 100644 --- a/src/main/java/net/Indyuce/mmocore/command/WaypointsCommand.java +++ b/src/main/java/net/Indyuce/mmocore/command/WaypointsCommand.java @@ -1,10 +1,12 @@ package net.Indyuce.mmocore.command; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.InventoryManager; @@ -18,8 +20,12 @@ public class WaypointsCommand extends BukkitCommand { @Override public boolean execute(CommandSender sender, String label, String[] args) { - if (sender instanceof Player && sender.hasPermission("mmocore.waypoints")) - InventoryManager.WAYPOINTS.newInventory(PlayerData.get((Player) sender)).open(); + if (sender instanceof Player && sender.hasPermission("mmocore.waypoints")) { + PlayerData data = PlayerData.get((Player) sender); + MMOCommandEvent event = new MMOCommandEvent(data, "waypoints"); + Bukkit.getServer().getPluginManager().callEvent(event); + if(!event.isCancelled()) InventoryManager.WAYPOINTS.newInventory(data).open(); + } return true; } } diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandMap.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandMap.java index 1347a859..f727f97f 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandMap.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ExperienceCommandMap.java @@ -9,6 +9,7 @@ import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.experience.Profession; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.PlayerProfessions; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.api.CommandEnd; @@ -20,7 +21,7 @@ public class ExperienceCommandMap extends CommandMap { super(parent, "exp"); addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setExperience(value), (professions, profession, value) -> professions.setExperience(profession, value))); - addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveExperience(value, data.getPlayer().getLocation()), (professions, profession, value) -> professions.giveExperience(profession, value, professions.getPlayerData().getPlayer().getLocation()))); + addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveExperience(value, data.getPlayer().getLocation(), EXPSource.COMMAND), (professions, profession, value) -> professions.giveExperience(profession, value, professions.getPlayerData().getPlayer().getLocation()))); } public class ActionCommandMap extends CommandEnd { diff --git a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandMap.java b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandMap.java index 40912324..7162979f 100644 --- a/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandMap.java +++ b/src/main/java/net/Indyuce/mmocore/command/rpg/admin/LevelCommandMap.java @@ -9,6 +9,7 @@ import org.bukkit.entity.Player; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.experience.Profession; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.experience.PlayerProfessions; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.api.CommandEnd; @@ -20,7 +21,7 @@ public class LevelCommandMap extends CommandMap { super(parent, "level"); addFloor(new ActionCommandMap(this, "set", (data, value) -> data.setLevel(value), (professions, profession, value) -> professions.setLevel(profession, value))); - addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveLevels(value), (professions, profession, value) -> professions.giveLevels(profession, value))); + addFloor(new ActionCommandMap(this, "give", (data, value) -> data.giveLevels(value, EXPSource.COMMAND), (professions, profession, value) -> professions.giveLevels(profession, value))); } public class ActionCommandMap extends CommandEnd { diff --git a/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java b/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java index 6e007941..bc47393c 100644 --- a/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java +++ b/src/main/java/net/Indyuce/mmocore/listener/option/RedirectVanillaExp.java @@ -4,6 +4,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerExpChangeEvent; +import net.Indyuce.mmocore.api.experience.EXPSource; import net.Indyuce.mmocore.api.player.PlayerData; public class RedirectVanillaExp implements Listener { @@ -17,6 +18,6 @@ public class RedirectVanillaExp implements Listener { public void a(PlayerExpChangeEvent event) { int a = (int) (event.getAmount() * ratio); if (a > 0) - PlayerData.get(event.getPlayer()).giveExperience(a); + PlayerData.get(event.getPlayer()).giveExperience(a, EXPSource.VANILLA); } }