diff --git a/pom.xml b/pom.xml
index 7016046..a6edb0b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,10 +18,6 @@
papermc
https://repo.papermc.io/repository/maven-public/
-
- spigot-repo
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/
-
placeholderapi
https://repo.extendedclip.com/content/repositories/placeholderapi/
@@ -64,12 +60,6 @@
1.21.11-R0.1-SNAPSHOT
provided
-
- org.spigotmc
- spigot-api
- 1.21.11-R0.1-SNAPSHOT
- provided
-
me.clip
placeholderapi
@@ -117,6 +107,12 @@
1.26.0
provided
+
+ com.zaxxer
+ HikariCP
+ 4.0.3
+ compile
+
diff --git a/src/main/java/ce/ajneb97/ConditionalEvents.java b/src/main/java/ce/ajneb97/ConditionalEvents.java
index 8cb1118..4db2dcd 100644
--- a/src/main/java/ce/ajneb97/ConditionalEvents.java
+++ b/src/main/java/ce/ajneb97/ConditionalEvents.java
@@ -1,8 +1,8 @@
package ce.ajneb97;
-
import ce.ajneb97.api.ConditionalEventsAPI;
import ce.ajneb97.api.ExpansionCE;
+import ce.ajneb97.command.MainCommand;
import ce.ajneb97.configs.ConfigsManager;
import ce.ajneb97.libs.armorequipevent.ArmorListener;
import ce.ajneb97.libs.itemselectevent.ItemSelectListener;
@@ -10,256 +10,302 @@
import ce.ajneb97.libs.offhandevent.OffHandListener;
import ce.ajneb97.listeners.*;
import ce.ajneb97.listeners.dependencies.CitizensListener;
-import ce.ajneb97.managers.dependencies.Metrics;
import ce.ajneb97.listeners.dependencies.WGRegionEventsListener;
-import ce.ajneb97.managers.*;
-import ce.ajneb97.managers.commandregister.CommandRegisterManager;
+import ce.ajneb97.manager.*;
+import ce.ajneb97.manager.commandregister.CommandRegisterManager;
+import ce.ajneb97.manager.data.FilePlayerDataManager;
+import ce.ajneb97.manager.data.PlayerDataManager;
+import ce.ajneb97.manager.data.mysql.MySQLPlayerDataManager;
+import ce.ajneb97.manager.dependencies.Metrics;
import ce.ajneb97.model.EventType;
import ce.ajneb97.model.internal.ConditionEvent;
import ce.ajneb97.model.internal.UpdateCheckerResult;
+import ce.ajneb97.tasks.PlayOneMinuteTask;
import ce.ajneb97.tasks.PlayerDataSaveTask;
import ce.ajneb97.utils.ServerVersion;
import org.bukkit.Bukkit;
+import org.bukkit.command.PluginCommand;
+import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
+
import java.util.ArrayList;
+@SuppressWarnings("deprecation")
public class ConditionalEvents extends JavaPlugin {
-
- PluginDescriptionFile pdfFile = getDescription();
- public String version = pdfFile.getVersion();
- public static ServerVersion serverVersion;
- public static String prefix;
-
- private EventsManager eventsManager;
- private DependencyManager dependencyManager;
- private PlayerManager playerManager;
- private ConfigsManager configsManager;
- private DebugManager debugManager;
- private BungeeMessagingManager bungeeMessagingManager;
- private MessagesManager messagesManager;
- private VerifyManager verifyManager;
- private UpdateCheckerManager updateCheckerManager;
- private CommandRegisterManager commandRegisterManager;
- private SavedItemsManager savedItemsManager;
- private APIManager apiManager;
- private InterruptEventManager interruptEventManager;
-
- private PlayerDataSaveTask playerDataSaveTask;
-
-
- public void onEnable(){
- setVersion();
- setPrefix();
-
- this.eventsManager = new EventsManager(this);
- this.dependencyManager = new DependencyManager(this);
- this.bungeeMessagingManager = new BungeeMessagingManager(this);
- this.debugManager = new DebugManager(this);
- this.playerManager = new PlayerManager(this);
- this.savedItemsManager = new SavedItemsManager(this);
- this.apiManager = new APIManager(this);
- this.interruptEventManager = new InterruptEventManager(this);
- this.configsManager = new ConfigsManager(this);
- this.configsManager.configure();
-
- registerEvents();
- registerCommands();
-
- this.verifyManager = new VerifyManager(this);
- this.verifyManager.verifyEvents();
-
- this.commandRegisterManager = new CommandRegisterManager(this);
- commandRegisterManager.registerCommands();
-
-
-
- reloadPlayerDataSaveTask();
-
- ConditionalEventsAPI api = new ConditionalEventsAPI(this);
- if(getServer().getPluginManager().getPlugin("PlaceholderAPI") != null){
- new ExpansionCE(this).register();
- }
- Metrics metrics = new Metrics(this, 19371);
-
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix+" &eHas been enabled! &fVersion: "+version));
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix+" &eThanks for using my plugin! &f~Ajneb97"));
-
- updateCheckerManager = new UpdateCheckerManager(version);
- if(configsManager.getMainConfigManager().isUpdateNotifications()){
- updateMessage(updateCheckerManager.check());
- }
-
- new ConditionEvent(this, null, null, EventType.SERVER_START, null)
- .checkEvent();
- }
-
- public void onDisable(){
- new ConditionEvent(this, null, null, EventType.SERVER_STOP, null)
- .checkEvent();
- this.configsManager.getPlayerConfigsManager().saveConfigs();
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix+" &eHas been disabled! &fVersion: "+version));
- }
-
- public void registerEvents() {
- PluginManager pm = getServer().getPluginManager();
- pm.registerEvents(new PlayerEventsListener(this), this);
- pm.registerEvents(new ItemEventsListener(this), this);
- pm.registerEvents(new ArmorListener(new ArrayList<>()), this);
- pm.registerEvents(new ItemSelectListener(this), this);
- pm.registerEvents(new OtherEventsListener(this), this);
- pm.registerEvents(new CustomEventListener(this), this);
-
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1)){
- pm.registerEvents(new ItemSelectListenerNew(), this);
- pm.registerEvents(new PlayerEventsListenerNew1_9(this), this);
- pm.registerEvents(new OffHandListener(this), this);
- }
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_16_R1)){
- pm.registerEvents(new PlayerEventsListenerNew1_16(this), this);
- }
-
- if(dependencyManager.isCitizens()){
- pm.registerEvents(new CitizensListener(this), this);
- }
- if(dependencyManager.isWorldGuardEvents()){
- pm.registerEvents(new WGRegionEventsListener(this), this);
- }
- }
-
- public void setPrefix(){
- prefix = MessagesManager.getLegacyColoredMessage("&4[&bConditionalEvents&4]");
- }
-
- public void setVersion(){
- String packageName = Bukkit.getServer().getClass().getPackage().getName();
- String bukkitVersion = Bukkit.getServer().getBukkitVersion().split("-")[0];
- switch(bukkitVersion){
- case "1.20.5":
- case "1.20.6":
- serverVersion = ServerVersion.v1_20_R4;
- break;
- case "1.21":
- case "1.21.1":
- serverVersion = ServerVersion.v1_21_R1;
- break;
- case "1.21.2":
- case "1.21.3":
- serverVersion = ServerVersion.v1_21_R2;
- break;
- case "1.21.4":
- serverVersion = ServerVersion.v1_21_R3;
- break;
- case "1.21.5":
- serverVersion = ServerVersion.v1_21_R4;
- break;
- case "1.21.6":
- case "1.21.7":
- case "1.21.8":
- serverVersion = ServerVersion.v1_21_R5;
- break;
- case "1.21.9":
- case "1.21.10":
- serverVersion = ServerVersion.v1_21_R6;
- break;
- case "1.21.11":
- serverVersion = ServerVersion.v1_21_R7;
- break;
- default:
- try{
- serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", ""));
- }catch(Exception e){
- serverVersion = ServerVersion.v1_21_R7;
- }
- }
- }
-
- public void reloadEvents(){
- HandlerList.unregisterAll(this);
- registerEvents();
- }
-
- public void reloadPlayerDataSaveTask() {
- if(playerDataSaveTask != null) {
- playerDataSaveTask.end();
- }
- playerDataSaveTask = new PlayerDataSaveTask(this);
- playerDataSaveTask.start(configsManager.getMainConfigManager().getConfig().getInt("Config.data_save_time"));
- }
-
- public void registerCommands(){
- this.getCommand("conditionalevents").setExecutor(new MainCommand(this));
- }
-
- public EventsManager getEventsManager() {
- return eventsManager;
- }
-
- public DependencyManager getDependencyManager() {
- return dependencyManager;
- }
-
- public ConfigsManager getConfigsManager() {
- return configsManager;
- }
-
- public DebugManager getDebugManager() {
- return debugManager;
- }
-
- public BungeeMessagingManager getBungeeMessagingManager() {
- return bungeeMessagingManager;
- }
-
- public PlayerManager getPlayerManager() {
- return playerManager;
- }
-
- public MessagesManager getMessagesManager() {
- return messagesManager;
- }
-
- public void setMessagesManager(MessagesManager messagesManager) {
- this.messagesManager = messagesManager;
- }
-
- public VerifyManager getVerifyManager() {
- return verifyManager;
- }
-
- public UpdateCheckerManager getUpdateCheckerManager() {
- return updateCheckerManager;
- }
-
- public CommandRegisterManager getCommandRegisterManager() {
- return commandRegisterManager;
- }
-
- public APIManager getApiManager() {
- return apiManager;
- }
-
- public SavedItemsManager getSavedItemsManager() {
- return savedItemsManager;
- }
-
- public InterruptEventManager getInterruptEventManager() {
- return interruptEventManager;
- }
-
- public void updateMessage(UpdateCheckerResult result){
- if(!result.isError()){
- String latestVersion = result.getLatestVersion();
- if(latestVersion != null){
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage("&cThere is a new version available. &e(&7"+latestVersion+"&e)"));
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage("&cYou can download it at: &fhttps://modrinth.com/plugin/conditionalevents"));
- }
- }else{
- Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix+" &cError while checking update."));
- }
-
- }
+ PluginDescriptionFile pdfFile = getDescription();
+ public String version = pdfFile.getVersion();
+ public static ServerVersion serverVersion;
+ public static String prefix;
+ private EventsManager eventsManager;
+ private DependencyManager dependencyManager;
+ private PlayerManager playerManager;
+ private ConfigsManager configsManager;
+ private PlayerDataManager playerDataManager;
+ private DebugManager debugManager;
+ private BungeeMessagingManager bungeeMessagingManager;
+ private MessagesManager messagesManager;
+ private VerifyManager verifyManager;
+ private UpdateCheckerManager updateCheckerManager;
+ private SavedItemsManager savedItemsManager;
+ private APIManager apiManager;
+ private InterruptEventManager interruptEventManager;
+ private PlayerDataSaveTask playerDataSaveTask;
+ private PlayOneMinuteTask playOneMinuteTask;
+ public final boolean isFolia = checkFolia();
+
+ public void onEnable() {
+ setVersion();
+ setPrefix();
+
+ this.eventsManager = new EventsManager(this);
+ this.dependencyManager = new DependencyManager(this);
+ this.bungeeMessagingManager = new BungeeMessagingManager(this);
+ this.debugManager = new DebugManager();
+ this.playerManager = new PlayerManager(this);
+ this.savedItemsManager = new SavedItemsManager(this);
+ this.apiManager = new APIManager(this);
+ this.interruptEventManager = new InterruptEventManager();
+ this.configsManager = new ConfigsManager(this);
+ this.configsManager.configure();
+
+ FileConfiguration mainConfig = configsManager.getMainConfigManager().getConfig();
+ if (mainConfig.getBoolean("Config.mysql_database.enabled")) {
+ MySQLPlayerDataManager mysqlManager = new MySQLPlayerDataManager(this);
+ this.playerDataManager = mysqlManager;
+
+ if (mainConfig.getBoolean("Config.mysql_database.migrate")) {
+ getLogger().info("Starting MySQL migration...");
+ mysqlManager.migrate(configsManager.getPlayerConfigsManager()).thenAccept(count -> {
+ getLogger().info("Successfully migrated " + count + " players to MySQL.");
+ mainConfig.set("Config.mysql_database.migrate", false);
+ configsManager.getMainConfigManager().saveConfig();
+ }).exceptionally(ex -> {
+ getLogger().severe("Error during MySQL migration: " + ex.getMessage());
+ return null;
+ });
+ }
+ } else {
+ this.playerDataManager = new FilePlayerDataManager(configsManager.getPlayerConfigsManager());
+ }
+
+ registerEvents();
+ registerCommands();
+
+ this.verifyManager = new VerifyManager(this);
+ this.verifyManager.verifyEvents();
+
+ CommandRegisterManager commandRegisterManager = new CommandRegisterManager(this);
+ commandRegisterManager.registerCommands();
+
+ reloadPlayerDataSaveTask();
+ reloadPlayOneMinuteTask();
+
+ ConditionalEventsAPI.init(this);
+
+ if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
+ new ExpansionCE(this).register();
+ }
+
+ new Metrics(this, 19371);
+
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix + " &eHas been enabled! &fVersion: " + version));
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix + " &eThanks for using my plugin! &f~Ajneb97"));
+
+ updateCheckerManager = new UpdateCheckerManager(version);
+ if (configsManager.getMainConfigManager().isUpdateNotifications()) {
+ updateMessage(updateCheckerManager.check());
+ }
+
+ new ConditionEvent(this, null, null, EventType.SERVER_START, null).checkEvent();
+ }
+
+ public void onDisable() {
+ new ConditionEvent(this, null, null, EventType.SERVER_STOP, null).checkEvent();
+
+ playerDataManager.saveAllData();
+
+ if (playerDataManager instanceof MySQLPlayerDataManager) {
+ ((MySQLPlayerDataManager) playerDataManager).close();
+ }
+
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix + " &eHas been disabled! &fVersion: " + version));
+ }
+
+ public void registerEvents() {
+ PluginManager pm = getServer().getPluginManager();
+ pm.registerEvents(new PlayerEventsListener(this), this);
+ pm.registerEvents(new ItemEventsListener(this), this);
+ pm.registerEvents(new ArmorListener(new ArrayList<>()), this);
+ pm.registerEvents(new ItemSelectListener(this), this);
+ pm.registerEvents(new OtherEventsListener(this), this);
+ pm.registerEvents(new CustomEventListener(this), this);
+
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_9_R1)) {
+ pm.registerEvents(new ItemSelectListenerNew(), this);
+ pm.registerEvents(new PlayerEventsListenerNew1_9(this), this);
+ pm.registerEvents(new OffHandListener(), this);
+ }
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_16_R1)) {
+ pm.registerEvents(new PlayerEventsListenerNew1_16(this), this);
+ }
+
+ if (dependencyManager.isCitizens()) {
+ pm.registerEvents(new CitizensListener(this), this);
+ }
+ if (dependencyManager.isWorldGuardEvents()) {
+ pm.registerEvents(new WGRegionEventsListener(this), this);
+ }
+ }
+
+ public void setPrefix() {
+ prefix = MessagesManager.getLegacyColoredMessage("&4[&bConditionalEvents&4]");
+ }
+
+ public void setVersion() {
+ String packageName = Bukkit.getServer().getClass().getPackage().getName();
+ String bukkitVersion = Bukkit.getServer().getBukkitVersion().split("-")[0];
+ switch (bukkitVersion) {
+ case "1.20.5":
+ case "1.20.6":
+ serverVersion = ServerVersion.v1_20_R4;
+ break;
+ case "1.21":
+ case "1.21.1":
+ serverVersion = ServerVersion.v1_21_R1;
+ break;
+ case "1.21.2":
+ case "1.21.3":
+ serverVersion = ServerVersion.v1_21_R2;
+ break;
+ case "1.21.4":
+ serverVersion = ServerVersion.v1_21_R3;
+ break;
+ case "1.21.5":
+ serverVersion = ServerVersion.v1_21_R4;
+ break;
+ case "1.21.6":
+ case "1.21.7":
+ case "1.21.8":
+ serverVersion = ServerVersion.v1_21_R5;
+ break;
+ case "1.21.9":
+ case "1.21.10":
+ serverVersion = ServerVersion.v1_21_R6;
+ break;
+ case "1.21.11":
+ serverVersion = ServerVersion.v1_21_R7;
+ break;
+ default:
+ try {
+ serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", ""));
+ } catch (Exception e) {
+ serverVersion = ServerVersion.v1_21_R7;
+ }
+ }
+ }
+
+ public void reloadEvents() {
+ HandlerList.unregisterAll(this);
+ registerEvents();
+ }
+
+ public void reloadPlayerDataSaveTask() {
+ if (playerDataSaveTask != null) playerDataSaveTask.stop();
+ playerDataSaveTask = new PlayerDataSaveTask(this);
+ playerDataSaveTask.start(configsManager.getMainConfigManager().getConfig().getInt("Config.data_save_time"));
+ }
+
+ public void reloadPlayOneMinuteTask() {
+ if (playOneMinuteTask != null) playOneMinuteTask.stop();
+ playOneMinuteTask = new PlayOneMinuteTask(this);
+ playOneMinuteTask.start();
+ }
+
+ public void registerCommands() {
+ PluginCommand command = getCommand("conditionalevents");
+ if (command != null) {
+ command.setExecutor(new MainCommand(this));
+ }
+ }
+
+ public EventsManager getEventsManager() {
+ return eventsManager;
+ }
+
+ public DependencyManager getDependencyManager() {
+ return dependencyManager;
+ }
+
+ public ConfigsManager getConfigsManager() {
+ return configsManager;
+ }
+
+ public PlayerDataManager getPlayerDataManager() {
+ return playerDataManager;
+ }
+
+ public DebugManager getDebugManager() {
+ return debugManager;
+ }
+
+ public BungeeMessagingManager getBungeeMessagingManager() {
+ return bungeeMessagingManager;
+ }
+
+ public PlayerManager getPlayerManager() {
+ return playerManager;
+ }
+
+ public MessagesManager getMessagesManager() {
+ return messagesManager;
+ }
+
+ public void setMessagesManager(MessagesManager messagesManager) {
+ this.messagesManager = messagesManager;
+ }
+
+ public VerifyManager getVerifyManager() {
+ return verifyManager;
+ }
+
+ public UpdateCheckerManager getUpdateCheckerManager() {
+ return updateCheckerManager;
+ }
+
+ public APIManager getApiManager() {
+ return apiManager;
+ }
+
+ public SavedItemsManager getSavedItemsManager() {
+ return savedItemsManager;
+ }
+
+ public InterruptEventManager getInterruptEventManager() {
+ return interruptEventManager;
+ }
+
+ public void updateMessage(UpdateCheckerResult result) {
+ if (!result.isError()) {
+ String latestVersion = result.getLatestVersion();
+ if (latestVersion != null) {
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage("&cThere is a new version available. &e(&7" + latestVersion + "&e)"));
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage("&cYou can download it at: &fhttps://modrinth.com/plugin/conditionalevents"));
+ }
+ } else {
+ Bukkit.getConsoleSender().sendMessage(MessagesManager.getLegacyColoredMessage(prefix + " &cError while checking update."));
+ }
+ }
+
+ private boolean checkFolia() {
+ try {
+ Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
}
diff --git a/src/main/java/ce/ajneb97/MainCommand.java b/src/main/java/ce/ajneb97/MainCommand.java
deleted file mode 100644
index da67983..0000000
--- a/src/main/java/ce/ajneb97/MainCommand.java
+++ /dev/null
@@ -1,466 +0,0 @@
-package ce.ajneb97;
-
-
-
-
-import ce.ajneb97.configs.MainConfigManager;
-import ce.ajneb97.managers.MessagesManager;
-import ce.ajneb97.managers.PlayerManager;
-import ce.ajneb97.managers.SavedItemsManager;
-import ce.ajneb97.model.CEEvent;
-import ce.ajneb97.model.EventType;
-import ce.ajneb97.model.player.PlayerData;
-import ce.ajneb97.utils.ActionUtils;
-import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
-import org.bukkit.Material;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.command.TabCompleter;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-
-public class MainCommand implements CommandExecutor, TabCompleter {
-
- private ConditionalEvents plugin;
- private MainConfigManager mainConfigManager;
- public MainCommand(ConditionalEvents plugin) {
- this.plugin = plugin;
- this.mainConfigManager = plugin.getConfigsManager().getMainConfigManager();
- }
-
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
- FileConfiguration config = mainConfigManager.getConfig();
- MessagesManager msgManager = plugin.getMessagesManager();
-
- if(sender.isOp() || sender.hasPermission("conditionalevents.admin")) {
- if(args.length >= 1) {
- if(args[0].equalsIgnoreCase("reload")) {
- if(!plugin.getConfigsManager().reload()){
- sender.sendMessage(ConditionalEvents.prefix+MessagesManager.getLegacyColoredMessage(" &cThere was an error reloading the config, check the console."));
- return true;
- }
- msgManager.sendMessage(sender,config.getString("Messages.commandReload"),true);
- }else if(args[0].equalsIgnoreCase("help")) {
- help(sender);
- }else if(args[0].equalsIgnoreCase("reset")) {
- reset(args,sender,config,msgManager);
- }else if(args[0].equalsIgnoreCase("enable")) {
- enable(args,sender,config,msgManager);
- }else if(args[0].equalsIgnoreCase("disable")) {
- disable(args,sender,config,msgManager);
- }else if(args[0].equalsIgnoreCase("debug")) {
- debug(args,sender,config,msgManager);
- }else if(args[0].equalsIgnoreCase("verify")) {
- if(sender instanceof Player){
- plugin.getVerifyManager().sendVerification((Player)sender);
- }else{
- msgManager.sendMessage(sender,config.getString("Messages.onlyPlayerCommand"),true);
- }
- }else if(args[0].equalsIgnoreCase("call")) {
- call(args,sender,config,msgManager);
- }else if(args[0].equalsIgnoreCase("item")) {
- if(sender instanceof Player){
- item(args,(Player)sender,config,msgManager);
- }else{
- msgManager.sendMessage(sender,config.getString("Messages.onlyPlayerCommand"),true);
- }
- }else if(args[0].equalsIgnoreCase("interrupt")) {
- interrupt(args,sender,config,msgManager);
- }
- else {
- help(sender);
- }
- }else {
- help(sender);
- }
- }else {
- msgManager.sendMessage(sender,config.getString("Messages.commandNoPermissions"),true);
- }
-
- return true;
- }
-
- public void reset(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager){
- // /ce reset
- if(args.length <= 2){
- msgManager.sendMessage(sender,config.getString("Messages.commandResetError"),true);
- return;
- }
-
- String player = args[1];
- String eventName = args[2];
- boolean silent = args.length >= 4 && args[3].equals("silent:true");
-
- PlayerManager playerManager = plugin.getPlayerManager();
- if(player.equals("*")){
- playerManager.resetDataForAllPlayers(eventName,config,result -> {
- if(silent){
- return;
- }
- msgManager.sendMessage(sender,result,true);
- });
- }else{
- String result = playerManager.resetDataForPlayer(player,eventName,config);
- if(silent){
- return;
- }
- msgManager.sendMessage(sender,result,true);
- }
- }
-
- public void enable(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager) {
- // /ce enable
- if(args.length <= 1) {
- msgManager.sendMessage(sender,config.getString("Messages.eventEnableError"),true);
- return;
- }
-
- String eventName = args[1];
- CEEvent e = plugin.getEventsManager().getEvent(eventName);
- if(e == null) {
- msgManager.sendMessage(sender,config.getString("Messages.eventDoesNotExists"),true);
- return;
- }
-
- boolean silent = args.length >= 3 && args[2].equals("silent:true");
-
- e.enable();
- plugin.getConfigsManager().saveEvent(e);
-
- if(silent){
- return;
- }
- msgManager.sendMessage(sender,config.getString("Messages.eventEnabled")
- .replace("%event%", eventName),true);
- }
-
- public void disable(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager) {
- // /ce disable
- if(args.length <= 1) {
- msgManager.sendMessage(sender,config.getString("Messages.eventDisableError"),true);
- return;
- }
-
- String eventName = args[1];
- CEEvent e = plugin.getEventsManager().getEvent(eventName);
- if(e == null) {
- msgManager.sendMessage(sender,config.getString("Messages.eventDoesNotExists"),true);
- return;
- }
-
- boolean silent = args.length >= 3 && args[2].equals("silent:true");
-
- e.disable();
- plugin.getInterruptEventManager().interruptEvent(eventName,null);
-
- plugin.getConfigsManager().saveEvent(e);
-
- if(silent){
- return;
- }
- msgManager.sendMessage(sender,config.getString("Messages.eventDisabled").replace("%event%", eventName),true);
- }
-
- public void debug(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager) {
- // /ce debug (optional)
- if(args.length <= 1) {
- msgManager.sendMessage(sender,config.getString("Messages.commandDebugError"),true);
- return;
- }
-
- String eventName = args[1];
- CEEvent e = plugin.getEventsManager().getEvent(eventName);
- if(e == null) {
- msgManager.sendMessage(sender,config.getString("Messages.eventDoesNotExists"),true);
- return;
- }
-
- String playerName = null;
- if(args.length >= 3){
- playerName = args[2];
- }
-
- boolean result = plugin.getDebugManager().setDebugSender(sender,eventName,playerName);
- if(result){
- if(playerName != null){
- msgManager.sendMessage(sender,config.getString("Messages.debugEnabledPlayer")
- .replace("%event%", eventName).replace("%player%",playerName),true);
- }else{
- msgManager.sendMessage(sender,config.getString("Messages.debugEnabled").replace("%event%", eventName),true);
- }
- }else{
- if(playerName != null){
- msgManager.sendMessage(sender,config.getString("Messages.debugDisabledPlayer")
- .replace("%event%", eventName).replace("%player%",playerName),true);
- }else{
- msgManager.sendMessage(sender,config.getString("Messages.debugDisabled").replace("%event%", eventName),true);
- }
- }
- }
-
- public void call(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager) {
- // /ce call (optional)%variable1%=;%variable2%= (optional)player: (optional)silent:true
- if(args.length <= 1) {
- msgManager.sendMessage(sender,config.getString("Messages.commandCallError"),true);
- return;
- }
-
- String eventName = args[1];
- CEEvent e = plugin.getEventsManager().getEvent(eventName);
- if(e == null) {
- msgManager.sendMessage(sender,config.getString("Messages.eventDoesNotExists"),true);
- return;
- }
- if(!e.getEventType().equals(EventType.CALL)){
- msgManager.sendMessage(sender,config.getString("Messages.commandCallInvalidEvent"),true);
- return;
- }
- if(!e.isEnabled()){
- msgManager.sendMessage(sender,config.getString("Messages.eventIsNotEnabled"),true);
- return;
- }
-
- String actionLine = eventName;
- String playerName = null;
- boolean silent = false;
-
- if(args.length >= 3){
- for(int i=2;i
- if(args.length <= 2){
- msgManager.sendMessage(player,config.getString("Messages.commandItemError"),true);
- return;
- }
-
- SavedItemsManager savedItemsManager = plugin.getSavedItemsManager();
- String type = args[1];
- String name = args[2];
-
- if(type.equals("save")){
- if(savedItemsManager.getItem(name,player) != null){
- msgManager.sendMessage(player,config.getString("Messages.savedItemAlreadyExists"),true);
- return;
- }
-
- ItemStack item = player.getItemInHand();
- if(item == null || item.getType().equals(Material.AIR)) {
- msgManager.sendMessage(player, config.getString("Messages.mustHaveItemInHand"), true);
- return;
- }
-
- savedItemsManager.addItem(name,item.clone());
- msgManager.sendMessage(player,config.getString("Messages.savedItemAdded")
- .replace("%name%",name),true);
- }else if(type.equals("remove")){
- if(savedItemsManager.getItem(name,player) == null){
- msgManager.sendMessage(player,config.getString("Messages.savedItemDoesNotExists"),true);
- return;
- }
-
- savedItemsManager.removeItem(name);
- msgManager.sendMessage(player,config.getString("Messages.savedItemRemoved")
- .replace("%name%",name),true);
- }else{
- msgManager.sendMessage(player,config.getString("Messages.commandItemError"),true);
- }
- }
-
- public void interrupt(String[] args,CommandSender sender,FileConfiguration config,MessagesManager msgManager) {
- // /ce interrupt (optional)
- if (args.length <= 1) {
- msgManager.sendMessage(sender, config.getString("Messages.commandInterruptError"), true);
- return;
- }
-
- String eventName = args[1];
- CEEvent e = plugin.getEventsManager().getEvent(eventName);
- if (e == null) {
- msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
- return;
- }
-
- String playerName = null;
- if (args.length >= 3 && !args[2].equals("silent:true")) {
- playerName = args[2];
- }
-
- boolean silent = args[args.length-1].equals("silent:true");
-
- plugin.getInterruptEventManager().interruptEvent(eventName,playerName);
- if(silent){
- return;
- }
- if(playerName == null){
- msgManager.sendMessage(sender, config.getString("Messages.commandInterruptCorrect")
- .replace("%event%",eventName), true);
- }else{
- msgManager.sendMessage(sender, config.getString("Messages.commandInterruptCorrectPlayer")
- .replace("%event%",eventName).replace("%player%",playerName), true);
- }
- }
-
- public static void help(CommandSender sender) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&7[ [ &8[&bConditionalEvents&8] &7] ]"));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',""));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce help &8Shows this message."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce reload &8Reloads the config."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce verify &8Checks ALL events for errors."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce debug (optional) &8Enables/disables debug information for an event."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce reset /* /all &8Resets an event data for a player."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce enable/disable &8Enable or disables an event."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce call (optional)%variable1%=;%variableN%= (optional)player: (optional)silent:true &8Executes a 'call' event."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce item &8Save and remove items for some actions."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/ce interrupt (optional) &8Stops the execution of actions for an event."));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',""));
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&',"&7[ [ &8[&bConditionalEvents&8] &7] ]"));
- }
-
- @Override
- public List onTabComplete(CommandSender sender, Command command, String label, String[] args) {
- if(sender.isOp() || sender.hasPermission("conditionalevents.admin")) {
- if(args.length == 1) {
- List completions = new ArrayList();
- List commands = new ArrayList();
- commands.add("help");commands.add("reload");commands.add("verify");
- commands.add("reset");commands.add("debug");commands.add("enable");
- commands.add("disable");commands.add("call");commands.add("item");
- commands.add("interrupt");
- for(String c : commands) {
- if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) {
- completions.add(c);
- }
- }
- return completions;
- }else {
- if((args[0].equalsIgnoreCase("debug") || args[0].equalsIgnoreCase("enable")
- || args[0].equalsIgnoreCase("disable") || args[0].equalsIgnoreCase("interrupt"))
- && args.length == 2) {
- return getEventsCompletions(args,1,false,null);
- }else if(args[0].equalsIgnoreCase("call") && args.length == 2) {
- return getEventsCompletions(args,1,false,EventType.CALL);
- }else if(args[0].equalsIgnoreCase("reset") && args.length == 3) {
- return getEventsCompletions(args,2,true,null);
- }else if(args[0].equalsIgnoreCase("reset") && args.length == 2) {
- List completions = new ArrayList<>();
- for(Player p : Bukkit.getOnlinePlayers()) {
- if(args[1].isEmpty() || p.getName().toLowerCase().startsWith(args[1].toLowerCase())){
- completions.add(p.getName());
- }
- }
- if(args[1].isEmpty() || "*".startsWith(args[1].toLowerCase())) {
- completions.add("*");
- }
- return completions;
- }else if(args[0].equalsIgnoreCase("item") && args.length == 2) {
- List completions = new ArrayList<>();
- completions.add("remove");completions.add("save");
- return completions;
- }else if(args.length == 3 && args[0].equalsIgnoreCase("item") && args[1].equalsIgnoreCase("remove")) {
- return getSavedItemsCompletions(args,2);
- }
- }
- }
-
-
- return null;
- }
-
- public List getEventsCompletions(String[] args,int argEventPos,boolean addAll,EventType eventType){
- List completions = new ArrayList();
-
- String argEvent = args[argEventPos];
-
- if(addAll) {
- if(argEvent.isEmpty() || "all".startsWith(argEvent.toLowerCase())) {
- completions.add("all");
- }
- }
-
- ArrayList events = plugin.getEventsManager().getEvents();
- for(CEEvent event : events) {
- if(argEvent.isEmpty() || event.getName().toLowerCase().startsWith(argEvent.toLowerCase())) {
- if(eventType != null){
- if(event.getEventType().equals(eventType)){
- completions.add(event.getName());
- }
- }else{
- completions.add(event.getName());
- }
- }
- }
-
- if(completions.isEmpty()){
- return null;
- }
- return completions;
- }
-
- public List getSavedItemsCompletions(String[] args,int argItemPos){
- List completions = new ArrayList<>();
-
- String argItem = args[argItemPos];
- for(Map.Entry entry : plugin.getSavedItemsManager().getSavedItems().entrySet()){
- if(argItem.isEmpty() || entry.getKey().toLowerCase().startsWith(argItem.toLowerCase())) {
- completions.add(entry.getKey());
- }
- }
-
- if(completions.isEmpty()){
- return null;
- }
- return completions;
- }
-}
diff --git a/src/main/java/ce/ajneb97/api/ConditionalEventsAPI.java b/src/main/java/ce/ajneb97/api/ConditionalEventsAPI.java
index d024e9a..a2a2797 100644
--- a/src/main/java/ce/ajneb97/api/ConditionalEventsAPI.java
+++ b/src/main/java/ce/ajneb97/api/ConditionalEventsAPI.java
@@ -1,17 +1,19 @@
package ce.ajneb97.api;
import ce.ajneb97.ConditionalEvents;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.model.CEEvent;
import ce.ajneb97.utils.TimeUtils;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
+@SuppressWarnings("unused")
public class ConditionalEventsAPI {
private static ConditionalEvents plugin;
- public ConditionalEventsAPI(ConditionalEvents plugin){
- this.plugin = plugin;
+
+ public static void init(ConditionalEvents plugin) {
+ ConditionalEventsAPI.plugin = plugin;
}
public static String getEventCooldown(Player player, String event){
diff --git a/src/main/java/ce/ajneb97/api/ConditionalEventsAction.java b/src/main/java/ce/ajneb97/api/ConditionalEventsAction.java
index 4dc5544..e8a8dd0 100644
--- a/src/main/java/ce/ajneb97/api/ConditionalEventsAction.java
+++ b/src/main/java/ce/ajneb97/api/ConditionalEventsAction.java
@@ -9,9 +9,10 @@ public abstract class ConditionalEventsAction {
protected String name;
protected JavaPlugin plugin;
- public ConditionalEventsAction(String name){
+ public ConditionalEventsAction(String name) {
this.name = name;
}
+
public abstract void execute(Player player, String actionLine, Event minecraftEvent);
public String getName() {
diff --git a/src/main/java/ce/ajneb97/api/ConditionalEventsCallEvent.java b/src/main/java/ce/ajneb97/api/ConditionalEventsCallEvent.java
index 971c7b1..ed12f43 100644
--- a/src/main/java/ce/ajneb97/api/ConditionalEventsCallEvent.java
+++ b/src/main/java/ce/ajneb97/api/ConditionalEventsCallEvent.java
@@ -4,44 +4,42 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
-import java.util.List;
-
-
-public class ConditionalEventsCallEvent extends Event{
-
- private Player player;
- private ArrayList variables;
- private String event;
- private static final HandlerList handlers = new HandlerList();
-
- public ConditionalEventsCallEvent(Player player, ArrayList variables, String event){
- this.player = player;
- this.variables = variables;
- this.event = event;
- }
-
- public Player getPlayer() {
- return player;
- }
-
- public String getEvent() {
- return event;
- }
-
- public ArrayList getVariables() {
- return variables;
- }
-
- @Override
- public HandlerList getHandlers() {
- // TODO Auto-generated method stub
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
+
+public class ConditionalEventsCallEvent extends Event {
+
+ private final Player player;
+ private final ArrayList variables;
+ private final String event;
+ private static final HandlerList handlers = new HandlerList();
+
+ public ConditionalEventsCallEvent(Player player, ArrayList variables, String event) {
+ this.player = player;
+ this.variables = variables;
+ this.event = event;
+ }
+
+ public Player getPlayer() {
+ return player;
+ }
+
+ public String getEvent() {
+ return event;
+ }
+
+ public ArrayList getVariables() {
+ return variables;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
}
diff --git a/src/main/java/ce/ajneb97/api/ConditionalEventsEvent.java b/src/main/java/ce/ajneb97/api/ConditionalEventsEvent.java
index 8779e26..b4dbe30 100644
--- a/src/main/java/ce/ajneb97/api/ConditionalEventsEvent.java
+++ b/src/main/java/ce/ajneb97/api/ConditionalEventsEvent.java
@@ -3,42 +3,41 @@
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
-
-
-public class ConditionalEventsEvent extends Event{
-
- private Player player;
- private String event;
- private String actionGroup;
- private static final HandlerList handlers = new HandlerList();
-
- //Event called when conditions for an event are accomplished
- public ConditionalEventsEvent(Player player,String event,String actionGroup){
- this.player = player;
- this.event = event;
- this.actionGroup = actionGroup;
- }
-
- public Player getPlayer() {
- return player;
- }
-
- public String getEvent() {
- return event;
- }
-
- public String getActionGroup() {
- return actionGroup;
- }
-
- @Override
- public HandlerList getHandlers() {
- // TODO Auto-generated method stub
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
+import org.jetbrains.annotations.NotNull;
+
+public class ConditionalEventsEvent extends Event {
+
+ private final Player player;
+ private final String event;
+ private final String actionGroup;
+ private static final HandlerList handlers = new HandlerList();
+
+ //Event called when conditions for an event are achieved
+ public ConditionalEventsEvent(Player player, String event, String actionGroup) {
+ this.player = player;
+ this.event = event;
+ this.actionGroup = actionGroup;
+ }
+
+ public Player getPlayer() {
+ return player;
+ }
+
+ public String getEvent() {
+ return event;
+ }
+
+ public String getActionGroup() {
+ return actionGroup;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
}
diff --git a/src/main/java/ce/ajneb97/api/ExpansionCE.java b/src/main/java/ce/ajneb97/api/ExpansionCE.java
index 6ccf95c..e14a8cf 100644
--- a/src/main/java/ce/ajneb97/api/ExpansionCE.java
+++ b/src/main/java/ce/ajneb97/api/ExpansionCE.java
@@ -4,60 +4,62 @@
import org.bukkit.entity.Player;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
+import org.jetbrains.annotations.NotNull;
+@SuppressWarnings("deprecation")
public class ExpansionCE extends PlaceholderExpansion {
// We get an instance of the plugin later.
- private ConditionalEvents plugin;
+ private final ConditionalEvents plugin;
public ExpansionCE(ConditionalEvents plugin) {
- this.plugin = plugin;
+ this.plugin = plugin;
}
@Override
- public boolean persist(){
+ public boolean persist() {
return true;
}
@Override
- public boolean canRegister(){
+ public boolean canRegister() {
return true;
}
@Override
- public String getAuthor(){
+ public @NotNull String getAuthor() {
return "Ajneb97";
}
@Override
- public String getIdentifier(){
+ public @NotNull String getIdentifier() {
return "conditionalevents";
}
@Override
- public String getVersion(){
+ public @NotNull String getVersion() {
return plugin.getDescription().getVersion();
}
@Override
- public String onPlaceholderRequest(Player player, String identifier){
+ public String onPlaceholderRequest(Player player, @NotNull String identifier) {
- if(player == null){
+ if (player == null) {
return "";
}
- if(identifier.startsWith("cooldown_")){
- // %conditionalevents_cooldown_%
- String event = identifier.replace("cooldown_", "");
- return ConditionalEventsAPI.getEventCooldown(player,event);
- }else if(identifier.startsWith("onetime_ready_")){
+ if (identifier.startsWith("cooldown_")) {
+ // %conditionalevents_cooldown_%
+ String event = identifier.replace("cooldown_", "");
+ return ConditionalEventsAPI.getEventCooldown(player, event);
+ } else if (identifier.startsWith("onetime_ready_")) {
// %conditionalevents_onetime_ready_%
String event = identifier.replace("onetime_ready_", "");
- return ConditionalEventsAPI.getOneTimeReady(player,event);
- }else if(identifier.startsWith("is_enabled_")){
+ return ConditionalEventsAPI.getOneTimeReady(player, event);
+ } else if (identifier.startsWith("is_enabled_")) {
// %conditionalevents_is_enabled_%
String event = identifier.replace("is_enabled_", "");
- return ConditionalEventsAPI.isEventEnabled(event)+"";
+ return ConditionalEventsAPI.isEventEnabled(event) + "";
}
return null;
diff --git a/src/main/java/ce/ajneb97/command/MainCommand.java b/src/main/java/ce/ajneb97/command/MainCommand.java
new file mode 100644
index 0000000..5398e0a
--- /dev/null
+++ b/src/main/java/ce/ajneb97/command/MainCommand.java
@@ -0,0 +1,476 @@
+package ce.ajneb97.command;
+
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.configs.MainConfigManager;
+import ce.ajneb97.manager.MessagesManager;
+import ce.ajneb97.manager.PlayerManager;
+import ce.ajneb97.manager.SavedItemsManager;
+import ce.ajneb97.model.CEEvent;
+import ce.ajneb97.model.EventType;
+import ce.ajneb97.utils.ActionUtils;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+@SuppressWarnings({"DataFlowIssue", "deprecation"})
+public class MainCommand implements CommandExecutor, TabCompleter {
+
+ private final ConditionalEvents plugin;
+ private final MainConfigManager mainConfigManager;
+
+ public MainCommand(ConditionalEvents plugin) {
+ this.plugin = plugin;
+ this.mainConfigManager = plugin.getConfigsManager().getMainConfigManager();
+ }
+
+ public boolean onCommand(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
+ FileConfiguration config = mainConfigManager.getConfig();
+ MessagesManager msgManager = plugin.getMessagesManager();
+
+ if (sender.isOp() || sender.hasPermission("conditionalevents.admin")) {
+ if (args.length >= 1) {
+ if (args[0].equalsIgnoreCase("reload")) {
+ if (!plugin.getConfigsManager().reload()) {
+ sender.sendMessage(ConditionalEvents.prefix + MessagesManager.getLegacyColoredMessage(" &cThere was an error reloading the config, check the console."));
+ return true;
+ }
+ msgManager.sendMessage(sender, config.getString("Messages.commandReload"), true);
+ } else if (args[0].equalsIgnoreCase("help")) {
+ help(sender);
+ } else if (args[0].equalsIgnoreCase("reset")) {
+ reset(args, sender, config, msgManager);
+ } else if (args[0].equalsIgnoreCase("enable")) {
+ enable(args, sender, config, msgManager);
+ } else if (args[0].equalsIgnoreCase("disable")) {
+ disable(args, sender, config, msgManager);
+ } else if (args[0].equalsIgnoreCase("debug")) {
+ debug(args, sender, config, msgManager);
+ } else if (args[0].equalsIgnoreCase("verify")) {
+ if (sender instanceof Player) {
+ plugin.getVerifyManager().sendVerification((Player) sender);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.onlyPlayerCommand"), true);
+ }
+ } else if (args[0].equalsIgnoreCase("call")) {
+ call(args, sender, config, msgManager);
+ } else if (args[0].equalsIgnoreCase("item")) {
+ if (sender instanceof Player) {
+ item(args, (Player) sender, config, msgManager);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.onlyPlayerCommand"), true);
+ }
+ } else if (args[0].equalsIgnoreCase("interrupt")) {
+ interrupt(args, sender, config, msgManager);
+ } else {
+ help(sender);
+ }
+ } else {
+ help(sender);
+ }
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.commandNoPermissions"), true);
+ }
+
+ return true;
+ }
+
+ public void reset(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce reset
+ if (args.length <= 2) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandResetError"), true);
+ return;
+ }
+
+ String player = args[1];
+ String eventName = args[2];
+ boolean silent = args.length >= 4 && args[3].equals("silent:true");
+
+ PlayerManager playerManager = plugin.getPlayerManager();
+ if (player.equals("*")) {
+ playerManager.resetDataForAllPlayers(eventName, config, result -> {
+ if (silent) {
+ return;
+ }
+ msgManager.sendMessage(sender, result, true);
+ });
+ } else {
+ String result = playerManager.resetDataForPlayer(player, eventName, config);
+ if (silent) {
+ return;
+ }
+ msgManager.sendMessage(sender, result, true);
+ }
+ }
+
+ public void enable(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce enable
+ if (args.length <= 1) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventEnableError"), true);
+ return;
+ }
+
+ String eventName = args[1];
+ CEEvent e = plugin.getEventsManager().getEvent(eventName);
+ if (e == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
+ return;
+ }
+
+ boolean silent = args.length >= 3 && args[2].equals("silent:true");
+
+ e.enable();
+ plugin.getConfigsManager().saveEvent(e);
+
+ if (silent) {
+ return;
+ }
+ msgManager.sendMessage(sender, config.getString("Messages.eventEnabled")
+ .replace("%event%", eventName), true);
+ }
+
+ public void disable(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce disable
+ if (args.length <= 1) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDisableError"), true);
+ return;
+ }
+
+ String eventName = args[1];
+ CEEvent e = plugin.getEventsManager().getEvent(eventName);
+ if (e == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
+ return;
+ }
+
+ boolean silent = args.length >= 3 && args[2].equals("silent:true");
+
+ e.disable();
+ plugin.getInterruptEventManager().interruptEvent(eventName, null);
+
+ plugin.getConfigsManager().saveEvent(e);
+
+ if (silent) {
+ return;
+ }
+ msgManager.sendMessage(sender, config.getString("Messages.eventDisabled").replace("%event%", eventName), true);
+ }
+
+ public void debug(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce debug (optional)
+ if (args.length <= 1) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandDebugError"), true);
+ return;
+ }
+
+ String eventName = args[1];
+ CEEvent e = plugin.getEventsManager().getEvent(eventName);
+ if (e == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
+ return;
+ }
+
+ String playerName = null;
+ if (args.length >= 3) {
+ playerName = args[2];
+ }
+
+ boolean result = plugin.getDebugManager().setDebugSender(sender, eventName, playerName);
+ if (result) {
+ if (playerName != null) {
+ msgManager.sendMessage(sender, config.getString("Messages.debugEnabledPlayer")
+ .replace("%event%", eventName).replace("%player%", playerName), true);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.debugEnabled").replace("%event%", eventName), true);
+ }
+ } else {
+ if (playerName != null) {
+ msgManager.sendMessage(sender, config.getString("Messages.debugDisabledPlayer")
+ .replace("%event%", eventName).replace("%player%", playerName), true);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.debugDisabled").replace("%event%", eventName), true);
+ }
+ }
+ }
+
+ public void call(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce call (optional)%variable1%=;%variable2%= (optional)player: (optional)silent:true
+ if (args.length <= 1) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandCallError"), true);
+ return;
+ }
+
+ String eventName = args[1];
+ CEEvent e = plugin.getEventsManager().getEvent(eventName);
+ if (e == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
+ return;
+ }
+ if (!e.getEventType().equals(EventType.CALL)) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandCallInvalidEvent"), true);
+ return;
+ }
+ if (!e.isEnabled()) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventIsNotEnabled"), true);
+ return;
+ }
+
+ StringBuilder actionLine = new StringBuilder(eventName);
+ String playerName = null;
+ boolean silent = false;
+
+ if (args.length >= 3) {
+ for (int i = 2; i < args.length; i++) {
+ String arg = args[i];
+ if (arg.contains("%")) {
+ actionLine.append(";").append(args[i]);
+ } else if (arg.startsWith("player:")) {
+ playerName = args[i].replace("player:", "");
+ } else if (args[i].equals("silent:true")) {
+ silent = true;
+ }
+ }
+ }
+
+ Player player = null;
+ if (playerName != null) {
+ player = Bukkit.getPlayer(playerName);
+ if (player == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.playerNotOnline"), true);
+ return;
+ }
+ } else if (sender instanceof Player) {
+ player = (Player) sender;
+ }
+
+ if (ActionUtils.callEvent(actionLine.toString(), player, plugin, null)) {
+ if (silent) {
+ return;
+ }
+ if (player != null) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandCallCorrectPlayer")
+ .replace("%event%", eventName).replace("%player%", player.getName()), true);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.commandCallCorrect")
+ .replace("%event%", eventName), true);
+ }
+ } else {
+ if (silent) {
+ return;
+ }
+ msgManager.sendMessage(sender, config.getString("Messages.commandCallFailed")
+ .replace("%event%", eventName), true);
+ }
+
+ }
+
+ public void item(String[] args, Player player, FileConfiguration config, MessagesManager msgManager) {
+ // /ce item
+ if (args.length <= 2) {
+ msgManager.sendMessage(player, config.getString("Messages.commandItemError"), true);
+ return;
+ }
+
+ SavedItemsManager savedItemsManager = plugin.getSavedItemsManager();
+ String type = args[1];
+ String name = args[2];
+
+ if (type.equals("save")) {
+ if (savedItemsManager.getItem(name, player) != null) {
+ msgManager.sendMessage(player, config.getString("Messages.savedItemAlreadyExists"), true);
+ return;
+ }
+
+ ItemStack item = player.getItemInHand();
+ if (item.getType().equals(Material.AIR)) {
+ msgManager.sendMessage(player, config.getString("Messages.mustHaveItemInHand"), true);
+ return;
+ }
+
+ savedItemsManager.addItem(name, item.clone());
+ msgManager.sendMessage(player, config.getString("Messages.savedItemAdded")
+ .replace("%name%", name), true);
+ } else if (type.equals("remove")) {
+ if (savedItemsManager.getItem(name, player) == null) {
+ msgManager.sendMessage(player, config.getString("Messages.savedItemDoesNotExists"), true);
+ return;
+ }
+
+ savedItemsManager.removeItem(name);
+ msgManager.sendMessage(player, config.getString("Messages.savedItemRemoved")
+ .replace("%name%", name), true);
+ } else {
+ msgManager.sendMessage(player, config.getString("Messages.commandItemError"), true);
+ }
+ }
+
+ public void interrupt(String[] args, CommandSender sender, FileConfiguration config, MessagesManager msgManager) {
+ // /ce interrupt (optional)
+ if (args.length <= 1) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandInterruptError"), true);
+ return;
+ }
+
+ String eventName = args[1];
+ CEEvent e = plugin.getEventsManager().getEvent(eventName);
+ if (e == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.eventDoesNotExists"), true);
+ return;
+ }
+
+ String playerName = null;
+ if (args.length >= 3 && !args[2].equals("silent:true")) {
+ playerName = args[2];
+ }
+
+ boolean silent = args[args.length - 1].equals("silent:true");
+
+ plugin.getInterruptEventManager().interruptEvent(eventName, playerName);
+ if (silent) {
+ return;
+ }
+ if (playerName == null) {
+ msgManager.sendMessage(sender, config.getString("Messages.commandInterruptCorrect")
+ .replace("%event%", eventName), true);
+ } else {
+ msgManager.sendMessage(sender, config.getString("Messages.commandInterruptCorrectPlayer")
+ .replace("%event%", eventName).replace("%player%", playerName), true);
+ }
+ }
+
+ public static void help(CommandSender sender) {
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[ [ &8[&bConditionalEvents&8] &7] ]"));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', ""));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce help &8Shows this message."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce reload &8Reloads the config."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce verify &8Checks ALL events for errors."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce debug (optional) &8Enables/disables debug information for an event."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce reset /* /all &8Resets an event data for a player."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce enable/disable &8Enable or disables an event."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce call (optional)%variable1%=;%variableN%= (optional)player: (optional)silent:true &8Executes a 'call' event."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce item &8Save and remove items for some actions."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6/ce interrupt (optional) &8Stops the execution of actions for an event."));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', ""));
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7[ [ &8[&bConditionalEvents&8] &7] ]"));
+ }
+
+ @Override
+ public List onTabComplete(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
+ if (sender.isOp() || sender.hasPermission("conditionalevents.admin")) {
+ if (args.length == 1) {
+ return getStrings(args);
+ } else {
+ if ((args[0].equalsIgnoreCase("debug") || args[0].equalsIgnoreCase("enable")
+ || args[0].equalsIgnoreCase("disable") || args[0].equalsIgnoreCase("interrupt"))
+ && args.length == 2) {
+ return getEventsCompletions(args, 1, false, null);
+ } else if (args[0].equalsIgnoreCase("call") && args.length == 2) {
+ return getEventsCompletions(args, 1, false, EventType.CALL);
+ } else if (args[0].equalsIgnoreCase("reset") && args.length == 3) {
+ return getEventsCompletions(args, 2, true, null);
+ } else if (args[0].equalsIgnoreCase("reset") && args.length == 2) {
+ List completions = new ArrayList<>();
+ for (Player p : Bukkit.getOnlinePlayers()) {
+ if (args[1].isEmpty() || p.getName().toLowerCase().startsWith(args[1].toLowerCase())) {
+ completions.add(p.getName());
+ }
+ }
+ if (args[1].isEmpty() || "*".startsWith(args[1].toLowerCase())) {
+ completions.add("*");
+ }
+ return completions;
+ } else if (args[0].equalsIgnoreCase("item") && args.length == 2) {
+ List completions = new ArrayList<>();
+ completions.add("remove");
+ completions.add("save");
+ return completions;
+ } else if (args.length == 3 && args[0].equalsIgnoreCase("item") && args[1].equalsIgnoreCase("remove")) {
+ return getSavedItemsCompletions(args, 2);
+ }
+ }
+ }
+
+
+ return null;
+ }
+
+ private static @NotNull List getStrings(String[] args) {
+ List completions = new ArrayList<>();
+ List commands = new ArrayList<>();
+ commands.add("help");
+ commands.add("reload");
+ commands.add("verify");
+ commands.add("reset");
+ commands.add("debug");
+ commands.add("enable");
+ commands.add("disable");
+ commands.add("call");
+ commands.add("item");
+ commands.add("interrupt");
+ for (String c : commands) {
+ if (args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) {
+ completions.add(c);
+ }
+ }
+ return completions;
+ }
+
+ public List getEventsCompletions(String[] args, int argEventPos, boolean addAll, EventType eventType) {
+ List completions = new ArrayList<>();
+
+ String argEvent = args[argEventPos];
+
+ if (addAll) {
+ if (argEvent.isEmpty() || "all".startsWith(argEvent.toLowerCase())) {
+ completions.add("all");
+ }
+ }
+
+ ArrayList events = plugin.getEventsManager().getEvents();
+ for (CEEvent event : events) {
+ if (argEvent.isEmpty() || event.getName().toLowerCase().startsWith(argEvent.toLowerCase())) {
+ if (eventType != null) {
+ if (event.getEventType().equals(eventType)) {
+ completions.add(event.getName());
+ }
+ } else {
+ completions.add(event.getName());
+ }
+ }
+ }
+
+ if (completions.isEmpty()) {
+ return null;
+ }
+ return completions;
+ }
+
+ public List getSavedItemsCompletions(String[] args, int argItemPos) {
+ List completions = new ArrayList<>();
+
+ String argItem = args[argItemPos];
+ for (Map.Entry entry : plugin.getSavedItemsManager().getSavedItems().entrySet()) {
+ if (argItem.isEmpty() || entry.getKey().toLowerCase().startsWith(argItem.toLowerCase())) {
+ completions.add(entry.getKey());
+ }
+ }
+
+ if (completions.isEmpty()) {
+ return null;
+ }
+ return completions;
+ }
+}
diff --git a/src/main/java/ce/ajneb97/configs/ConfigsManager.java b/src/main/java/ce/ajneb97/configs/ConfigsManager.java
index d3b30b2..a9228b4 100644
--- a/src/main/java/ce/ajneb97/configs/ConfigsManager.java
+++ b/src/main/java/ce/ajneb97/configs/ConfigsManager.java
@@ -2,33 +2,36 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.configs.model.CommonConfig;
-import ce.ajneb97.managers.RepetitiveManager;
+import ce.ajneb97.manager.RepetitiveManager;
import ce.ajneb97.model.CEEvent;
import ce.ajneb97.model.CustomEventProperties;
import ce.ajneb97.model.EventType;
import ce.ajneb97.model.actions.*;
import org.bukkit.configuration.file.FileConfiguration;
+import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
+@SuppressWarnings("DataFlowIssue")
public class ConfigsManager {
- private MainConfigManager mainConfigManager;
- private PlayersConfigsManager playerConfigsManager;
- private EventsFolderConfigManager eventsFolderConfigManager;
- private SavedItemsConfigManager savedItemsConfigManager;
- private ConditionalEvents plugin;
- public ConfigsManager(ConditionalEvents plugin){
+ private final MainConfigManager mainConfigManager;
+ private final PlayerConfigsManager playerConfigsManager;
+ private final EventsFolderConfigManager eventsFolderConfigManager;
+ private final SavedItemsConfigManager savedItemsConfigManager;
+ private final ConditionalEvents plugin;
+
+ public ConfigsManager(ConditionalEvents plugin) {
mainConfigManager = new MainConfigManager(plugin);
- playerConfigsManager = new PlayersConfigsManager(plugin,"players");
- eventsFolderConfigManager = new EventsFolderConfigManager(plugin,"events");
+ playerConfigsManager = new PlayerConfigsManager(plugin, "players");
+ eventsFolderConfigManager = new EventsFolderConfigManager(plugin, "events");
savedItemsConfigManager = new SavedItemsConfigManager(plugin);
this.plugin = plugin;
}
- public void configure(){
+ public void configure() {
mainConfigManager.configure();
playerConfigsManager.configure();
eventsFolderConfigManager.configure();
@@ -40,7 +43,7 @@ public MainConfigManager getMainConfigManager() {
return mainConfigManager;
}
- public PlayersConfigsManager getPlayerConfigsManager() {
+ public PlayerConfigsManager getPlayerConfigsManager() {
return playerConfigsManager;
}
@@ -48,21 +51,21 @@ public SavedItemsConfigManager getSavedItemsConfigManager() {
return savedItemsConfigManager;
}
- public void configureEvents(){
+ public void configureEvents() {
ArrayList ceConfigs = getEventConfigs();
ArrayList events = new ArrayList<>();
- for(CommonConfig configFile : ceConfigs){
+ for (CommonConfig configFile : ceConfigs) {
FileConfiguration config = configFile.getConfig();
- if(config.contains("Events")){
- for(String key : config.getConfigurationSection("Events").getKeys(false)){
- String path = "Events."+key;
+ if (config.contains("Events")) {
+ for (String key : config.getConfigurationSection("Events").getKeys(false)) {
+ String path = "Events." + key;
String filePath = configFile.getPath();
- List conditions = new ArrayList();
- List actionGroups = new ArrayList();
+ List conditions = new ArrayList<>();
+ List actionGroups = new ArrayList<>();
boolean oneTime = false;
String ignoreWithPermission = null;
long cooldown = 0;
@@ -70,117 +73,108 @@ public void configureEvents(){
boolean ignoreIfCancelled = false;
boolean allowMathFormulasInConditions = false;
- List preventCooldownActivationActionGroups = new ArrayList();
- List preventOneTimeActivationActionGroups = new ArrayList();
+ List preventCooldownActivationActionGroups = new ArrayList<>();
+ List preventOneTimeActivationActionGroups = new ArrayList<>();
CEEvent event = new CEEvent(key);
- EventType eventType = null;
- try{
- eventType = EventType.valueOf(config.getString(path+".type").toUpperCase());
- }catch(Exception e){
+ EventType eventType;
+ try {
+ eventType = EventType.valueOf(config.getString(path + ".type").toUpperCase());
+ } catch (Exception e) {
continue;
}
- if(config.contains(path+".conditions")) {
- conditions = config.getStringList(path+".conditions");
+ if (config.contains(path + ".conditions")) {
+ conditions = config.getStringList(path + ".conditions");
}
- if(config.contains(path+".actions")) {
- for(String groupName : config.getConfigurationSection(path+".actions").getKeys(false)) {
- List actionsList = config.getStringList(path+".actions."+groupName);
- List ceActions = new ArrayList();
- for(String action : actionsList){
+ if (config.contains(path + ".actions")) {
+ for (String groupName : config.getConfigurationSection(path + ".actions").getKeys(false)) {
+ List actionsList = config.getStringList(path + ".actions." + groupName);
+ List ceActions = new ArrayList<>();
+ for (String action : actionsList) {
ActionTargeter targeter = new ActionTargeter(ActionTargeterType.NORMAL);
- if(action.startsWith("to_all: ")){
+ if (action.startsWith("to_all: ")) {
// to_all: message: hi
- action = action.replace("to_all: ","");
+ action = action.replace("to_all: ", "");
targeter.setType(ActionTargeterType.TO_ALL);
- }else if(action.startsWith("to_target: ")){
+ } else if (action.startsWith("to_target: ")) {
// to_target: message: hi
- action = action.replace("to_target: ","");
+ action = action.replace("to_target: ", "");
targeter.setType(ActionTargeterType.TO_TARGET);
- }else if(action.startsWith("to_world: ") || action.startsWith("to_range: ")
- || action.startsWith("to_condition: ") || action.startsWith("to_player: ")){
+ } else if (action.startsWith("to_world: ") || action.startsWith("to_range: ")
+ || action.startsWith("to_condition: ") || action.startsWith("to_player: ")) {
// to_world: parkour: message: hi
// to_range: 5;true: message: hi
// to_condition: toConditionGroup1: message: hi
// to_player: : message: hi
- ActionTargeterType targeterType = null;
- if(action.startsWith("to_world: ")){
- targeterType = ActionTargeterType.TO_WORLD;
- }else if(action.startsWith("to_range: ")){
- targeterType = ActionTargeterType.TO_RANGE;
- }else if(action.startsWith("to_condition: ")){
- targeterType = ActionTargeterType.TO_CONDITION;
- }else if(action.startsWith("to_player: ")){
- targeterType = ActionTargeterType.TO_PLAYER;
- }
+ ActionTargeterType targeterType = getActionTargeterType(action);
targeter.setType(targeterType);
- action = action.replace(targeterType.name().toLowerCase()+": ","");
+ action = action.replace(targeterType.name().toLowerCase() + ": ", "");
String[] sep = action.split(" ");
- String parameter = sep[0].substring(0,sep[0].length()-1);
- action = action.replace(sep[0]+" ", "");
+ String parameter = sep[0].substring(0, sep[0].length() - 1);
+ action = action.replace(sep[0] + " ", "");
targeter.setParameter(parameter);
}
- String actionTypeText = null;
- ActionType actionType = null;
+ String actionTypeText;
+ ActionType actionType;
String actionApiType = null;
- try{
- if(action.equalsIgnoreCase("close_inventory")
- || action.equalsIgnoreCase("clear_inventory")){
+ try {
+ if (action.equalsIgnoreCase("close_inventory")
+ || action.equalsIgnoreCase("clear_inventory")) {
actionTypeText = action;
- }else{
- actionTypeText = action.substring(0,action.indexOf(":"));
+ } else {
+ actionTypeText = action.substring(0, action.indexOf(":"));
}
//Check API actions
- if(plugin.getApiManager().getApiAction(actionTypeText) != null){
+ if (plugin.getApiManager().getApiAction(actionTypeText) != null) {
actionType = ActionType.API;
actionApiType = actionTypeText;
- }else{
+ } else {
actionType = ActionType.valueOf(actionTypeText.toUpperCase());
}
- }catch(Exception e){
+ } catch (Exception e) {
continue;
}
- String actionLine = action.replace(actionTypeText+": ","");
+ String actionLine = action.replace(actionTypeText + ": ", "");
- CEAction ceAction = new CEAction(actionType,actionLine,targeter);
+ CEAction ceAction = new CEAction(actionType, actionLine, targeter);
ceAction.setApiType(actionApiType);
ceActions.add(ceAction);
}
- ActionGroup actionGroup = new ActionGroup(groupName,ceActions);
+ ActionGroup actionGroup = new ActionGroup(groupName, ceActions);
actionGroups.add(actionGroup);
}
}
- if(config.contains(path+".cooldown")) {
- cooldown = Long.valueOf(config.getString(path+".cooldown"));
+ if (config.contains(path + ".cooldown")) {
+ cooldown = Long.parseLong(config.getString(path + ".cooldown"));
}
- if(config.contains(path+".ignore_with_permission")) {
- ignoreWithPermission = config.getString(path+".ignore_with_permission");
+ if (config.contains(path + ".ignore_with_permission")) {
+ ignoreWithPermission = config.getString(path + ".ignore_with_permission");
}
- if(config.contains(path+".one_time")) {
- oneTime = Boolean.valueOf(config.getString(path+".one_time"));
+ if (config.contains(path + ".one_time")) {
+ oneTime = Boolean.parseBoolean(config.getString(path + ".one_time"));
}
- if(config.contains(path+".enabled")) {
- enabled = Boolean.valueOf(config.getString(path+".enabled"));
+ if (config.contains(path + ".enabled")) {
+ enabled = Boolean.parseBoolean(config.getString(path + ".enabled"));
}
- if(config.contains(path+".ignore_if_cancelled")) {
- ignoreIfCancelled = Boolean.valueOf(config.getString(path+".ignore_if_cancelled"));
+ if (config.contains(path + ".ignore_if_cancelled")) {
+ ignoreIfCancelled = Boolean.parseBoolean(config.getString(path + ".ignore_if_cancelled"));
}
- if(config.contains(path+".prevent_cooldown_activation")){
- preventCooldownActivationActionGroups = config.getStringList(path+".prevent_cooldown_activation");
+ if (config.contains(path + ".prevent_cooldown_activation")) {
+ preventCooldownActivationActionGroups = config.getStringList(path + ".prevent_cooldown_activation");
}
- if(config.contains(path+".prevent_one_time_activation")){
- preventOneTimeActivationActionGroups = config.getStringList(path+".prevent_one_time_activation");
+ if (config.contains(path + ".prevent_one_time_activation")) {
+ preventOneTimeActivationActionGroups = config.getStringList(path + ".prevent_one_time_activation");
}
- if(config.contains(path+".allow_math_formulas_in_conditions")) {
- allowMathFormulasInConditions = Boolean.valueOf(config.getString(path+".allow_math_formulas_in_conditions"));
+ if (config.contains(path + ".allow_math_formulas_in_conditions")) {
+ allowMathFormulasInConditions = Boolean.parseBoolean(config.getString(path + ".allow_math_formulas_in_conditions"));
}
event.setFilePath(filePath);
@@ -196,27 +190,27 @@ public void configureEvents(){
event.setPreventOneTimeActivationActionGroups(preventOneTimeActivationActionGroups);
event.setAllowMathFormulasInConditions(allowMathFormulasInConditions);
- if(event.getEventType().equals(EventType.CUSTOM)) {
- String eventPackage = config.getString(path+".custom_event_data.event");
+ if (event.getEventType().equals(EventType.CUSTOM)) {
+ String eventPackage = config.getString(path + ".custom_event_data.event");
String playerVariable = null;
- if(config.contains(path+".custom_event_data.player_variable")) {
- playerVariable = config.getString(path+".custom_event_data.player_variable");
+ if (config.contains(path + ".custom_event_data.player_variable")) {
+ playerVariable = config.getString(path + ".custom_event_data.player_variable");
}
- List variablesToCapture = new ArrayList();
- if(config.contains(path+".custom_event_data.variables_to_capture")) {
- variablesToCapture = config.getStringList(path+".custom_event_data.variables_to_capture");
+ List variablesToCapture = new ArrayList<>();
+ if (config.contains(path + ".custom_event_data.variables_to_capture")) {
+ variablesToCapture = config.getStringList(path + ".custom_event_data.variables_to_capture");
}
event.setCustomEventProperties(new CustomEventProperties(
- eventPackage,playerVariable,variablesToCapture
+ eventPackage, playerVariable, variablesToCapture
));
}
- if(event.getEventType().equals(EventType.REPETITIVE) || event.getEventType().equals(EventType.REPETITIVE_SERVER)){
- int repetitiveTime = config.getInt(path+".repetitive_time");
+ if (event.getEventType().equals(EventType.REPETITIVE) || event.getEventType().equals(EventType.REPETITIVE_SERVER)) {
+ int repetitiveTime = config.getInt(path + ".repetitive_time");
RepetitiveManager repetitiveManager = new RepetitiveManager(plugin, event, repetitiveTime);
event.setRepetitiveManager(repetitiveManager);
- if(event.isEnabled()){
+ if (event.isEnabled()) {
repetitiveManager.start();
}
}
@@ -229,19 +223,33 @@ public void configureEvents(){
plugin.getEventsManager().setEvents(events);
}
- public void saveEvent(CEEvent event){
+ private static @Nullable ActionTargeterType getActionTargeterType(String action) {
+ ActionTargeterType targeterType = null;
+ if (action.startsWith("to_world: ")) {
+ targeterType = ActionTargeterType.TO_WORLD;
+ } else if (action.startsWith("to_range: ")) {
+ targeterType = ActionTargeterType.TO_RANGE;
+ } else if (action.startsWith("to_condition: ")) {
+ targeterType = ActionTargeterType.TO_CONDITION;
+ } else if (action.startsWith("to_player: ")) {
+ targeterType = ActionTargeterType.TO_PLAYER;
+ }
+ return targeterType;
+ }
+
+ public void saveEvent(CEEvent event) {
String eventName = event.getName();
String path = event.getFilePath();
CommonConfig commonConfig;
- if(path.equals("config.yml")){
+ if (path.equals("config.yml")) {
commonConfig = mainConfigManager.getConfigFile();
- }else{
- commonConfig = eventsFolderConfigManager.getConfigFile(path,true);
+ } else {
+ commonConfig = eventsFolderConfigManager.getConfigFile(path, true);
}
FileConfiguration config = commonConfig.getConfig();
- config.set("Events."+eventName+".enabled",event.isEnabled());
+ config.set("Events." + eventName + ".enabled", event.isEnabled());
commonConfig.saveConfig();
}
@@ -254,18 +262,18 @@ public ArrayList getEventConfigs() {
return configs;
}
- public void endRepetitiveEvents(){
- for(CEEvent event : plugin.getEventsManager().getEvents()){
- if(event.getRepetitiveManager() != null){
- event.getRepetitiveManager().end();
+ public void endRepetitiveEvents() {
+ for (CEEvent event : plugin.getEventsManager().getEvents()) {
+ if (event.getRepetitiveManager() != null) {
+ event.getRepetitiveManager().stop();
}
}
}
- public boolean reload(){
+ public boolean reload() {
endRepetitiveEvents();
- if(!mainConfigManager.reloadConfig()){
+ if (!mainConfigManager.reloadConfig()) {
return false;
}
diff --git a/src/main/java/ce/ajneb97/configs/DataFolderConfigManager.java b/src/main/java/ce/ajneb97/configs/DataFolderConfigManager.java
index 488ea4b..f3fa3ce 100644
--- a/src/main/java/ce/ajneb97/configs/DataFolderConfigManager.java
+++ b/src/main/java/ce/ajneb97/configs/DataFolderConfigManager.java
@@ -6,11 +6,13 @@
import java.io.File;
import java.util.ArrayList;
+@SuppressWarnings("ResultOfMethodCallIgnored")
public abstract class DataFolderConfigManager {
+
protected String folderName;
protected ConditionalEvents plugin;
- public DataFolderConfigManager(ConditionalEvents plugin, String folderName){
+ public DataFolderConfigManager(ConditionalEvents plugin, String folderName) {
this.plugin = plugin;
this.folderName = folderName;
}
@@ -20,24 +22,23 @@ public void configure() {
loadConfigs();
}
- public void createFolder(){
+ public void createFolder() {
File folder;
try {
folder = new File(plugin.getDataFolder() + File.separator + folderName);
- if(!folder.exists()){
+ if (!folder.exists()) {
folder.mkdirs();
createFiles();
}
- } catch(SecurityException e) {
- folder = null;
+ } catch (SecurityException ignored) {
}
}
- public CommonConfig getConfigFile(String pathName,boolean create) {
+ public CommonConfig getConfigFile(String pathName, boolean create) {
String pathFile = plugin.getDataFolder() + File.separator + folderName;
File folder = new File(pathFile);
File file = new File(folder, pathName);
- if(!file.exists() && !create) {
+ if (!file.exists() && !create) {
return null;
}
@@ -46,12 +47,15 @@ public CommonConfig getConfigFile(String pathName,boolean create) {
return commonConfig;
}
- public ArrayList getConfigs(){
+ public ArrayList getConfigs() {
ArrayList configs = new ArrayList<>();
String pathFile = plugin.getDataFolder() + File.separator + folderName;
File folder = new File(pathFile);
File[] listOfFiles = folder.listFiles();
+
+ if (listOfFiles == null) return configs;
+
for (File file : listOfFiles) {
if (file.isFile()) {
String pathName = file.getName();
@@ -68,5 +72,5 @@ public ArrayList getConfigs(){
public abstract void loadConfigs();
- public abstract void saveConfigs();
+ public abstract void saveAllData();
}
diff --git a/src/main/java/ce/ajneb97/configs/EventsFolderConfigManager.java b/src/main/java/ce/ajneb97/configs/EventsFolderConfigManager.java
index 9480a1a..2b60c28 100644
--- a/src/main/java/ce/ajneb97/configs/EventsFolderConfigManager.java
+++ b/src/main/java/ce/ajneb97/configs/EventsFolderConfigManager.java
@@ -1,10 +1,9 @@
package ce.ajneb97.configs;
-
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.configs.model.CommonConfig;
-public class EventsFolderConfigManager extends DataFolderConfigManager{
+public class EventsFolderConfigManager extends DataFolderConfigManager {
public EventsFolderConfigManager(ConditionalEvents plugin, String folderName) {
super(plugin, folderName);
@@ -12,7 +11,7 @@ public EventsFolderConfigManager(ConditionalEvents plugin, String folderName) {
@Override
public void createFiles() {
- new CommonConfig("more_events.yml",plugin,folderName,false).registerConfig();
+ new CommonConfig("events.yml", plugin, folderName, false).registerConfig();
}
@Override
@@ -21,9 +20,7 @@ public void loadConfigs() {
}
@Override
- public void saveConfigs() {
+ public void saveAllData() {
}
-
-
}
diff --git a/src/main/java/ce/ajneb97/configs/MainConfigManager.java b/src/main/java/ce/ajneb97/configs/MainConfigManager.java
index c1feccb..fdf338c 100644
--- a/src/main/java/ce/ajneb97/configs/MainConfigManager.java
+++ b/src/main/java/ce/ajneb97/configs/MainConfigManager.java
@@ -2,7 +2,7 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.configs.model.CommonConfig;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.model.ToConditionGroup;
import org.bukkit.configuration.file.FileConfiguration;
@@ -12,11 +12,13 @@
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
+@SuppressWarnings("DataFlowIssue")
public class MainConfigManager {
- private CommonConfig configFile;
- private ConditionalEvents plugin;
+ private final CommonConfig configFile;
+ private final ConditionalEvents plugin;
private boolean updateNotifications;
private boolean debugActions;
@@ -24,14 +26,15 @@ public class MainConfigManager {
private boolean itemMetaVariableEnabled;
private boolean useMiniMessage;
private ArrayList toConditionGroups;
- public MainConfigManager(ConditionalEvents plugin){
+
+ public MainConfigManager(ConditionalEvents plugin) {
this.plugin = plugin;
- this.configFile = new CommonConfig("config.yml",plugin,null,false);
+ this.configFile = new CommonConfig("config.yml", plugin, null, false);
configFile.registerConfig();
checkMessagesUpdate();
}
- public void configure(){
+ public void configure() {
FileConfiguration config = configFile.getConfig();
updateNotifications = config.getBoolean("Config.update_notification");
@@ -41,9 +44,9 @@ public void configure(){
useMiniMessage = config.getBoolean("Config.use_minimessage");
toConditionGroups = new ArrayList<>();
String path = "Config.to_condition_groups";
- if(config.contains(path)){
- for(String key : config.getConfigurationSection(path).getKeys(false)){
- ToConditionGroup group = new ToConditionGroup(key,config.getStringList(path+"."+key));
+ if (config.contains(path)) {
+ for (String key : config.getConfigurationSection(path).getKeys(false)) {
+ ToConditionGroup group = new ToConditionGroup(key, config.getStringList(path + "." + key));
toConditionGroups.add(group);
}
}
@@ -61,53 +64,53 @@ public void configure(){
this.plugin.setMessagesManager(msgManager);
}
- public boolean reloadConfig(){
- if(!configFile.reloadConfig()){
+ public boolean reloadConfig() {
+ if (!configFile.reloadConfig()) {
return false;
}
configure();
return true;
}
- public FileConfiguration getConfig(){
+ public FileConfiguration getConfig() {
return configFile.getConfig();
}
- public CommonConfig getConfigFile(){
+ public CommonConfig getConfigFile() {
return this.configFile;
}
- public void saveConfig(){
+ public void saveConfig() {
configFile.saveConfig();
}
- public void checkMessagesUpdate(){
+ public void checkMessagesUpdate() {
Path pathConfig = Paths.get(configFile.getRoute());
- try{
+ try {
String text = new String(Files.readAllBytes(pathConfig));
- if(!text.contains("use_minimessage:")){
- getConfig().set("Config.use_minimessage",false);
+ if (!text.contains("use_minimessage:")) {
+ getConfig().set("Config.use_minimessage", false);
configFile.saveConfig();
}
- if(!text.contains("eventIsNotEnabled:")){
+ if (!text.contains("eventIsNotEnabled:")) {
getConfig().set("Messages.eventIsNotEnabled", "&cThat event is not enabled.");
saveConfig();
}
- if(!text.contains("item_meta_variable_enabled:")){
+ if (!text.contains("item_meta_variable_enabled:")) {
getConfig().set("Config.item_meta_variable_enabled", false);
saveConfig();
}
- if(!text.contains("commandInterruptError:")){
+ if (!text.contains("commandInterruptError:")) {
getConfig().set("Messages.commandInterruptError", "&cUse &7/ce interrupt (optional)");
getConfig().set("Messages.commandInterruptCorrect", "&aActions of event &7%event% &ainterrupted.");
getConfig().set("Messages.commandInterruptCorrectPlayer", "&aActions of event &7%event% &ainterrupted for player &7%player%&a.");
saveConfig();
}
- if(!text.contains("variable_replacement:")){
+ if (!text.contains("variable_replacement:")) {
getConfig().set("Config.experimental.variable_replacement", false);
saveConfig();
}
- if(!text.contains("commandItemError:")){
+ if (!text.contains("commandItemError:")) {
getConfig().set("Messages.commandItemError", "&cUse &7/ce item ");
getConfig().set("Messages.savedItemDoesNotExists", "&cThat saved item doesn't exists.");
getConfig().set("Messages.savedItemRemoved", "&aItem &7%name% &aremoved.");
@@ -116,55 +119,55 @@ public void checkMessagesUpdate(){
getConfig().set("Messages.savedItemAdded", "&aItem &7%name% &asaved.");
saveConfig();
}
- if(!text.contains("commandCallCorrectPlayer:")){
+ if (!text.contains("commandCallCorrectPlayer:")) {
getConfig().set("Messages.commandCallCorrectPlayer", "&aEvent &7%event% &asuccessfully executed for player &7%player%&a.");
saveConfig();
}
- if(!text.contains("playerNotOnline:")){
+ if (!text.contains("playerNotOnline:")) {
getConfig().set("Messages.playerNotOnline", "&cThat player is not online.");
saveConfig();
}
- if(!text.contains("debugEnabledPlayer:")){
+ if (!text.contains("debugEnabledPlayer:")) {
getConfig().set("Messages.debugEnabledPlayer", "&aDebug now enabled for event &7%event% &aand player &7%player%&a!");
getConfig().set("Messages.debugDisabledPlayer", "&aDebug disabled for event &7%event% &aand player &7%player%&a!");
getConfig().set("Config.debug_actions", true);
saveConfig();
}
- if(!text.contains("eventDataResetForAllPlayers:")){
+ if (!text.contains("eventDataResetForAllPlayers:")) {
getConfig().set("Messages.eventDataResetForAllPlayers", "&aData reset for &eall players &aon event &e%event%&a!");
getConfig().set("Messages.eventDataResetAllForAllPlayers", "&aAll player data reset.");
saveConfig();
}
- if(!text.contains("commandCallError:")){
+ if (!text.contains("commandCallError:")) {
getConfig().set("Messages.commandCallError", "&cUse &7/ce call (optional)%variable1%=;%variableN%=");
getConfig().set("Messages.commandCallInvalidEvent", "&cYou can only execute a CALL event.");
getConfig().set("Messages.commandCallCorrect", "&aEvent &7%event% &asuccessfully executed.");
getConfig().set("Messages.commandCallFailed", "&cEvent &7%event% &ccould not be executed. Maybe a format error?");
saveConfig();
}
- if(!text.contains("register_commands:")){
+ if (!text.contains("register_commands:")) {
List commands = new ArrayList<>();
getConfig().set("Config.register_commands", commands);
saveConfig();
}
- if(!text.contains("placeholderAPICooldownReady:")){
+ if (!text.contains("placeholderAPICooldownReady:")) {
getConfig().set("Messages.placeholderAPICooldownReady", "Ready!");
getConfig().set("Messages.placeholderAPICooldownNameError", "No event with that name!");
saveConfig();
}
- if(!text.contains("eventDataResetAll:")){
+ if (!text.contains("eventDataResetAll:")) {
getConfig().set("Messages.eventDataResetAll", "&aAll data reset for player &e%player%&a!");
saveConfig();
}
- if(!text.contains("eventDataReset:")){
+ if (!text.contains("eventDataReset:")) {
getConfig().set("Messages.eventDataReset", "&aData reset for player &e%player% &aon event &e%event%&a!");
saveConfig();
}
- if(!text.contains("data_save_time:")){
+ if (!text.contains("data_save_time:")) {
getConfig().set("Config.data_save_time", 5);
saveConfig();
}
- if(!text.contains("commandDebugError:")){
+ if (!text.contains("commandDebugError:")) {
getConfig().set("Messages.commandDebugError", "&cUse &7/ce debug ");
getConfig().set("Messages.debugEnabled", "&aDebug now enabled for event &7%event%&a!");
getConfig().set("Messages.debugDisabled", "&aDebug disabled for event &7%event%&a!");
@@ -172,8 +175,8 @@ public void checkMessagesUpdate(){
getConfig().set("Messages.playerDoesNotExists", "&cThat player doesn''t have any data.");
saveConfig();
}
- }catch(IOException e){
- e.printStackTrace();
+ } catch (IOException e) {
+ plugin.getLogger().log(Level.WARNING, "Error while checking messages update.", e);
}
}
@@ -185,9 +188,9 @@ public boolean isDebugActions() {
return debugActions;
}
- public ToConditionGroup getToConditionGroup(String name){
- for(ToConditionGroup group : toConditionGroups){
- if(group.getName().equals(name)) {
+ public ToConditionGroup getToConditionGroup(String name) {
+ for (ToConditionGroup group : toConditionGroups) {
+ if (group.getName().equals(name)) {
return group;
}
}
diff --git a/src/main/java/ce/ajneb97/configs/PlayerConfigsManager.java b/src/main/java/ce/ajneb97/configs/PlayerConfigsManager.java
new file mode 100644
index 0000000..d0efbc5
--- /dev/null
+++ b/src/main/java/ce/ajneb97/configs/PlayerConfigsManager.java
@@ -0,0 +1,119 @@
+package ce.ajneb97.configs;
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.configs.model.CommonConfig;
+import ce.ajneb97.model.player.EventData;
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+import org.bukkit.configuration.file.FileConfiguration;
+
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicReference;
+
+@SuppressWarnings("DataFlowIssue")
+public class PlayerConfigsManager extends DataFolderConfigManager {
+
+ private final boolean isFolia;
+
+ public PlayerConfigsManager(ConditionalEvents plugin, String folderName) {
+ super(plugin, folderName);
+ this.isFolia = plugin.isFolia;
+ }
+
+ @Override
+ public void createFiles() {
+ }
+
+ @Override
+ public void loadConfigs() {
+ // No use for player config
+ }
+
+ public void loadData(UUID uuid, GenericCallback callback) {
+ Runnable asyncTask = () -> {
+ AtomicReference playerData = new AtomicReference<>();
+
+ CommonConfig playerConfig = getConfigFile(uuid + ".yml", false);
+ if (playerConfig != null) {
+ // If config exists
+ FileConfiguration config = playerConfig.getConfig();
+ String name = config.getString("name");
+
+ playerData.set(new PlayerData(uuid, name));
+ ArrayList eventData = new ArrayList<>();
+ if (config.contains("events")) {
+ for (String key : config.getConfigurationSection("events").getKeys(false)) {
+ boolean oneTime = config.getBoolean("events." + key + ".one_time");
+ long cooldown = config.getLong("events." + key + ".cooldown");
+ EventData event = new EventData(key, cooldown, oneTime);
+
+ eventData.add(event);
+ }
+ }
+ playerData.get().setEventData(eventData);
+ }
+
+ Runnable mainThreadTask = () -> callback.onDone(playerData.get());
+
+ if (isFolia) {
+ plugin.getServer().getGlobalRegionScheduler().execute(plugin, mainThreadTask);
+ } else {
+ plugin.getServer().getScheduler().runTask(plugin, mainThreadTask);
+ }
+ };
+
+ if (isFolia) {
+ plugin.getServer().getAsyncScheduler().runNow(plugin, scheduledTask -> asyncTask.run());
+ } else {
+ plugin.getServer().getScheduler().runTaskAsynchronously(plugin, asyncTask);
+ }
+ }
+
+ public void saveData(PlayerData player) {
+ String playerName = player.getName();
+ CommonConfig playerConfig = getConfigFile(player.getUuid().toString() + ".yml", true);
+ FileConfiguration players = playerConfig.getConfig();
+
+ players.set("name", playerName);
+ players.set("events", null);
+
+ for (EventData event : player.getEventData()) {
+ String path = "events." + event.getName();
+ players.set(path + ".one_time", event.isOneTime());
+ players.set(path + ".cooldown", event.getCooldown());
+ }
+
+ playerConfig.saveConfig();
+ }
+
+ @Override
+ public void saveAllData() {
+ Map players = plugin.getPlayerManager().getPlayers();
+ for (Map.Entry entry : players.entrySet()) {
+ PlayerData playerData = entry.getValue();
+ if (playerData.isModified()) {
+ saveData(playerData);
+ }
+ playerData.setModified(false);
+ }
+ }
+
+ public void resetDataForAllPlayers(String eventName) {
+ ArrayList configs = getConfigs();
+ for (CommonConfig commonConfig : configs) {
+ FileConfiguration config = commonConfig.getConfig();
+ if (eventName.equals("all")) {
+ config.set("events", null);
+ } else {
+ if (!config.contains("events." + eventName)) {
+ continue;
+ }
+ config.set("events." + eventName, null);
+ }
+
+ commonConfig.saveConfig();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/configs/PlayersConfigsManager.java b/src/main/java/ce/ajneb97/configs/PlayersConfigsManager.java
deleted file mode 100644
index 7e6a995..0000000
--- a/src/main/java/ce/ajneb97/configs/PlayersConfigsManager.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package ce.ajneb97.configs;
-
-import ce.ajneb97.ConditionalEvents;
-import ce.ajneb97.configs.model.CommonConfig;
-import ce.ajneb97.model.player.EventData;
-import ce.ajneb97.model.player.GenericCallback;
-import ce.ajneb97.model.player.PlayerData;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.scheduler.BukkitRunnable;
-
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.UUID;
-
-public class PlayersConfigsManager extends DataFolderConfigManager{
-
- public PlayersConfigsManager(ConditionalEvents plugin, String folderName) {
- super(plugin, folderName);
- }
-
- @Override
- public void createFiles() {
-
- }
-
- @Override
- public void loadConfigs() {
- // No use for player config
- }
-
- public void loadConfig(UUID uuid, GenericCallback callback){
- new BukkitRunnable(){
- @Override
- public void run() {
- PlayerData playerData = null;
- CommonConfig playerConfig = getConfigFile(uuid+".yml",false);
- if(playerConfig != null){
- // If config exists
- FileConfiguration config = playerConfig.getConfig();
- String name = config.getString("name");
-
- playerData = new PlayerData(uuid,name);
- ArrayList eventData = new ArrayList<>();
- if(config.contains("events")){
- for(String key : config.getConfigurationSection("events").getKeys(false)){
- boolean oneTime = config.getBoolean("events."+key+".one_time");
- long cooldown = config.getLong("events."+key+".cooldown");
- EventData event = new EventData(key,cooldown,oneTime);
-
- eventData.add(event);
- }
- }
- playerData.setEventData(eventData);
- }
-
- PlayerData finalPlayer = playerData;
-
- new BukkitRunnable(){
- @Override
- public void run() {
- callback.onDone(finalPlayer);
- }
- }.runTask(plugin);
- }
- }.runTaskAsynchronously(plugin);
- }
-
- public void saveConfig(PlayerData player){
- String playerName = player.getName();
- CommonConfig playerConfig = getConfigFile(player.getUuid().toString()+".yml",true);
- FileConfiguration players = playerConfig.getConfig();
-
- players.set("name", playerName);
- players.set("events", null);
-
- for(EventData event : player.getEventData()){
- String path = "events."+event.getName();
- players.set(path+".one_time", event.isOneTime());
- players.set(path+".cooldown", event.getCooldown());
- }
-
- playerConfig.saveConfig();
- }
-
- @Override
- public void saveConfigs() {
- Map players = plugin.getPlayerManager().getPlayers();
- for(Map.Entry entry : players.entrySet()) {
- PlayerData playerData = entry.getValue();
- if(playerData.isModified()){
- saveConfig(playerData);
- }
- playerData.setModified(false);
- }
- }
-
- public void resetDataForAllPlayers(String eventName){
- ArrayList configs = getConfigs();
- for(CommonConfig commonConfig : configs) {
- FileConfiguration config = commonConfig.getConfig();
- if(eventName.equals("all")){
- config.set("events",null);
- }else{
- if(!config.contains("events."+eventName)){
- continue;
- }
- config.set("events."+eventName,null);
- }
-
- commonConfig.saveConfig();
- }
- }
-}
diff --git a/src/main/java/ce/ajneb97/configs/SavedItemsConfigManager.java b/src/main/java/ce/ajneb97/configs/SavedItemsConfigManager.java
index f573b56..166a41f 100644
--- a/src/main/java/ce/ajneb97/configs/SavedItemsConfigManager.java
+++ b/src/main/java/ce/ajneb97/configs/SavedItemsConfigManager.java
@@ -4,63 +4,53 @@
import ce.ajneb97.configs.model.CommonConfig;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.inventory.ItemStack;
+
import java.util.HashMap;
import java.util.Map;
+@SuppressWarnings("DataFlowIssue")
public class SavedItemsConfigManager {
- private CommonConfig configFile;
- private ConditionalEvents plugin;
+ private final CommonConfig configFile;
+ private final ConditionalEvents plugin;
- public SavedItemsConfigManager(ConditionalEvents plugin){
+ public SavedItemsConfigManager(ConditionalEvents plugin) {
this.plugin = plugin;
- this.configFile = new CommonConfig("saved_items.yml",plugin,null,false);
+ this.configFile = new CommonConfig("saved_items.yml", plugin, null, false);
configFile.registerConfig();
}
- public void configure(){
+ public void configure() {
Map savedItems = new HashMap<>();
FileConfiguration config = configFile.getConfig();
- if(config.contains("items")){
- for(String key : config.getConfigurationSection("items").getKeys(false)){
- ItemStack item = config.getItemStack("items."+key);
- savedItems.put(key,item);
+ if (config.contains("items")) {
+ for (String key : config.getConfigurationSection("items").getKeys(false)) {
+ ItemStack item = config.getItemStack("items." + key);
+ savedItems.put(key, item);
}
}
plugin.getSavedItemsManager().setSavedItems(savedItems);
}
- public void saveItem(String name,ItemStack item){
+ public void saveItem(String name, ItemStack item) {
FileConfiguration config = configFile.getConfig();
- config.set("items."+name,item);
+ config.set("items." + name, item);
saveConfig();
}
- public void removeItem(String name){
+ public void removeItem(String name) {
FileConfiguration config = configFile.getConfig();
- config.set("items."+name,null);
+ config.set("items." + name, null);
saveConfig();
}
- public boolean reloadConfig(){
- if(!configFile.reloadConfig()){
- return false;
- }
- configure();
- return true;
- }
-
- public FileConfiguration getConfig(){
+ public FileConfiguration getConfig() {
return configFile.getConfig();
}
- public CommonConfig getConfigFile(){
- return this.configFile;
- }
-
- public void saveConfig(){
+ public void saveConfig() {
configFile.saveConfig();
}
}
diff --git a/src/main/java/ce/ajneb97/configs/model/CommonConfig.java b/src/main/java/ce/ajneb97/configs/model/CommonConfig.java
index 270f89e..65219a0 100644
--- a/src/main/java/ce/ajneb97/configs/model/CommonConfig.java
+++ b/src/main/java/ce/ajneb97/configs/model/CommonConfig.java
@@ -8,18 +8,19 @@
import java.io.File;
import java.io.IOException;
+@SuppressWarnings("ResultOfMethodCallIgnored")
public class CommonConfig {
- private String fileName;
+ private final String fileName;
private FileConfiguration fileConfiguration = null;
private File file = null;
private String route;
- private ConditionalEvents plugin;
- private String folderName;
- private boolean newFile;
+ private final ConditionalEvents plugin;
+ private final String folderName;
+ private final boolean newFile;
private boolean isFirstTime;
- public CommonConfig(String fileName, ConditionalEvents plugin, String folderName, boolean newFile){
+ public CommonConfig(String fileName, ConditionalEvents plugin, String folderName, boolean newFile) {
this.fileName = fileName;
this.plugin = plugin;
this.newFile = newFile;
@@ -27,31 +28,31 @@ public CommonConfig(String fileName, ConditionalEvents plugin, String folderName
this.isFirstTime = false;
}
- public String getPath(){
+ public String getPath() {
return this.fileName;
}
- public void registerConfig(){
- if(folderName != null){
- file = new File(plugin.getDataFolder() +File.separator + folderName,fileName);
- }else{
+ public void registerConfig() {
+ if (folderName != null) {
+ file = new File(plugin.getDataFolder() + File.separator + folderName, fileName);
+ } else {
file = new File(plugin.getDataFolder(), fileName);
}
route = file.getPath();
- if(!file.exists()){
+ if (!file.exists()) {
isFirstTime = true;
- if(newFile) {
+ if (newFile) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
- }else {
- if(folderName != null){
- plugin.saveResource(folderName+File.separator+fileName, false);
- }else{
+ } else {
+ if (folderName != null) {
+ plugin.saveResource(folderName + File.separator + fileName, false);
+ } else {
plugin.saveResource(fileName, false);
}
@@ -61,12 +62,11 @@ public void registerConfig(){
fileConfiguration = new YamlConfiguration();
try {
fileConfiguration.load(file);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InvalidConfigurationException e) {
+ } catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
}
+
public void saveConfig() {
try {
fileConfiguration.save(file);
@@ -84,16 +84,16 @@ public FileConfiguration getConfig() {
public boolean reloadConfig() {
if (fileConfiguration == null) {
- if(folderName != null){
- file = new File(plugin.getDataFolder() +File.separator + folderName, fileName);
- }else{
+ if (folderName != null) {
+ file = new File(plugin.getDataFolder() + File.separator + folderName, fileName);
+ } else {
file = new File(plugin.getDataFolder(), fileName);
}
}
fileConfiguration = YamlConfiguration.loadConfiguration(file);
- if(file != null) {
+ if (file != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(file);
fileConfiguration.setDefaults(defConfig);
}
@@ -104,11 +104,7 @@ public String getRoute() {
return route;
}
- public boolean isFirstTime() {
- return isFirstTime;
- }
-
- public void setFirstTime(boolean firstTime) {
- isFirstTime = firstTime;
+ public File getFile() {
+ return file;
}
}
diff --git a/src/main/java/ce/ajneb97/libs/actionbar/ActionBarAPI.java b/src/main/java/ce/ajneb97/libs/actionbar/ActionBarAPI.java
index 69102e8..c7843eb 100644
--- a/src/main/java/ce/ajneb97/libs/actionbar/ActionBarAPI.java
+++ b/src/main/java/ce/ajneb97/libs/actionbar/ActionBarAPI.java
@@ -4,7 +4,7 @@
import java.lang.reflect.Method;
import ce.ajneb97.api.ConditionalEventsAPI;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.utils.MiniMessageUtils;
import ce.ajneb97.utils.OtherUtils;
import org.bukkit.Bukkit;
@@ -14,96 +14,104 @@
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
-public class ActionBarAPI
-{
-
+@SuppressWarnings("deprecation")
+public class ActionBarAPI {
public static void sendActionBar(Player player, String message) {
- if(OtherUtils.isNew()) {
- if(ConditionalEventsAPI.getPlugin().getConfigsManager().getMainConfigManager().isUseMiniMessage()){
- MiniMessageUtils.actionbar(player,message);
- }else{
- player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MessagesManager.getLegacyColoredMessage(message)));
- }
- return;
- }
- message = MessagesManager.getLegacyColoredMessage(message);
- boolean useOldMethods = false;
- String nmsver = Bukkit.getServer().getClass().getPackage().getName();
- nmsver = nmsver.substring(nmsver.lastIndexOf(".") + 1);
- if ((nmsver.equalsIgnoreCase("v1_8_R1")) || (nmsver.startsWith("v1_7_"))) {
- useOldMethods = true;
- }
- if (!player.isOnline()) {
- return; // Player may have logged out
- }
+ if (OtherUtils.isNew()) {
+ if (ConditionalEventsAPI.getPlugin().getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
+ MiniMessageUtils.actionbar(player, message);
+ } else {
+ player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(MessagesManager.getLegacyColoredMessage(message)));
+ }
+ return;
+ }
+ message = MessagesManager.getLegacyColoredMessage(message);
+ boolean useOldMethods = false;
+ String nmsver = Bukkit.getServer().getClass().getPackage().getName();
+ nmsver = nmsver.substring(nmsver.lastIndexOf(".") + 1);
+ if ((nmsver.equalsIgnoreCase("v1_8_R1")) || (nmsver.startsWith("v1_7_"))) {
+ useOldMethods = true;
+ }
+ if (!player.isOnline()) {
+ return; // Player may have logged out
+ }
- try {
- Class> craftPlayerClass = Class.forName("org.bukkit.craftbukkit." + nmsver + ".entity.CraftPlayer");
- Object craftPlayer = craftPlayerClass.cast(player);
- Object packet;
- Class> packetPlayOutChatClass = Class.forName("net.minecraft.server." + nmsver + ".PacketPlayOutChat");
- Class> packetClass = Class.forName("net.minecraft.server." + nmsver + ".Packet");
- if (useOldMethods) {
- Class> chatSerializerClass = Class.forName("net.minecraft.server." + nmsver + ".ChatSerializer");
- Class> iChatBaseComponentClass = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
- Method m3 = chatSerializerClass.getDeclaredMethod("a", String.class);
- Object cbc = iChatBaseComponentClass.cast(m3.invoke(chatSerializerClass, "{\"text\": \"" + message + "\"}"));
- packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, byte.class}).newInstance(cbc, (byte) 2);
- } else {
- Class> chatComponentTextClass = Class.forName("net.minecraft.server." + nmsver + ".ChatComponentText");
- Class> iChatBaseComponentClass = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
- try {
+ try {
+ Class> craftPlayerClass = Class.forName("org.bukkit.craftbukkit." + nmsver + ".entity.CraftPlayer");
+ Object craftPlayer = craftPlayerClass.cast(player);
+ Object packet;
+ Class> packetPlayOutChatClass = Class.forName("net.minecraft.server." + nmsver + ".PacketPlayOutChat");
+ Class> packetClass = Class.forName("net.minecraft.server." + nmsver + ".Packet");
+ if (useOldMethods) {
+ Class> chatSerializerClass = Class.forName("net.minecraft.server." + nmsver + ".ChatSerializer");
+ Class> iChatBaseComponentClass = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
+ Method m3 = chatSerializerClass.getDeclaredMethod("a", String.class);
+ Object cbc = iChatBaseComponentClass.cast(m3.invoke(chatSerializerClass, "{\"text\": \"" + message + "\"}"));
+ packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, byte.class}).newInstance(cbc, (byte) 2);
+ } else {
+ Class> chatComponentTextClass = Class.forName("net.minecraft.server." + nmsver + ".ChatComponentText");
+ Class> iChatBaseComponentClass = Class.forName("net.minecraft.server." + nmsver + ".IChatBaseComponent");
+ try {
- Class> chatMessageTypeClass = Class.forName("net.minecraft.server." + nmsver + ".ChatMessageType");
- Object[] chatMessageTypes = chatMessageTypeClass.getEnumConstants();
- Object chatMessageType = null;
- for (Object obj : chatMessageTypes) {
- if (obj.toString().equals("GAME_INFO")) {
- chatMessageType = obj;
- }
- }
- Object chatCompontentText = chatComponentTextClass.getConstructor(new Class>[]{String.class}).newInstance(message);
- packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, chatMessageTypeClass}).newInstance(chatCompontentText, chatMessageType);
- } catch (ClassNotFoundException cnfe) {
- Object chatCompontentText = chatComponentTextClass.getConstructor(new Class>[]{String.class}).newInstance(message);
- packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, byte.class}).newInstance(chatCompontentText, (byte) 2);
- }
- }
- Method craftPlayerHandleMethod = craftPlayerClass.getDeclaredMethod("getHandle");
- Object craftPlayerHandle = craftPlayerHandleMethod.invoke(craftPlayer);
- Field playerConnectionField = craftPlayerHandle.getClass().getDeclaredField("playerConnection");
- Object playerConnection = playerConnectionField.get(craftPlayerHandle);
- Method sendPacketMethod = playerConnection.getClass().getDeclaredMethod("sendPacket", packetClass);
- sendPacketMethod.invoke(playerConnection, packet);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ Class> chatMessageTypeClass = Class.forName("net.minecraft.server." + nmsver + ".ChatMessageType");
+ Object[] chatMessageTypes = chatMessageTypeClass.getEnumConstants();
+ Object chatMessageType = null;
+ for (Object obj : chatMessageTypes) {
+ if (obj.toString().equals("GAME_INFO")) {
+ chatMessageType = obj;
+ }
+ }
+ Object chatCompontentText = chatComponentTextClass.getConstructor(new Class>[]{String.class}).newInstance(message);
+ packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, chatMessageTypeClass}).newInstance(chatCompontentText, chatMessageType);
+ } catch (ClassNotFoundException cnfe) {
+ Object chatCompontentText = chatComponentTextClass.getConstructor(new Class>[]{String.class}).newInstance(message);
+ packet = packetPlayOutChatClass.getConstructor(new Class>[]{iChatBaseComponentClass, byte.class}).newInstance(chatCompontentText, (byte) 2);
+ }
+ }
+ Method craftPlayerHandleMethod = craftPlayerClass.getDeclaredMethod("getHandle");
+ Object craftPlayerHandle = craftPlayerHandleMethod.invoke(craftPlayer);
+ Field playerConnectionField = craftPlayerHandle.getClass().getDeclaredField("playerConnection");
+ Object playerConnection = playerConnectionField.get(craftPlayerHandle);
+ Method sendPacketMethod = playerConnection.getClass().getDeclaredMethod("sendPacket", packetClass);
+ sendPacketMethod.invoke(playerConnection, packet);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
-
- public static void sendActionBar(final Player player, final String message, int duration,ConditionalEvents plugin) {
- sendActionBar(player, message);
-
- if (duration > 0) {
- // Sends empty message at the end of the duration. Allows messages shorter than 3 seconds, ensures precision.
- new BukkitRunnable() {
- @Override
- public void run() {
- sendActionBar(player, "");
- }
- }.runTaskLater(plugin, duration + 1);
- }
- // Re-sends the messages every 3 seconds so it doesn't go away from the player's screen.
- while (duration > 40) {
- duration -= 40;
- new BukkitRunnable() {
- @Override
- public void run() {
- sendActionBar(player, message);
- }
- }.runTaskLater(plugin, (long) duration);
- }
- }
+ public static void sendActionBar(final Player player, final String message, int duration, ConditionalEvents plugin) {
+ sendActionBar(player, message);
+
+ if (duration > 0) {
+ // Sends an empty message at the end of the duration. Allows messages shorter than 3 seconds, ensures precision.
+ if (plugin.isFolia) {
+ player.getScheduler().runDelayed(plugin, (t) -> sendActionBar(player, ""), null, duration + 1);
+ } else {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ sendActionBar(player, "");
+ }
+ }.runTaskLater(plugin, duration + 1);
+ }
+ }
+
+ // Re-sends the messages every 3 seconds so it doesn't go away from the player's screen.
+ while (duration > 40) {
+ duration -= 40;
+ final int finalDuration = duration;
+ if (plugin.isFolia) {
+ player.getScheduler().runDelayed(plugin, (t) -> sendActionBar(player, message), null, finalDuration);
+ } else {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ sendActionBar(player, message);
+ }
+ }.runTaskLater(plugin, finalDuration);
+ }
+ }
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorEquipEvent.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorEquipEvent.java
index 23552de..b08520a 100644
--- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorEquipEvent.java
+++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorEquipEvent.java
@@ -5,137 +5,139 @@
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
/**
* @author Arnah
* @since Jul 30, 2015
*/
-public final class ArmorEquipEvent extends PlayerEvent implements Cancellable{
+@SuppressWarnings("unused")
+public final class ArmorEquipEvent extends PlayerEvent implements Cancellable {
- private static final HandlerList handlers = new HandlerList();
- private boolean cancel = false;
- private final EquipMethod equipType;
- private final ArmorType type;
- private ItemStack oldArmorPiece, newArmorPiece;
+ private static final HandlerList handlers = new HandlerList();
+ private boolean cancel = false;
+ private final EquipMethod equipType;
+ private final ArmorType type;
+ private ItemStack oldArmorPiece, newArmorPiece;
- /**
- * @param player The player who put on / removed the armor.
- * @param type The ArmorType of the armor added
- * @param oldArmorPiece The ItemStack of the armor removed.
- * @param newArmorPiece The ItemStack of the armor added.
- */
- public ArmorEquipEvent(final Player player, final EquipMethod equipType, final ArmorType type, final ItemStack oldArmorPiece, final ItemStack newArmorPiece){
- super(player);
- this.equipType = equipType;
- this.type = type;
- this.oldArmorPiece = oldArmorPiece;
- this.newArmorPiece = newArmorPiece;
- }
+ /**
+ * @param player The player who put on / removed the armor.
+ * @param type The ArmorType of the armor added
+ * @param oldArmorPiece The ItemStack of the armor removed.
+ * @param newArmorPiece The ItemStack of the armor added.
+ */
+ public ArmorEquipEvent(final Player player, final EquipMethod equipType, final ArmorType type, final ItemStack oldArmorPiece, final ItemStack newArmorPiece) {
+ super(player);
+ this.equipType = equipType;
+ this.type = type;
+ this.oldArmorPiece = oldArmorPiece;
+ this.newArmorPiece = newArmorPiece;
+ }
- /**
- * Gets a list of handlers handling this event.
- *
- * @return A list of handlers handling this event.
- */
- public static HandlerList getHandlerList(){
- return handlers;
- }
+ /**
+ * Gets a list of handlers handling this event.
+ *
+ * @return A list of handlers handling this event.
+ */
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
- /**
- * Gets a list of handlers handling this event.
- *
- * @return A list of handlers handling this event.
- */
- @Override
- public final HandlerList getHandlers(){
- return handlers;
- }
+ /**
+ * Gets a list of handlers handling this event.
+ *
+ * @return A list of handlers handling this event.
+ */
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
- /**
- * Sets if this event should be cancelled.
- *
- * @param cancel If this event should be cancelled.
- */
- public final void setCancelled(final boolean cancel){
- this.cancel = cancel;
- }
+ /**
+ * Sets if this event should be canceled.
+ *
+ * @param cancel If this event should be canceled.
+ */
+ public void setCancelled(final boolean cancel) {
+ this.cancel = cancel;
+ }
- /**
- * Gets if this event is cancelled.
- *
- * @return If this event is cancelled
- */
- public final boolean isCancelled(){
- return cancel;
- }
+ /**
+ * Gets if this event is canceled.
+ *
+ * @return If this event is canceled
+ */
+ public boolean isCancelled() {
+ return cancel;
+ }
- public final ArmorType getType(){
- return type;
- }
+ public ArmorType getType() {
+ return type;
+ }
- /**
- * Returns the last equipped armor piece, could be a piece of armor, or null
- */
- public final ItemStack getOldArmorPiece(){
- return oldArmorPiece;
- }
+ /**
+ * Returns the last equipped armor piece, could be a piece of armor, or null
+ */
+ public ItemStack getOldArmorPiece() {
+ return oldArmorPiece;
+ }
- public final void setOldArmorPiece(final ItemStack oldArmorPiece){
- this.oldArmorPiece = oldArmorPiece;
- }
+ public void setOldArmorPiece(final ItemStack oldArmorPiece) {
+ this.oldArmorPiece = oldArmorPiece;
+ }
- /**
- * Returns the newly equipped armor, could be a piece of armor, or null
- */
- public final ItemStack getNewArmorPiece(){
- return newArmorPiece;
- }
+ /**
+ * Returns the newly equipped armor, could be a piece of armor, or null
+ */
+ public ItemStack getNewArmorPiece() {
+ return newArmorPiece;
+ }
- public final void setNewArmorPiece(final ItemStack newArmorPiece){
- this.newArmorPiece = newArmorPiece;
- }
+ public void setNewArmorPiece(final ItemStack newArmorPiece) {
+ this.newArmorPiece = newArmorPiece;
+ }
- /**
- * Gets the method used to either equip or unequip an armor piece.
- */
- public EquipMethod getMethod(){
- return equipType;
- }
+ /**
+ * Gets the method used to either equip or unequip an armor piece.
+ */
+ public EquipMethod getMethod() {
+ return equipType;
+ }
- public enum EquipMethod{// These have got to be the worst documentations ever.
- /**
- * When you shift click an armor piece to equip or unequip
- */
- SHIFT_CLICK,
- /**
- * When you drag and drop the item to equip or unequip
- */
- DRAG,
- /**
- * When you manually equip or unequip the item. Use to be DRAG
- */
- PICK_DROP,
- /**
- * When you right click an armor piece in the hotbar without the inventory open to equip.
- */
- HOTBAR,
- /**
- * When you press the hotbar slot number while hovering over the armor slot to equip or unequip
- */
- HOTBAR_SWAP,
- /**
- * When in range of a dispenser that shoots an armor piece to equip.
- * Requires the spigot version to have {@link org.bukkit.event.block.BlockDispenseArmorEvent} implemented.
- */
- DISPENSER,
- /**
- * When an armor piece is removed due to it losing all durability.
- */
- BROKE,
- /**
- * When you die causing all armor to unequip
- */
- DEATH,
- ;
- }
+ @SuppressWarnings("unused")
+ public enum EquipMethod {// These have got to be the worst documentations ever.
+ /**
+ * When you shift click an armor piece to equip or unequip
+ */
+ SHIFT_CLICK,
+ /**
+ * When you drag and drop the item to equip or unequip
+ */
+ DRAG,
+ /**
+ * When you manually equip or unequip the item. Use to be DRAG
+ */
+ PICK_DROP,
+ /**
+ * When you right-click an armor piece in the hotbar without the inventory open to equip.
+ */
+ HOTBAR,
+ /**
+ * When you press the hotbar slot number while hovering over the armor slot to equip or unequip
+ */
+ HOTBAR_SWAP,
+ /**
+ * When in range of a dispenser that shoots an armor piece to equip.
+ * Requires the spigot version to have {@link org.bukkit.event.block.BlockDispenseArmorEvent} implemented.
+ */
+ DISPENSER,
+ /**
+ * When an armor piece is removed due to it losing all durability.
+ */
+ BROKE,
+ /**
+ * When you die causing all armor to unequip
+ */
+ DEATH,
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
index d298e6b..72d888b 100644
--- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
+++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java
@@ -27,224 +27,226 @@
* @author Arnah
* @since Jul 30, 2015
*/
-public class ArmorListener implements Listener{
-
- private final List blockedMaterials;
-
- public ArmorListener(List blockedMaterials){
- this.blockedMaterials = blockedMaterials;
- }
- //Event Priority is highest because other plugins might cancel the events before we check.
-
- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public final void inventoryClick(final InventoryClickEvent e){
- boolean shift = false, numberkey = false;
- if(e.isCancelled()) return;
- if(e.getAction() == InventoryAction.NOTHING) return;// Why does this get called if nothing happens??
- if(e.getClick().equals(ClickType.SHIFT_LEFT) || e.getClick().equals(ClickType.SHIFT_RIGHT)){
- shift = true;
- }
- if(e.getClick().equals(ClickType.NUMBER_KEY)){
- numberkey = true;
- }
- if(e.getSlotType() != SlotType.ARMOR && e.getSlotType() != SlotType.QUICKBAR && e.getSlotType() != SlotType.CONTAINER) return;
- if(e.getClickedInventory() != null && !e.getClickedInventory().getType().equals(InventoryType.PLAYER)) return;
- if (!e.getInventory().getType().equals(InventoryType.CRAFTING) && !e.getInventory().getType().equals(InventoryType.PLAYER)) return;
- if(!(e.getWhoClicked() instanceof Player)) return;
- ArmorType newArmorType = ArmorType.matchType(shift ? e.getCurrentItem() : e.getCursor());
- if(!shift && newArmorType != null && e.getRawSlot() != newArmorType.getSlot()){
- // Used for drag and drop checking to make sure you aren't trying to place a helmet in the boots slot.
- return;
- }
- if(shift){
- newArmorType = ArmorType.matchType(e.getCurrentItem());
- if(newArmorType != null){
- boolean equipping = true;
- if(e.getRawSlot() == newArmorType.getSlot()){
- equipping = false;
- }
- if(newArmorType.equals(ArmorType.HELMET) && (equipping ? isAirOrNull(e.getWhoClicked().getInventory().getHelmet()) : !isAirOrNull(e.getWhoClicked().getInventory().getHelmet())) || newArmorType.equals(ArmorType.CHESTPLATE) && (equipping ? isAirOrNull(e.getWhoClicked().getInventory().getChestplate()) : !isAirOrNull(e.getWhoClicked().getInventory().getChestplate())) || newArmorType.equals(ArmorType.LEGGINGS) && (equipping ? isAirOrNull(e.getWhoClicked().getInventory().getLeggings()) : !isAirOrNull(e.getWhoClicked().getInventory().getLeggings())) || newArmorType.equals(ArmorType.BOOTS) && (equipping ? isAirOrNull(e.getWhoClicked().getInventory().getBoots()) : !isAirOrNull(e.getWhoClicked().getInventory().getBoots()))){
- ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) e.getWhoClicked(), EquipMethod.SHIFT_CLICK, newArmorType, equipping ? null : e.getCurrentItem(), equipping ? e.getCurrentItem() : null);
- Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
- if(armorEquipEvent.isCancelled()){
- e.setCancelled(true);
- }
- }
- }
- }else{
- ItemStack newArmorPiece = e.getCursor();
- ItemStack oldArmorPiece = e.getCurrentItem();
- if(numberkey){
- if(e.getClickedInventory().getType().equals(InventoryType.PLAYER)){// Prevents shit in the 2by2 crafting
- // e.getClickedInventory() == The players inventory
- // e.getHotBarButton() == key people are pressing to equip or unequip the item to or from.
- // e.getRawSlot() == The slot the item is going to.
- // e.getSlot() == Armor slot, can't use e.getRawSlot() as that gives a hotbar slot ;-;
- ItemStack hotbarItem = e.getClickedInventory().getItem(e.getHotbarButton());
- if(!isAirOrNull(hotbarItem)){// Equipping
- newArmorType = ArmorType.matchType(hotbarItem);
- newArmorPiece = hotbarItem;
- oldArmorPiece = e.getClickedInventory().getItem(e.getSlot());
- }else{// Unequipping
- newArmorType = ArmorType.matchType(!isAirOrNull(e.getCurrentItem()) ? e.getCurrentItem() : e.getCursor());
- }
- }
- }else{
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(isAirOrNull(e.getCursor()) && !isAirOrNull(e.getCurrentItem())){// unequip with no new item going into the slot.
- newArmorType = ArmorType.matchType(e.getCurrentItem());
- }
- if(ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1)){
- ItemStack offhandItem = e.getWhoClicked().getInventory().getItemInOffHand();
- if(e.getSlotType() == SlotType.ARMOR && !isAirOrNull(offhandItem)){
- ArmorType offhandArmorType = ArmorType.matchType(offhandItem);
- if(offhandArmorType != null){
- newArmorType = offhandArmorType;
- newArmorPiece = offhandItem;
- }
- }
- }
- }
- if(newArmorType != null && e.getRawSlot() == newArmorType.getSlot()){
- EquipMethod method = EquipMethod.PICK_DROP;
- if(e.getAction().equals(InventoryAction.HOTBAR_SWAP) || numberkey) method = EquipMethod.HOTBAR_SWAP;
- ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) e.getWhoClicked(), method, newArmorType, oldArmorPiece, newArmorPiece);
- Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
- if(armorEquipEvent.isCancelled()){
- e.setCancelled(true);
- }
- }
- }
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void playerInteractEvent(PlayerInteractEvent e){
- if(e.useItemInHand().equals(Result.DENY))return;
- //
- if(e.getAction() == Action.PHYSICAL) return;
- if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK){
- Player player = e.getPlayer();
- if(!e.useInteractedBlock().equals(Result.DENY)){
- if(e.getClickedBlock() != null && e.getAction() == Action.RIGHT_CLICK_BLOCK && !player.isSneaking()){// Having both of these checks is useless, might as well do it though.
- // Some blocks have actions when you right click them which stops the client from equipping the armor in hand.
- Material mat = e.getClickedBlock().getType();
- for(String s : blockedMaterials){
- if(mat.name().equalsIgnoreCase(s)) return;
- }
- }
- }
-
- ArmorType newArmorType = ArmorType.matchType(e.getItem());
- if(newArmorType != null && !isHead(e.getItem())){
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
-
- ItemStack newArmorPiece = e.getItem();
- ItemStack oldArmorPiece = null;
-
- if(ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R1)){
- switch(newArmorType){
- case HELMET:
- oldArmorPiece = player.getInventory().getHelmet();
- break;
- case CHESTPLATE:
- oldArmorPiece = player.getInventory().getChestplate();
- break;
- case LEGGINGS:
- oldArmorPiece = player.getInventory().getLeggings();
- break;
- case BOOTS:
- oldArmorPiece = player.getInventory().getBoots();
- break;
- }
- }else{
- if(!(newArmorType.equals(ArmorType.HELMET) && isAirOrNull(e.getPlayer().getInventory().getHelmet()) || newArmorType.equals(ArmorType.CHESTPLATE) && isAirOrNull(e.getPlayer().getInventory().getChestplate()) || newArmorType.equals(ArmorType.LEGGINGS) && isAirOrNull(e.getPlayer().getInventory().getLeggings()) || newArmorType.equals(ArmorType.BOOTS) && isAirOrNull(e.getPlayer().getInventory().getBoots()))){
- return;
- }
- }
-
- ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(e.getPlayer(), EquipMethod.HOTBAR, ArmorType.matchType(newArmorPiece), oldArmorPiece, newArmorPiece);
- Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
- if(armorEquipEvent.isCancelled()){
- e.setCancelled(true);
- PlayerUtils.updatePlayerInventory(player);
- }
- }
- }
- }
-
- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void inventoryDrag(InventoryDragEvent event){
- // getType() seems to always be even.
- // Old Cursor gives the item you are equipping
- // Raw slot is the ArmorType slot
- // Can't replace armor using this method making getCursor() useless.
- ArmorType type = ArmorType.matchType(event.getOldCursor());
- if(event.getRawSlots().isEmpty()) return;// Idk if this will ever happen
- if(type != null && type.getSlot() == event.getRawSlots().stream().findFirst().orElse(0)){
- ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) event.getWhoClicked(), EquipMethod.DRAG, type, null, event.getOldCursor());
- Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
- if(armorEquipEvent.isCancelled()){
- event.setResult(Result.DENY);
- event.setCancelled(true);
- }
- }
- }
-
- @EventHandler
- public void itemBreakEvent(PlayerItemBreakEvent e){
- ArmorType type = ArmorType.matchType(e.getBrokenItem());
- if(type != null){
- Player p = e.getPlayer();
- ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(p, EquipMethod.BROKE, type, e.getBrokenItem(), null);
- Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
- if(armorEquipEvent.isCancelled()){
- ItemStack i = e.getBrokenItem().clone();
- i.setAmount(1);
- i.setDurability((short) (i.getDurability() - 1));
- if(type.equals(ArmorType.HELMET)){
- p.getInventory().setHelmet(i);
- }else if(type.equals(ArmorType.CHESTPLATE)){
- p.getInventory().setChestplate(i);
- }else if(type.equals(ArmorType.LEGGINGS)){
- p.getInventory().setLeggings(i);
- }else if(type.equals(ArmorType.BOOTS)){
- p.getInventory().setBoots(i);
- }
- }
- }
- }
-
- @EventHandler
- public void playerDeathEvent(PlayerDeathEvent e){
- Player p = e.getEntity();
- if(e.getKeepInventory()) return;
- for(ItemStack i : p.getInventory().getArmorContents()){
- if(!isAirOrNull(i)){
- Bukkit.getServer().getPluginManager().callEvent(new ArmorEquipEvent(p, EquipMethod.DEATH, ArmorType.matchType(i), i, null));
- // No way to cancel a death event.
- }
- }
- }
-
- /**
- * A utility method to support versions that use null or air ItemStacks.
- */
- public static boolean isAirOrNull(ItemStack item){
- return item == null || item.getType().equals(Material.AIR);
- }
-
- public static boolean isHead(ItemStack item) {
- String materialName = item.getType().name();
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){
- if(materialName.equals("CARVED_PUMPKIN")){
- return true;
- }
- }else{
- if(materialName.equals("PUMPKIN")){
- return true;
- }
- }
- return materialName.endsWith("_HEAD") || materialName.startsWith("SKULL_") || materialName.endsWith("_SKULL");
- }
+@SuppressWarnings("deprecation")
+public class ArmorListener implements Listener {
+
+ private final List blockedMaterials;
+
+ public ArmorListener(List blockedMaterials) {
+ this.blockedMaterials = blockedMaterials;
+ }
+
+ //Event Priority is highest because other plugins might cancel the events before we check.
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public final void inventoryClick(final InventoryClickEvent e) {
+ boolean shift = false, numberkey = false;
+ if (e.getAction() == InventoryAction.NOTHING) return;// Why does this get called if nothing happens??
+ if (e.getClick().equals(ClickType.SHIFT_LEFT) || e.getClick().equals(ClickType.SHIFT_RIGHT)) {
+ shift = true;
+ }
+ if (e.getClick().equals(ClickType.NUMBER_KEY)) {
+ numberkey = true;
+ }
+ if (e.getSlotType() != SlotType.ARMOR && e.getSlotType() != SlotType.QUICKBAR && e.getSlotType() != SlotType.CONTAINER)
+ return;
+ if (e.getClickedInventory() != null && !e.getClickedInventory().getType().equals(InventoryType.PLAYER)) return;
+ if (!e.getInventory().getType().equals(InventoryType.CRAFTING) && !e.getInventory().getType().equals(InventoryType.PLAYER))
+ return;
+ if (!(e.getWhoClicked() instanceof Player)) return;
+ ArmorType newArmorType = ArmorType.matchType(shift ? e.getCurrentItem() : e.getCursor());
+ if (!shift && newArmorType != null && e.getRawSlot() != newArmorType.getSlot()) {
+ // Used for drag and drop checking to make sure you aren't trying to place a helmet in the boots slot.
+ return;
+ }
+ if (shift) {
+ newArmorType = ArmorType.matchType(e.getCurrentItem());
+ if (newArmorType != null) {
+ boolean equipping = e.getRawSlot() != newArmorType.getSlot();
+ if (newArmorType.equals(ArmorType.HELMET) && (equipping == isAirOrNull(e.getWhoClicked().getInventory().getHelmet())) || newArmorType.equals(ArmorType.CHESTPLATE) && (equipping == isAirOrNull(e.getWhoClicked().getInventory().getChestplate())) || newArmorType.equals(ArmorType.LEGGINGS) && (equipping == isAirOrNull(e.getWhoClicked().getInventory().getLeggings())) || newArmorType.equals(ArmorType.BOOTS) && (equipping == isAirOrNull(e.getWhoClicked().getInventory().getBoots()))) {
+ ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) e.getWhoClicked(), EquipMethod.SHIFT_CLICK, newArmorType, equipping ? null : e.getCurrentItem(), equipping ? e.getCurrentItem() : null);
+ Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
+ if (armorEquipEvent.isCancelled()) {
+ e.setCancelled(true);
+ }
+ }
+ }
+ } else {
+ ItemStack newArmorPiece = e.getCursor();
+ ItemStack oldArmorPiece = e.getCurrentItem();
+ if (numberkey) {
+ if (e.getClickedInventory().getType().equals(InventoryType.PLAYER)) {// Prevents shit in the 2by2 crafting
+ // e.getClickedInventory() == The players inventory
+ // e.getHotBarButton() == key people are pressing to equip or unequip the item to or from.
+ // e.getRawSlot() == The slot the item is going to.
+ // e.getSlot() == Armor slot, can't use e.getRawSlot() as that gives a hotbar slot; -;
+ ItemStack hotbarItem = e.getClickedInventory().getItem(e.getHotbarButton());
+ if (!isAirOrNull(hotbarItem)) {// Equipping
+ newArmorType = ArmorType.matchType(hotbarItem);
+ newArmorPiece = hotbarItem;
+ oldArmorPiece = e.getClickedInventory().getItem(e.getSlot());
+ } else {// Unequipping
+ newArmorType = ArmorType.matchType(!isAirOrNull(e.getCurrentItem()) ? e.getCurrentItem() : e.getCursor());
+ }
+ }
+ } else {
+ ServerVersion serverVersion = ConditionalEvents.serverVersion;
+ if (isAirOrNull(e.getCursor()) && !isAirOrNull(e.getCurrentItem())) {// unequip with no new item going into the slot.
+ newArmorType = ArmorType.matchType(e.getCurrentItem());
+ }
+ if (ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_9_R1)) {
+ ItemStack offhandItem = e.getWhoClicked().getInventory().getItemInOffHand();
+ if (e.getSlotType() == SlotType.ARMOR && !isAirOrNull(offhandItem)) {
+ ArmorType offhandArmorType = ArmorType.matchType(offhandItem);
+ if (offhandArmorType != null) {
+ newArmorType = offhandArmorType;
+ newArmorPiece = offhandItem;
+ }
+ }
+ }
+ }
+ if (newArmorType != null && e.getRawSlot() == newArmorType.getSlot()) {
+ EquipMethod method = EquipMethod.PICK_DROP;
+ if (e.getAction().equals(InventoryAction.HOTBAR_SWAP) || numberkey) method = EquipMethod.HOTBAR_SWAP;
+ ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) e.getWhoClicked(), method, newArmorType, oldArmorPiece, newArmorPiece);
+ Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
+ if (armorEquipEvent.isCancelled()) {
+ e.setCancelled(true);
+ }
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void playerInteractEvent(PlayerInteractEvent e) {
+ if (e.useItemInHand().equals(Result.DENY)) return;
+ //
+ if (e.getAction() == Action.PHYSICAL) return;
+ if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
+ Player player = e.getPlayer();
+ if (!e.useInteractedBlock().equals(Result.DENY)) {
+ if (e.getClickedBlock() != null && e.getAction() == Action.RIGHT_CLICK_BLOCK && !player.isSneaking()) {// Having both of these checks is useless, might as well do it though.
+ // Some blocks have actions when you right-click them, which stops the client from equipping the armor in the hand.
+ Material mat = e.getClickedBlock().getType();
+ for (String s : blockedMaterials) {
+ if (mat.name().equalsIgnoreCase(s)) return;
+ }
+ }
+ }
+
+ ArmorType newArmorType = ArmorType.matchType(e.getItem());
+ if (newArmorType != null) {
+ assert e.getItem() != null;
+ if (!isHead(e.getItem())) {
+ ServerVersion serverVersion = ConditionalEvents.serverVersion;
+
+ ItemStack newArmorPiece = e.getItem();
+ ItemStack oldArmorPiece = null;
+
+ if (ConditionalEvents.serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_20_R1)) {
+ switch (newArmorType) {
+ case HELMET:
+ oldArmorPiece = player.getInventory().getHelmet();
+ break;
+ case CHESTPLATE:
+ oldArmorPiece = player.getInventory().getChestplate();
+ break;
+ case LEGGINGS:
+ oldArmorPiece = player.getInventory().getLeggings();
+ break;
+ case BOOTS:
+ oldArmorPiece = player.getInventory().getBoots();
+ break;
+ }
+ } else {
+ if (!(newArmorType.equals(ArmorType.HELMET) && isAirOrNull(e.getPlayer().getInventory().getHelmet()) || newArmorType.equals(ArmorType.CHESTPLATE) && isAirOrNull(e.getPlayer().getInventory().getChestplate()) || newArmorType.equals(ArmorType.LEGGINGS) && isAirOrNull(e.getPlayer().getInventory().getLeggings()) || newArmorType.equals(ArmorType.BOOTS) && isAirOrNull(e.getPlayer().getInventory().getBoots()))) {
+ return;
+ }
+ }
+
+ ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(e.getPlayer(), EquipMethod.HOTBAR, ArmorType.matchType(newArmorPiece), oldArmorPiece, newArmorPiece);
+ Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
+ if (armorEquipEvent.isCancelled()) {
+ e.setCancelled(true);
+ PlayerUtils.updatePlayerInventory(player);
+ }
+ }
+ }
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void inventoryDrag(InventoryDragEvent event) {
+ // getType() seems to always be even.
+ // Old Cursor gives the item you are equipping
+ // Raw slot is the ArmorType slot
+ // Can't replace armor using this method making getCursor() useless.
+ ArmorType type = ArmorType.matchType(event.getOldCursor());
+ if (event.getRawSlots().isEmpty()) return;// IDK if this will ever happen
+ if (type != null && type.getSlot() == event.getRawSlots().stream().findFirst().orElse(0)) {
+ ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent((Player) event.getWhoClicked(), EquipMethod.DRAG, type, null, event.getOldCursor());
+ Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
+ if (armorEquipEvent.isCancelled()) {
+ event.setResult(Result.DENY);
+ event.setCancelled(true);
+ }
+ }
+ }
+
+ @EventHandler
+ public void itemBreakEvent(PlayerItemBreakEvent e) {
+ ArmorType type = ArmorType.matchType(e.getBrokenItem());
+ if (type != null) {
+ Player p = e.getPlayer();
+ ArmorEquipEvent armorEquipEvent = new ArmorEquipEvent(p, EquipMethod.BROKE, type, e.getBrokenItem(), null);
+ Bukkit.getServer().getPluginManager().callEvent(armorEquipEvent);
+ if (armorEquipEvent.isCancelled()) {
+ ItemStack i = e.getBrokenItem().clone();
+ i.setAmount(1);
+ i.setDurability((short) (i.getDurability() - 1));
+ if (type.equals(ArmorType.HELMET)) {
+ p.getInventory().setHelmet(i);
+ } else if (type.equals(ArmorType.CHESTPLATE)) {
+ p.getInventory().setChestplate(i);
+ } else if (type.equals(ArmorType.LEGGINGS)) {
+ p.getInventory().setLeggings(i);
+ } else if (type.equals(ArmorType.BOOTS)) {
+ p.getInventory().setBoots(i);
+ }
+ }
+ }
+ }
+
+ @EventHandler
+ public void playerDeathEvent(PlayerDeathEvent e) {
+ Player p = e.getEntity();
+ if (e.getKeepInventory()) return;
+ for (ItemStack i : p.getInventory().getArmorContents()) {
+ if (!isAirOrNull(i)) {
+ Bukkit.getServer().getPluginManager().callEvent(new ArmorEquipEvent(p, EquipMethod.DEATH, ArmorType.matchType(i), i, null));
+ // No way to cancel a death event.
+ }
+ }
+ }
+
+ /**
+ * A utility method to support versions that use null or air ItemStacks.
+ */
+ public static boolean isAirOrNull(ItemStack item) {
+ return item == null || item.getType().equals(Material.AIR);
+ }
+
+ public static boolean isHead(ItemStack item) {
+ String materialName = item.getType().name();
+ ServerVersion serverVersion = ConditionalEvents.serverVersion;
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_13_R1)) {
+ if (materialName.equals("CARVED_PUMPKIN")) {
+ return true;
+ }
+ } else {
+ if (materialName.equals("PUMPKIN")) {
+ return true;
+ }
+ }
+ return materialName.endsWith("_HEAD") || materialName.startsWith("SKULL_") || materialName.endsWith("_SKULL");
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
index bb817b5..383886e 100644
--- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
+++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java
@@ -2,51 +2,58 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.utils.ServerVersion;
-import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
/**
* @author Arnah
* @since Jul 30, 2015
*/
-public enum ArmorType{
- HELMET(5), CHESTPLATE(6), LEGGINGS(7), BOOTS(8);
-
- private final int slot;
-
- ArmorType(int slot){
- this.slot = slot;
- }
-
- /**
- * Attempts to match the ArmorType for the specified ItemStack.
- *
- * @param itemStack The ItemStack to parse the type of.
- * @return The parsed ArmorType, or null if not found.
- */
- public static ArmorType matchType(final ItemStack itemStack){
- if(ArmorListener.isAirOrNull(itemStack)) return null;
- String type = itemStack.getType().name();
-
- ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){
- if(type.equals("CARVED_PUMPKIN")){
- return HELMET;
- }
- }else{
- if(type.equals("PUMPKIN")){
- return HELMET;
- }
- }
-
- if(type.endsWith("_HELMET") || type.startsWith("SKULL_") || type.endsWith("_HEAD") || type.endsWith("_SKULL")) return HELMET;
- else if(type.endsWith("_CHESTPLATE") || type.equals("ELYTRA")) return CHESTPLATE;
- else if(type.endsWith("_LEGGINGS")) return LEGGINGS;
- else if(type.endsWith("_BOOTS")) return BOOTS;
- else return null;
- }
-
- public int getSlot(){
- return slot;
- }
+public enum ArmorType {
+
+ HELMET(5),
+
+ CHESTPLATE(6),
+
+ LEGGINGS(7),
+
+ BOOTS(8);
+
+ private final int slot;
+
+ ArmorType(int slot) {
+ this.slot = slot;
+ }
+
+ /**
+ * Attempts to match the ArmorType for the specified ItemStack.
+ *
+ * @param itemStack The ItemStack to parse the type of.
+ * @return The parsed ArmorType, or null if not found.
+ */
+ public static ArmorType matchType(final ItemStack itemStack) {
+ if (ArmorListener.isAirOrNull(itemStack)) return null;
+ String type = itemStack.getType().name();
+
+ ServerVersion serverVersion = ConditionalEvents.serverVersion;
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_13_R1)) {
+ if (type.equals("CARVED_PUMPKIN")) {
+ return HELMET;
+ }
+ } else {
+ if (type.equals("PUMPKIN")) {
+ return HELMET;
+ }
+ }
+
+ if (type.endsWith("_HELMET") || type.startsWith("SKULL_") || type.endsWith("_HEAD") || type.endsWith("_SKULL"))
+ return HELMET;
+ else if (type.endsWith("_CHESTPLATE") || type.equals("ELYTRA")) return CHESTPLATE;
+ else if (type.endsWith("_LEGGINGS")) return LEGGINGS;
+ else if (type.endsWith("_BOOTS")) return BOOTS;
+ else return null;
+ }
+
+ public int getSlot() {
+ return slot;
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/centeredmessages/DefaultFontInfo.java b/src/main/java/ce/ajneb97/libs/centeredmessages/DefaultFontInfo.java
index cc74e3a..969bbd2 100644
--- a/src/main/java/ce/ajneb97/libs/centeredmessages/DefaultFontInfo.java
+++ b/src/main/java/ce/ajneb97/libs/centeredmessages/DefaultFontInfo.java
@@ -1,7 +1,7 @@
package ce.ajneb97.libs.centeredmessages;
-public enum DefaultFontInfo{
-
+public enum DefaultFontInfo {
+
A('A', 5),
a('a', 5),
B('B', 5),
@@ -98,32 +98,32 @@ public enum DefaultFontInfo{
COMMA(',', 1),
SPACE(' ', 3),
DEFAULT('a', 4);
-
- private char character;
- private int length;
-
+
+ private final char character;
+ private final int length;
+
DefaultFontInfo(char character, int length) {
- this.character = character;
- this.length = length;
+ this.character = character;
+ this.length = length;
}
-
- public char getCharacter(){
- return this.character;
+
+ public char getCharacter() {
+ return this.character;
}
-
- public int getLength(){
- return this.length;
+
+ public int getLength() {
+ return this.length;
}
-
- public int getBoldLength(){
- if(this == DefaultFontInfo.SPACE) return this.getLength();
- return this.length + 1;
+
+ public int getBoldLength() {
+ if (this == DefaultFontInfo.SPACE) return this.getLength();
+ return this.length + 1;
}
-
- public static DefaultFontInfo getDefaultFontInfo(char c){
- for(DefaultFontInfo dFI : DefaultFontInfo.values()){
- if(dFI.getCharacter() == c) return dFI;
- }
- return DefaultFontInfo.DEFAULT;
+
+ public static DefaultFontInfo getDefaultFontInfo(char c) {
+ for (DefaultFontInfo dFI : DefaultFontInfo.values()) {
+ if (dFI.getCharacter() == c) return dFI;
+ }
+ return DefaultFontInfo.DEFAULT;
}
}
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/DropType.java b/src/main/java/ce/ajneb97/libs/itemselectevent/DropType.java
index ab73b3e..2157117 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/DropType.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/DropType.java
@@ -3,5 +3,6 @@
public enum DropType {
PLAYER,
+
INVENTORY
}
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectEvent.java b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectEvent.java
index de90294..d8c824d 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectEvent.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectEvent.java
@@ -5,33 +5,32 @@
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.ItemStack;
-public class ItemSelectEvent extends PlayerEvent{
-
- private static final HandlerList handlers = new HandlerList();
- private SelectType selectType;
- private ItemStack item;
-
- public ItemSelectEvent(Player player,ItemStack item,SelectType selectType) {
- super(player);
- this.item = item;
- this.selectType = selectType;
- }
-
- public SelectType getSelectType() {
- return selectType;
- }
-
- public ItemStack getItem() {
- return item;
- }
-
- @Override
- public HandlerList getHandlers() {
- // TODO Auto-generated method stub
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
+public class ItemSelectEvent extends PlayerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final SelectType selectType;
+ private final ItemStack item;
+
+ public ItemSelectEvent(Player player, ItemStack item, SelectType selectType) {
+ super(player);
+ this.item = item;
+ this.selectType = selectType;
+ }
+
+ public SelectType getSelectType() {
+ return selectType;
+ }
+
+ public ItemStack getItem() {
+ return item;
+ }
+
+ @Override
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListener.java b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListener.java
index 53b1a06..65e51cd 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListener.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListener.java
@@ -1,6 +1,7 @@
package ce.ajneb97.libs.itemselectevent;
import java.util.ArrayList;
+
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -14,158 +15,160 @@
import org.bukkit.event.player.PlayerItemHeldEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.scheduler.BukkitRunnable;
import ce.ajneb97.ConditionalEvents;
-public class ItemSelectListener implements Listener{
-
- private ArrayList players = new ArrayList();
- private ConditionalEvents plugin;
- public ItemSelectListener(ConditionalEvents plugin) {
- this.plugin = plugin;
- }
-
- @EventHandler
- public void onItemChanged(PlayerItemHeldEvent event) {
- if(event.isCancelled()) {
- return;
- }
-
- Player player = event.getPlayer();
-
- int previousSlot = event.getPreviousSlot();
- int newSlot = event.getNewSlot();
- ItemStack newItem = player.getInventory().getItem(newSlot);
- ItemStack previousItem = player.getInventory().getItem(previousSlot);
- ArrayList items = new ArrayList();
- items.add(newItem);items.add(previousItem);
- for(int i=0;i items = new ArrayList();
- if(selectedSlot == slot) {
- items.add(current);items.add(cursor);
- }else if(selectedSlot == slotHotbar) {
- items.add(cursor);items.add(current);
- }
- for(int i=0;i players = new ArrayList<>();
+ private final ConditionalEvents plugin;
+
+ public ItemSelectListener(ConditionalEvents plugin) {
+ this.plugin = plugin;
+ }
+
+ @EventHandler
+ public void onItemChanged(PlayerItemHeldEvent event) {
+ if (event.isCancelled()) {
+ return;
+ }
+
+ Player player = event.getPlayer();
+
+ int previousSlot = event.getPreviousSlot();
+ int newSlot = event.getNewSlot();
+ ItemStack newItem = player.getInventory().getItem(newSlot);
+ ItemStack previousItem = player.getInventory().getItem(previousSlot);
+ ArrayList items = new ArrayList<>();
+ items.add(newItem);
+ items.add(previousItem);
+ for (int i = 0; i < items.size(); i++) {
+ ItemStack item = items.get(i);
+ if (item != null && !item.getType().equals(Material.AIR)) {
+ SelectType action;
+ if (i == 0) {
+ action = SelectType.SELECT;
+ } else {
+ action = SelectType.DESELECT;
+ }
+
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, action);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+ }
+ }
+
+ @EventHandler
+ public void onItemDrop(PlayerDropItemEvent event) {
+ if (event.isCancelled()) {
+ return;
+ }
+
+ Player player = event.getPlayer();
+ ItemStack item = event.getItemDrop().getItemStack();
+ if (!players.contains(player)) {
+ players.add(player);
+ PlayerCustomDropEvent dropEvent = new PlayerCustomDropEvent(player, item, DropType.PLAYER, player.getInventory().getHeldItemSlot());
+ Bukkit.getServer().getPluginManager().callEvent(dropEvent);
+ }
+ }
+
+ @EventHandler
+ public void onCustomItemDrop(PlayerCustomDropEvent event) {
+ Player player = event.getPlayer();
+ ItemStack item = event.getItem();
+ int slot = event.getSlot();
+ int selectedSlot = player.getInventory().getHeldItemSlot();
+
+ if (slot == selectedSlot) {
+ SelectType action = SelectType.DESELECT;
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, action);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+
+ if (plugin.isFolia) {
+ player.getScheduler().runDelayed(plugin, (task) -> players.remove(player), null, 3L);
+ } else {
+ Bukkit.getScheduler().runTaskLater(plugin, () -> players.remove(player), 3L);
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ @EventHandler
+ public void onItemPickup(PlayerPickupItemEvent event) {
+ if (event.isCancelled()) {
+ return;
+ }
+
+ Player player = event.getPlayer();
+ ItemStack item = event.getItem().getItemStack();
+ int selectedSlot = player.getInventory().getHeldItemSlot();
+ int newSlot = player.getInventory().firstEmpty();
+ if (newSlot == selectedSlot) {
+ SelectType action = SelectType.SELECT;
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, action);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+ }
+
+ @EventHandler
+ public void onItemInventoryClick(InventoryClickEvent event) {
+ if (event.isCancelled()) {
+ return;
+ }
+ Player player = (Player) event.getWhoClicked();
+ InventoryAction action = event.getAction();
+ int slot = event.getSlot();
+ int selectedSlot = player.getInventory().getHeldItemSlot();
+ if (action.name().contains("DROP")) {
+ players.add(player);
+ PlayerCustomDropEvent dropEvent = new PlayerCustomDropEvent(player, event.getCurrentItem(), DropType.INVENTORY, slot);
+ Bukkit.getServer().getPluginManager().callEvent(dropEvent);
+ return;
+ }
+
+ ItemStack current = event.getCurrentItem();
+ ItemStack cursor = event.getCursor();
+ int slotHotbar = event.getHotbarButton();
+ if (event.getClick().equals(ClickType.NUMBER_KEY)) {
+ ItemStack item2 = player.getInventory().getItem(slotHotbar);
+ if (item2 != null && !item2.getType().equals(Material.AIR)) {
+ cursor = item2;
+ } else if (current == null || current.getType().equals(Material.AIR)) {
+ current = item2;
+ }
+ }
+
+ ArrayList items = new ArrayList<>();
+ if (selectedSlot == slot) {
+ items.add(current);
+ items.add(cursor);
+ } else if (selectedSlot == slotHotbar) {
+ items.add(cursor);
+ items.add(current);
+ }
+ for (int i = 0; i < items.size(); i++) {
+ ItemStack item = items.get(i);
+ if (item != null && !item.getType().equals(Material.AIR)) {
+ SelectType select;
+ if (i == 0) {
+ select = SelectType.DESELECT;
+ } else {
+ select = SelectType.SELECT;
+ }
+
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, select);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+ }
+ }
+
+ @EventHandler
+ public void onItemBreak(PlayerItemBreakEvent event) {
+ Player player = event.getPlayer();
+ ItemStack item = event.getBrokenItem();
+
+ SelectType action = SelectType.DESELECT;
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, action);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListenerNew.java b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListenerNew.java
index f68b360..411b90f 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListenerNew.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/ItemSelectListenerNew.java
@@ -10,32 +10,34 @@
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
import org.bukkit.inventory.ItemStack;
-public class ItemSelectListenerNew implements Listener{
+public class ItemSelectListenerNew implements Listener {
- @EventHandler
- public void onChangeHand(PlayerSwapHandItemsEvent event) {
- if(event.isCancelled()) {
- return;
- }
-
- Player player = event.getPlayer();
- ItemStack itemMain = event.getMainHandItem();
- ItemStack itemOff = event.getOffHandItem();
- ArrayList items = new ArrayList();
- items.add(itemMain);items.add(itemOff);
- for(int i=0;i items = new ArrayList<>();
+ items.add(itemMain);
+ items.add(itemOff);
+ for (int i = 0; i < items.size(); i++) {
+ ItemStack item = items.get(i);
+ if (item != null && !item.getType().equals(Material.AIR)) {
+
+ SelectType action;
+ if (i == 0) {
+ action = SelectType.SELECT;
+ } else {
+ action = SelectType.DESELECT;
+ }
+
+ ItemSelectEvent selectEvent = new ItemSelectEvent(player, item, action);
+ Bukkit.getServer().getPluginManager().callEvent(selectEvent);
+ }
+ }
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/PlayerCustomDropEvent.java b/src/main/java/ce/ajneb97/libs/itemselectevent/PlayerCustomDropEvent.java
index 28069d5..ca530f0 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/PlayerCustomDropEvent.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/PlayerCustomDropEvent.java
@@ -4,40 +4,40 @@
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.ItemStack;
-
-public class PlayerCustomDropEvent extends PlayerEvent{
-
- private static final HandlerList handlers = new HandlerList();
- private DropType dropType;
- private ItemStack item;
- private int slot;
-
- public PlayerCustomDropEvent(Player player,ItemStack item,DropType dropType,int slot) {
- super(player);
- this.item = item;
- this.dropType = dropType;
- this.slot = slot;
- }
-
- public DropType getDropType() {
- return dropType;
- }
-
- public int getSlot() {
- return slot;
- }
-
- public ItemStack getItem() {
- return item;
- }
-
- @Override
- public HandlerList getHandlers() {
- // TODO Auto-generated method stub
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
+import org.jetbrains.annotations.NotNull;
+
+public class PlayerCustomDropEvent extends PlayerEvent {
+
+ private static final HandlerList handlers = new HandlerList();
+ private final DropType dropType;
+ private final ItemStack item;
+ private final int slot;
+
+ public PlayerCustomDropEvent(Player player, ItemStack item, DropType dropType, int slot) {
+ super(player);
+ this.item = item;
+ this.dropType = dropType;
+ this.slot = slot;
+ }
+
+ public DropType getDropType() {
+ return dropType;
+ }
+
+ public int getSlot() {
+ return slot;
+ }
+
+ public ItemStack getItem() {
+ return item;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/itemselectevent/SelectType.java b/src/main/java/ce/ajneb97/libs/itemselectevent/SelectType.java
index 870fe68..b267097 100644
--- a/src/main/java/ce/ajneb97/libs/itemselectevent/SelectType.java
+++ b/src/main/java/ce/ajneb97/libs/itemselectevent/SelectType.java
@@ -2,6 +2,7 @@
public enum SelectType {
- SELECT,
- DESELECT
+ SELECT,
+
+ DESELECT
}
diff --git a/src/main/java/ce/ajneb97/libs/offhandevent/OffHandEvent.java b/src/main/java/ce/ajneb97/libs/offhandevent/OffHandEvent.java
index 32f7446..7f88960 100644
--- a/src/main/java/ce/ajneb97/libs/offhandevent/OffHandEvent.java
+++ b/src/main/java/ce/ajneb97/libs/offhandevent/OffHandEvent.java
@@ -6,70 +6,70 @@
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
public class OffHandEvent extends PlayerEvent implements Cancellable {
- private static final HandlerList handlers = new HandlerList();
- private boolean cancel = false;
- private MovementType movementType;
- private ItemStack placedInOffhand;
- private ItemStack recoveredFromOffhand;
+ private static final HandlerList handlers = new HandlerList();
+ private boolean cancel = false;
+ private final MovementType movementType;
+ private final ItemStack placedInOffhand;
+ private final ItemStack recoveredFromOffhand;
- public OffHandEvent(Player player, ItemStack placedInOffhand, ItemStack recoveredFromOffhand) {
- super(player);
- this.placedInOffhand = placedInOffhand;
- this.recoveredFromOffhand = recoveredFromOffhand;
+ public OffHandEvent(Player player, ItemStack placedInOffhand, ItemStack recoveredFromOffhand) {
+ super(player);
+ this.placedInOffhand = placedInOffhand;
+ this.recoveredFromOffhand = recoveredFromOffhand;
- boolean wasPlaced = placedInOffhand != null && !placedInOffhand.getType().equals(Material.AIR);
- boolean wasRecovered = recoveredFromOffhand != null && !recoveredFromOffhand.getType().equals(Material.AIR);
+ boolean wasPlaced = placedInOffhand != null && !placedInOffhand.getType().equals(Material.AIR);
+ boolean wasRecovered = recoveredFromOffhand != null && !recoveredFromOffhand.getType().equals(Material.AIR);
- if(wasPlaced && wasRecovered){
- movementType = MovementType.SWAP;
- }else if(wasPlaced){
- movementType = MovementType.PLACE;
- }else if(wasRecovered){
- movementType = MovementType.RECOVER;
- }else{
- movementType = MovementType.NOTHING;
- }
- }
+ if (wasPlaced && wasRecovered) {
+ movementType = MovementType.SWAP;
+ } else if (wasPlaced) {
+ movementType = MovementType.PLACE;
+ } else if (wasRecovered) {
+ movementType = MovementType.RECOVER;
+ } else {
+ movementType = MovementType.NOTHING;
+ }
+ }
- public MovementType getMovementType() {
- return movementType;
- }
+ public MovementType getMovementType() {
+ return movementType;
+ }
- public ItemStack getPlacedInOffhand() {
- return placedInOffhand;
- }
+ public ItemStack getPlacedInOffhand() {
+ return placedInOffhand;
+ }
- public ItemStack getRecoveredFromOffhand() {
- return recoveredFromOffhand;
- }
+ public ItemStack getRecoveredFromOffhand() {
+ return recoveredFromOffhand;
+ }
- @Override
- public HandlerList getHandlers() {
- // TODO Auto-generated method stub
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
- @Override
- public boolean isCancelled() {
- return this.cancel;
- }
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
- @Override
- public void setCancelled(boolean cancel) {
- this.cancel = cancel;
- }
+ @Override
+ public boolean isCancelled() {
+ return this.cancel;
+ }
- public enum MovementType {
- PLACE,
- RECOVER,
- SWAP,
- NOTHING
- }
+ @Override
+ public void setCancelled(boolean cancel) {
+ this.cancel = cancel;
+ }
+
+ public enum MovementType {
+ PLACE,
+ RECOVER,
+ SWAP,
+ NOTHING
+ }
}
diff --git a/src/main/java/ce/ajneb97/libs/offhandevent/OffHandListener.java b/src/main/java/ce/ajneb97/libs/offhandevent/OffHandListener.java
index c7f7a74..bc47890 100644
--- a/src/main/java/ce/ajneb97/libs/offhandevent/OffHandListener.java
+++ b/src/main/java/ce/ajneb97/libs/offhandevent/OffHandListener.java
@@ -14,30 +14,25 @@
public class OffHandListener implements Listener {
- private ConditionalEvents plugin;
- public OffHandListener(ConditionalEvents plugin){
- this.plugin = plugin;
- }
-
@EventHandler
- public void onPlayerSwapHand(PlayerSwapHandItemsEvent event){
- if(event.isCancelled()){
+ public void onPlayerSwapHand(PlayerSwapHandItemsEvent event) {
+ if (event.isCancelled()) {
return;
}
Player player = event.getPlayer();
ItemStack item = event.getMainHandItem();
ItemStack itemOffHand = event.getOffHandItem();
- OffHandEvent swapEvent = new OffHandEvent(player,itemOffHand,item);
+ OffHandEvent swapEvent = new OffHandEvent(player, itemOffHand, item);
Bukkit.getServer().getPluginManager().callEvent(swapEvent);
- if(swapEvent.isCancelled()){
+ if (swapEvent.isCancelled()) {
event.setCancelled(true);
}
}
@EventHandler
public void onMoveOffHand(InventoryClickEvent event) {
- if(event.isCancelled()){
+ if (event.isCancelled()) {
return;
}
@@ -58,21 +53,21 @@ public void onMoveOffHand(InventoryClickEvent event) {
OffHandEvent swapEvent = null;
ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(slotType.equals(InventoryType.SlotType.QUICKBAR) && slot == 40){
- if(click.equals(ClickType.NUMBER_KEY)){
- swapEvent = new OffHandEvent(player,item2,itemInOffhand);
- }else{
- swapEvent = new OffHandEvent(player,cursorItem,itemInOffhand);
+ if (slotType.equals(InventoryType.SlotType.QUICKBAR) && slot == 40) {
+ if (click.equals(ClickType.NUMBER_KEY)) {
+ swapEvent = new OffHandEvent(player, item2, itemInOffhand);
+ } else {
+ swapEvent = new OffHandEvent(player, cursorItem, itemInOffhand);
}
- }else if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_16_R3)){
- if(click.equals(ClickType.SWAP_OFFHAND)){
- swapEvent = new OffHandEvent(player,clickedItem,itemInOffhand);
+ } else if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_16_R3)) {
+ if (click.equals(ClickType.SWAP_OFFHAND)) {
+ swapEvent = new OffHandEvent(player, clickedItem, itemInOffhand);
}
}
- if(swapEvent != null){
+ if (swapEvent != null) {
Bukkit.getServer().getPluginManager().callEvent(swapEvent);
- if(swapEvent.isCancelled()){
+ if (swapEvent.isCancelled()) {
event.setCancelled(true);
}
}
diff --git a/src/main/java/ce/ajneb97/libs/titles/TitleAPI.java b/src/main/java/ce/ajneb97/libs/titles/TitleAPI.java
index 7844629..8510446 100644
--- a/src/main/java/ce/ajneb97/libs/titles/TitleAPI.java
+++ b/src/main/java/ce/ajneb97/libs/titles/TitleAPI.java
@@ -1,7 +1,7 @@
package ce.ajneb97.libs.titles;
import ce.ajneb97.api.ConditionalEventsAPI;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.utils.MiniMessageUtils;
import ce.ajneb97.utils.OtherUtils;
import org.bukkit.Bukkit;
@@ -12,6 +12,7 @@
import java.lang.reflect.Constructor;
+@SuppressWarnings({"deprecation", "DataFlowIssue", "rawtypes"})
public class TitleAPI implements Listener {
public static void sendPacket(Player player, Object packet) {
@@ -35,21 +36,21 @@ public static Class> getNMSClass(String name) {
}
public static void sendTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
- if(OtherUtils.isNew()) {
- if(title.isEmpty()) {
- title = " ";
- }
- if(subtitle.isEmpty()) {
- subtitle = " ";
- }
- if(ConditionalEventsAPI.getPlugin().getConfigsManager().getMainConfigManager().isUseMiniMessage()){
- MiniMessageUtils.title(player,title,subtitle);
- }else{
+ if (OtherUtils.isNew()) {
+ if (title.isEmpty()) {
+ title = " ";
+ }
+ if (subtitle.isEmpty()) {
+ subtitle = " ";
+ }
+ if (ConditionalEventsAPI.getPlugin().getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
+ MiniMessageUtils.title(player, title, subtitle);
+ } else {
player.sendTitle(MessagesManager.getLegacyColoredMessage(title), MessagesManager.getLegacyColoredMessage(subtitle), fadeIn, stay, fadeOut);
}
- return;
- }
- try {
+ return;
+ }
+ try {
Object e;
Object chatTitle;
Object chatSubtitle;
@@ -61,16 +62,16 @@ public static void sendTitle(Player player, Integer fadeIn, Integer stay, Intege
title = ChatColor.translateAlternateColorCodes('&', title);
title = title.replaceAll("%player%", player.getDisplayName());
// Times packets
- e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get((Object) null);
- chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke((Object) null, new Object[]{"{\"text\":\"" + title + "\"}"});
- subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE});
- titlePacket = subtitleConstructor.newInstance(new Object[]{e, chatTitle, fadeIn, stay, fadeOut});
+ e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get(null);
+ chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
+ subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
+ titlePacket = subtitleConstructor.newInstance(e, chatTitle, fadeIn, stay, fadeOut);
sendPacket(player, titlePacket);
- e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get((Object) null);
- chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke((Object) null, new Object[]{"{\"text\":\"" + title + "\"}"});
- subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent")});
- titlePacket = subtitleConstructor.newInstance(new Object[]{e, chatTitle});
+ e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
+ chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
+ subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"));
+ titlePacket = subtitleConstructor.newInstance(e, chatTitle);
sendPacket(player, titlePacket);
}
@@ -78,16 +79,16 @@ public static void sendTitle(Player player, Integer fadeIn, Integer stay, Intege
subtitle = ChatColor.translateAlternateColorCodes('&', subtitle);
subtitle = subtitle.replaceAll("%player%", player.getDisplayName());
// Times packets
- e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get((Object) null);
- chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke((Object) null, new Object[]{"{\"text\":\"" + title + "\"}"});
- subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE});
- subtitlePacket = subtitleConstructor.newInstance(new Object[]{e, chatSubtitle, fadeIn, stay, fadeOut});
+ e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get(null);
+ chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
+ subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
+ subtitlePacket = subtitleConstructor.newInstance(e, chatSubtitle, fadeIn, stay, fadeOut);
sendPacket(player, subtitlePacket);
- e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get((Object) null);
- chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke((Object) null, new Object[]{"{\"text\":\"" + subtitle + "\"}"});
- subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE});
- subtitlePacket = subtitleConstructor.newInstance(new Object[]{e, chatSubtitle, fadeIn, stay, fadeOut});
+ e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get(null);
+ chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + subtitle + "\"}");
+ subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
+ subtitlePacket = subtitleConstructor.newInstance(e, chatSubtitle, fadeIn, stay, fadeOut);
sendPacket(player, subtitlePacket);
}
} catch (Exception var11) {
diff --git a/src/main/java/ce/ajneb97/listeners/CustomEventListener.java b/src/main/java/ce/ajneb97/listeners/CustomEventListener.java
index 6ce917e..fa991a3 100644
--- a/src/main/java/ce/ajneb97/listeners/CustomEventListener.java
+++ b/src/main/java/ce/ajneb97/listeners/CustomEventListener.java
@@ -1,7 +1,7 @@
package ce.ajneb97.listeners;
import ce.ajneb97.ConditionalEvents;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.model.CEEvent;
import ce.ajneb97.model.CustomEventProperties;
import ce.ajneb97.model.EventType;
@@ -19,17 +19,19 @@
import java.util.ArrayList;
import java.util.List;
+@SuppressWarnings({"unchecked", "DataFlowIssue"})
public class CustomEventListener implements Listener {
public ConditionalEvents plugin;
+
public CustomEventListener(ConditionalEvents plugin) {
this.plugin = plugin;
configure();
}
- public void configure(){
+ public void configure() {
ArrayList validEvents = plugin.getEventsManager().getEventsByType(EventType.CUSTOM);
- for(CEEvent ceEvent : validEvents) {
+ for (CEEvent ceEvent : validEvents) {
CustomEventProperties properties = ceEvent.getCustomEventProperties();
String eventPackage = properties.getEventPackage();
try {
@@ -38,16 +40,16 @@ public void configure(){
plugin.getServer().getPluginManager().registerEvent(eventClass, this, EventPriority.MONITOR, eventExecutor, plugin);
} catch (ClassNotFoundException ex) {
Bukkit.getConsoleSender().sendMessage(ConditionalEvents.prefix
- + MessagesManager.getLegacyColoredMessage("&cClass "+eventPackage+" &cdoesn't exists for custom event &e"+ceEvent.getName()+"&c."));
+ + MessagesManager.getLegacyColoredMessage("&cClass " + eventPackage + " &cdoesn't exists for custom event &e" + ceEvent.getName() + "&c."));
}
}
}
- public void executeEvent(Event event,String ceEventName) {
+ public void executeEvent(Event event, String ceEventName) {
Class> classObject = event.getClass();
CEEvent ceEvent = plugin.getEventsManager().getEvent(ceEventName);
- if(ceEvent == null || !ceEvent.isEnabled()){
+ if (ceEvent == null || !ceEvent.isEnabled()) {
return;
}
@@ -62,101 +64,96 @@ public void executeEvent(Event event,String ceEventName) {
//Get variables
List variablesToCapture = properties.getVariablesToCapture();
- ArrayList storedVariables = new ArrayList();
- for(String line : variablesToCapture) {
+ ArrayList storedVariables = new ArrayList<>();
+ for (String line : variablesToCapture) {
String[] sepLine = line.split(";");
String variable = sepLine[0];
String methodName = sepLine[1].replace("(", "").replace(")", "");
- Object objectFinal = null;
- if(methodName.contains(".")) {
- objectFinal = getFinalObjectFromMultipleMethods(methodName,event,classObject);
- }else {
- Method m = obtainMethod(classObject,methodName);
- objectFinal = obtainObjectFromEvent(m,event);
+ Object objectFinal;
+ if (methodName.contains(".")) {
+ objectFinal = getFinalObjectFromMultipleMethods(methodName, event, classObject);
+ } else {
+ Method m = obtainMethod(classObject, methodName);
+ objectFinal = obtainObjectFromEvent(m, event);
}
- if(objectFinal != null){
- storedVariables.add(new StoredVariable(variable,objectFinal.toString()));
+ if (objectFinal != null) {
+ storedVariables.add(new StoredVariable(variable, objectFinal.toString()));
}
}
//Get player
Object playerObjectFinal = null;
- if(properties.getPlayerVariable() != null) {
+ if (properties.getPlayerVariable() != null) {
String methodName = properties.getPlayerVariable().replace("(", "").replace(")", "");
- if(methodName.contains(".")) {
- playerObjectFinal = getFinalObjectFromMultipleMethods(methodName,event,classObject);
- }else {
- Method m = obtainMethod(classObject,methodName);
- playerObjectFinal = obtainObjectFromEvent(m,event);
+ if (methodName.contains(".")) {
+ playerObjectFinal = getFinalObjectFromMultipleMethods(methodName, event, classObject);
+ } else {
+ Method m = obtainMethod(classObject, methodName);
+ playerObjectFinal = obtainObjectFromEvent(m, event);
}
}
try {
Player player = null;
- if(playerObjectFinal != null) {
+ if (playerObjectFinal != null) {
player = (Player) playerObjectFinal;
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.CUSTOM, null)
.addVariables(storedVariables);
- plugin.getEventsManager().checkSingularEvent(conditionEvent,ceEvent);
- }catch(Exception ex) {
-
+ plugin.getEventsManager().checkSingularEvent(conditionEvent, ceEvent);
+ } catch (Exception ignored) {
}
}
- private Object getFinalObjectFromMultipleMethods(String method,Event event,Class> classObject){
+ private Object getFinalObjectFromMultipleMethods(String method, Event event, Class> classObject) {
Object objectFinal = null;
String[] methods = method.split("\\.");
Class> newClass = classObject;
- try{
- for(int i=0;i classObject,String methodName) {
+ private Method obtainMethod(Class> classObject, String methodName) {
try {
return classObject.getMethod(methodName);
} catch (NoSuchMethodException e) {
e.printStackTrace();
- } catch (Exception e) {
-
+ } catch (Exception ignored) {
}
return null;
}
- private Object obtainObjectFromEvent(Method m,Event event) {
+ private Object obtainObjectFromEvent(Method m, Event event) {
try {
m.setAccessible(true);
return m.invoke(event);
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ignored) {
}
return null;
}
- private Object obtainObjectFromObject(Method m,Object object) {
+ private Object obtainObjectFromObject(Method m, Object object) {
try {
m.setAccessible(true);
return m.invoke(object);
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ignored) {
}
return null;
}
-
}
diff --git a/src/main/java/ce/ajneb97/listeners/ItemEventsListener.java b/src/main/java/ce/ajneb97/listeners/ItemEventsListener.java
index 25f7459..eeed127 100644
--- a/src/main/java/ce/ajneb97/listeners/ItemEventsListener.java
+++ b/src/main/java/ce/ajneb97/listeners/ItemEventsListener.java
@@ -25,42 +25,44 @@
import org.bukkit.event.player.*;
import org.bukkit.inventory.AnvilInventory;
import org.bukkit.inventory.EquipmentSlot;
-import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.view.AnvilView;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+@SuppressWarnings({"removal", "deprecation", "UnstableApiUsage"})
public class ItemEventsListener implements Listener {
public ConditionalEvents plugin;
+
public ItemEventsListener(ConditionalEvents plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onItemInteract(PlayerInteractEvent event){
+ public void onItemInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
ItemStack item = event.getItem();
ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_10_R1)) {
- if(!event.getAction().equals(Action.PHYSICAL) && (event.getHand() == null || (!event.getHand().equals(EquipmentSlot.HAND)
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_10_R1)) {
+ if (!event.getAction().equals(Action.PHYSICAL) && (event.getHand() == null || (!event.getHand().equals(EquipmentSlot.HAND)
&& !event.getHand().equals(EquipmentSlot.OFF_HAND)))) {
return;
}
}
- if(item == null){
+ if (item == null) {
return;
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_INTERACT, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonActionVariables(event.getAction(),player)
- .setCommonItemVariables(item,null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonActionVariables(event.getAction(), player)
+ .setCommonItemVariables(item, null)
.checkEvent();
}
@@ -70,8 +72,8 @@ public void onItemConsume(PlayerItemConsumeEvent event) {
ItemStack item = event.getItem();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_CONSUME, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(item,null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(item, null)
.checkEvent();
}
@@ -81,43 +83,43 @@ public void onItemPickUp(PlayerPickupItemEvent event) {
ItemStack item = event.getItem().getItemStack();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_PICKUP, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(item,null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(item, null)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemRepair(InventoryClickEvent event) {
- if(!event.getInventory().getType().equals(InventoryType.ANVIL)){
+ if (!event.getInventory().getType().equals(InventoryType.ANVIL)) {
return;
}
- if(OtherUtils.isLegacy()){
+ if (OtherUtils.isLegacy()) {
return;
}
- if(!(event.getInventory() instanceof AnvilInventory)){
+ if (!(event.getInventory() instanceof AnvilInventory)) {
return;
}
AnvilInventory inv = (AnvilInventory) event.getInventory();
Player player = (Player) event.getWhoClicked();
- if(!inv.equals(InventoryUtils.getTopInventory(player))){
+ if (!inv.equals(InventoryUtils.getTopInventory(player))) {
return;
}
- if(event.getRawSlot() != 2){
+ if (event.getRawSlot() != 2) {
return;
}
- String renameText = "";
+ String renameText;
ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R3)){
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_21_R3)) {
AnvilView view = (AnvilView) event.getView();
- if(player.getLevel() < view.getRepairCost()){
+ if (player.getLevel() < view.getRepairCost()) {
return;
}
renameText = view.getRenameText();
- }else{
- if(player.getLevel() < inv.getRepairCost()){
+ } else {
+ if (player.getLevel() < inv.getRepairCost()) {
return;
}
renameText = inv.getRenameText();
@@ -125,16 +127,16 @@ public void onItemRepair(InventoryClickEvent event) {
ItemStack resultItem = inv.getItem(2);
- if(resultItem == null || resultItem.getType().equals(Material.AIR)){
+ if (resultItem == null || resultItem.getType().equals(Material.AIR)) {
return;
}
ItemStack item = inv.getItem(0);
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_REPAIR, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%rename_text%",renameText)
- ).setCommonItemVariables(item,null)
+ new StoredVariable("%rename_text%", renameText)
+ ).setCommonItemVariables(item, null)
.checkEvent();
}
@@ -146,34 +148,31 @@ public void onItemMove(InventoryClickEvent event) {
ArrayList items = new ArrayList<>();
items.add(item);
- if(event.getClick().equals(ClickType.NUMBER_KEY)) {
+ if (event.getClick().equals(ClickType.NUMBER_KEY)) {
int slotHotbar = event.getHotbarButton();
ItemStack item2 = player.getInventory().getItem(slotHotbar);
//Two items swap places
items.add(item2);
}
- String inventoryType = "";
- String inventoryTitle = "";
- InventoryView view = player.getOpenInventory();
- if(view != null) {
- inventoryType = InventoryUtils.getOpenInventoryViewType(player).name();
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
- inventoryTitle = MiniMessageUtils.getOpenInventoryViewTitlePlain(player);
- }else{
- inventoryTitle = ChatColor.stripColor(InventoryUtils.getOpenInventoryViewTitle(player));
- }
+ String inventoryType;
+ String inventoryTitle;
+ inventoryType = InventoryUtils.getOpenInventoryViewType(player).name();
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
+ inventoryTitle = MiniMessageUtils.getOpenInventoryViewTitlePlain(player);
+ } else {
+ inventoryTitle = ChatColor.stripColor(InventoryUtils.getOpenInventoryViewTitle(player));
}
int slot = event.getSlot();
- for(ItemStack i : items){
+ for (ItemStack i : items) {
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_MOVE, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%inventory_type%",inventoryType),
- new StoredVariable("%slot%",slot+""),
+ new StoredVariable("%inventory_type%", inventoryType),
+ new StoredVariable("%slot%", slot + ""),
new StoredVariable("%inventory_title%", inventoryTitle)
- ).setCommonItemVariables(i,null)
+ ).setCommonItemVariables(i, null)
.checkEvent();
}
}
@@ -184,8 +183,8 @@ public void onItemCraft(CraftItemEvent event) {
ItemStack item = event.getRecipe().getResult();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_CRAFT, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(item,null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(item, null)
.checkEvent();
}
@@ -195,8 +194,8 @@ public void onItemDrop(PlayerDropItemEvent event) {
ItemStack item = event.getItemDrop().getItemStack();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_DROP, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(item,null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(item, null)
.checkEvent();
}
@@ -206,10 +205,10 @@ public void onItemSelect(ItemSelectEvent event) {
ItemStack item = event.getItem();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.ITEM_SELECT, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%select_type%",event.getSelectType().name())
- ).setCommonItemVariables(item,null)
+ new StoredVariable("%select_type%", event.getSelectType().name())
+ ).setCommonItemVariables(item, null)
.checkEvent();
}
@@ -219,21 +218,26 @@ public void onItemEnchant(EnchantItemEvent event) {
ItemStack item = event.getItem();
- String enchantmentStringList = "";
- List> enchantmentList = new ArrayList<>(event.getEnchantsToAdd().entrySet());
- for(int i=0;i> enchantmentList = new ArrayList<>(event.getEnchantsToAdd().entrySet());
+ for (int i = 0; i < enchantmentList.size(); i++) {
+ String enchant = enchantmentList.get(i).getKey().getName() + ":" + enchantmentList.get(i).getValue();
+ enchantmentStringList.append(enchant);
+ if (i < enchantmentList.size() - 1) {
+ enchantmentStringList.append(";");
+ }
+ }
+ return enchantmentStringList;
+ }
}
diff --git a/src/main/java/ce/ajneb97/listeners/OtherEventsListener.java b/src/main/java/ce/ajneb97/listeners/OtherEventsListener.java
index 6b1f70d..99b82c9 100644
--- a/src/main/java/ce/ajneb97/listeners/OtherEventsListener.java
+++ b/src/main/java/ce/ajneb97/listeners/OtherEventsListener.java
@@ -2,7 +2,7 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.api.ConditionalEventsCallEvent;
-import ce.ajneb97.managers.EventsManager;
+import ce.ajneb97.manager.EventsManager;
import ce.ajneb97.model.CEEvent;
import ce.ajneb97.model.EventType;
import ce.ajneb97.model.StoredVariable;
@@ -22,19 +22,21 @@
import java.util.ArrayList;
+@SuppressWarnings("deprecation")
public class OtherEventsListener implements Listener {
public ConditionalEvents plugin;
+
public OtherEventsListener(ConditionalEvents plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onEntitySpawn(CreatureSpawnEvent event){
+ public void onEntitySpawn(CreatureSpawnEvent event) {
Entity entity = event.getEntity();
new ConditionEvent(plugin, null, event, EventType.ENTITY_SPAWN, null)
.addVariables(
- new StoredVariable("%reason%",event.getSpawnReason().name())
+ new StoredVariable("%reason%", event.getSpawnReason().name())
)
.setCommonEntityVariables(entity).checkEvent();
}
@@ -44,60 +46,56 @@ public void onConsoleCommand(ServerCommandEvent event) {
String command = event.getCommand();
String[] args = command.split(" ");
- ArrayList eventVariables = new ArrayList();
- for(int i=1;i eventVariables = new ArrayList<>();
+ for (int i = 1; i < args.length; i++) {
+ eventVariables.add(new StoredVariable("%arg_" + (i) + "%", args[i]));
}
new ConditionEvent(plugin, null, event, EventType.CONSOLE_COMMAND, null)
.addVariables(
- new StoredVariable("%command%",command),
- new StoredVariable("%main_command%",args[0]),
- new StoredVariable("%args_length%",(args.length-1)+"")
+ new StoredVariable("%command%", command),
+ new StoredVariable("%main_command%", args[0]),
+ new StoredVariable("%args_length%", (args.length - 1) + "")
).addVariables(eventVariables)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onConditionalEventsCallEvent(ConditionalEventsCallEvent event){
+ public void onConditionalEventsCallEvent(ConditionalEventsCallEvent event) {
Player player = event.getPlayer();
String eventName = event.getEvent();
EventsManager eventsManager = plugin.getEventsManager();
CEEvent ceEvent = eventsManager.getEvent(eventName);
- if(!ceEvent.getEventType().equals(EventType.CALL)){
+ if (!ceEvent.getEventType().equals(EventType.CALL)) {
return;
}
- if(!ceEvent.isEnabled()){
+ if (!ceEvent.isEnabled()) {
return;
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.CALL, null)
.addVariables(event.getVariables());
- eventsManager.checkSingularEvent(conditionEvent,ceEvent);
+ eventsManager.checkSingularEvent(conditionEvent, ceEvent);
}
-
//Not for CE events
@EventHandler(priority = EventPriority.HIGHEST)
- public void onProjectileLaunch(ProjectileLaunchEvent event){
+ public void onProjectileLaunch(ProjectileLaunchEvent event) {
Projectile projectile = event.getEntity();
- if(projectile.getShooter() instanceof Player) {
+ if (projectile.getShooter() instanceof Player) {
Player player = (Player) projectile.getShooter();
ItemStack usedItem = player.getItemInHand();
- if(usedItem == null){
- return;
- }
- projectile.setMetadata("conditionaleventes_projectile_item",new FixedMetadataValue(plugin,usedItem.clone()));
+ projectile.setMetadata("conditionaleventes_projectile_item", new FixedMetadataValue(plugin, usedItem.clone()));
}
}
@EventHandler
public void fireworkDamage(EntityDamageByEntityEvent event) {
Entity damager = event.getDamager();
- if(event.getEntity() instanceof Player && damager.getType().name().contains("FIREWORK")) {
- if(damager.hasMetadata("conditionalevents")) {
+ if (event.getEntity() instanceof Player && damager.getType().name().contains("FIREWORK")) {
+ if (damager.hasMetadata("conditionalevents")) {
event.setCancelled(true);
}
}
diff --git a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
index 90d366b..08faee6 100644
--- a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
+++ b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java
@@ -3,11 +3,10 @@
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.libs.armorequipevent.ArmorEquipEvent;
import ce.ajneb97.libs.offhandevent.OffHandEvent;
-import ce.ajneb97.managers.MessagesManager;
+import ce.ajneb97.manager.MessagesManager;
import ce.ajneb97.model.EventType;
import ce.ajneb97.model.StoredVariable;
import ce.ajneb97.model.internal.ConditionEvent;
-import ce.ajneb97.model.player.PlayerData;
import ce.ajneb97.utils.*;
import org.bukkit.*;
import org.bukkit.block.Block;
@@ -28,26 +27,29 @@
import java.util.ArrayList;
+@SuppressWarnings("deprecation")
public class PlayerEventsListener implements Listener {
- public ConditionalEvents plugin;
+ private final ConditionalEvents plugin;
+ private final String prefix = ConditionalEvents.prefix;
+
public PlayerEventsListener(ConditionalEvents plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPreJoin(AsyncPlayerPreLoginEvent event){
+ public void onPreJoin(AsyncPlayerPreLoginEvent event) {
new ConditionEvent(plugin, null, event, EventType.PLAYER_PRE_JOIN, null)
.addVariables(
- new StoredVariable("%name%",event.getName()),
+ new StoredVariable("%name%", event.getName()),
new StoredVariable("%ip%", event.getAddress().getHostAddress()),
- new StoredVariable("%uuid%",event.getUniqueId().toString())
+ new StoredVariable("%uuid%", event.getUniqueId().toString())
)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onJoin(PlayerJoinEvent event){
+ public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
new ConditionEvent(plugin, player, event, EventType.PLAYER_JOIN, null)
.checkEvent();
@@ -56,15 +58,15 @@ public void onJoin(PlayerJoinEvent event){
//Update notification
String latestVersion = plugin.getUpdateCheckerManager().getLatestVersion();
- if(player.isOp() && !(plugin.version.equals(latestVersion)) &&
- plugin.getConfigsManager().getMainConfigManager().isUpdateNotifications()){
- player.sendMessage(MessagesManager.getLegacyColoredMessage(plugin.prefix+" &cThere is a new version available. &e(&7"+latestVersion+"&e)"));
+ if (player.isOp() && !(plugin.version.equals(latestVersion)) &&
+ plugin.getConfigsManager().getMainConfigManager().isUpdateNotifications()) {
+ player.sendMessage(MessagesManager.getLegacyColoredMessage(prefix + " &cThere is a new version available. &e(&7" + latestVersion + "&e)"));
player.sendMessage(MessagesManager.getLegacyColoredMessage("&cYou can download it at: &ahttps://modrinth.com/plugin/conditionalevents"));
}
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onLeave(PlayerQuitEvent event){
+ public void onLeave(PlayerQuitEvent event) {
Player player = event.getPlayer();
plugin.getPlayerManager().manageLeave(player);
@@ -74,14 +76,14 @@ public void onLeave(PlayerQuitEvent event){
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onRespawn(PlayerRespawnEvent event){
+ public void onRespawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
new ConditionEvent(plugin, player, event, EventType.PLAYER_RESPAWN, null)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onDeath(PlayerDeathEvent event){
+ public void onDeath(PlayerDeathEvent event) {
Player player = event.getEntity();
String cause = "";
String killerType = "";
@@ -89,19 +91,19 @@ public void onDeath(PlayerDeathEvent event){
String killerNameColorFormat = "";
EntityDamageEvent entityDamageEvent = player.getLastDamageCause();
- if(entityDamageEvent != null) {
+ if (entityDamageEvent != null) {
EntityDamageEvent.DamageCause damageCause = entityDamageEvent.getCause();
cause = damageCause.name();
- if(entityDamageEvent instanceof EntityDamageByEntityEvent) {
+ if (entityDamageEvent instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent event2 = (EntityDamageByEntityEvent) entityDamageEvent;
Entity killer = event2.getDamager();
killerType = killer.getType().name();
- if(killer.getCustomName() != null) {
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
+ if (killer.getCustomName() != null) {
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
killerName = MiniMessageUtils.getEntityCustomNamePlain(killer);
killerNameColorFormat = MiniMessageUtils.getEntityCustomNameMiniMessage(killer);
- }else{
+ } else {
killerName = ChatColor.stripColor(killer.getCustomName());
killerNameColorFormat = killer.getCustomName().replace("§", "&");
}
@@ -111,129 +113,122 @@ public void onDeath(PlayerDeathEvent event){
new ConditionEvent(plugin, player, event, EventType.PLAYER_DEATH, null)
.addVariables(
- new StoredVariable("%cause%",cause),
- new StoredVariable("%killer_type%",killerType),
- new StoredVariable("%killer_name%",killerName),
- new StoredVariable("%killer_color_format_name%",killerNameColorFormat)
+ new StoredVariable("%cause%", cause),
+ new StoredVariable("%killer_type%", killerType),
+ new StoredVariable("%killer_name%", killerName),
+ new StoredVariable("%killer_color_format_name%", killerNameColorFormat)
)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onBlockInteract(PlayerInteractEvent event){
+ public void onBlockInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block block = event.getClickedBlock();
ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_10_R1)) {
- if(!event.getAction().equals(Action.PHYSICAL) && (event.getHand() == null || !event.getHand().equals(EquipmentSlot.HAND))) {
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_10_R1)) {
+ if (!event.getAction().equals(Action.PHYSICAL) && (event.getHand() == null || !event.getHand().equals(EquipmentSlot.HAND))) {
return;
}
}
- if(block == null){
+ if (block == null) {
return;
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.BLOCK_INTERACT, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.setCommonBlockVariables(block)
- .setCommonActionVariables(event.getAction(),player)
- .setCommonItemVariables(player.getItemInHand(),null)
+ .setCommonActionVariables(event.getAction(), player)
+ .setCommonItemVariables(player.getItemInHand(), null)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onEntityInteract(PlayerInteractEntityEvent event){
+ public void onEntityInteract(PlayerInteractEntityEvent event) {
Player player = event.getPlayer();
Entity entity = event.getRightClicked();
ServerVersion serverVersion = ConditionalEvents.serverVersion;
- if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1) && !event.getHand().equals(EquipmentSlot.HAND)) {
- return;
- }
- if(entity == null){
+ if (serverVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_9_R1) && !event.getHand().equals(EquipmentSlot.HAND)) {
return;
}
LivingEntity target = null;
- if(entity instanceof LivingEntity) {
+ if (entity instanceof LivingEntity) {
target = (LivingEntity) entity;
}
new ConditionEvent(plugin, player, event, EventType.ENTITY_INTERACT, target)
.setCommonEntityVariables(entity)
- .setCommonItemVariables(player.getItemInHand(),null)
+ .setCommonItemVariables(player.getItemInHand(), null)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPlayerAttack(EntityDamageByEntityEvent event){
+ public void onPlayerAttack(EntityDamageByEntityEvent event) {
Entity attacker = event.getDamager();
Entity damaged = event.getEntity();
- Player player = null;
- if(attacker == null || damaged == null) {
- return;
- }
+ Player player;
//For projectiles must be the used item to shoot.
ItemStack item = null;
String attackType = "PLAYER";
- if(attacker instanceof Projectile) {
+ if (attacker instanceof Projectile) {
Projectile projectile = (Projectile) attacker;
- if(projectile.getShooter() instanceof Player) {
+ if (projectile.getShooter() instanceof Player) {
attackType = projectile.getType().name();
player = (Player) projectile.getShooter();
- if(projectile.hasMetadata("conditionaleventes_projectile_item")){
+ if (projectile.hasMetadata("conditionaleventes_projectile_item")) {
item = (ItemStack) projectile.getMetadata("conditionaleventes_projectile_item").get(0).value();
}
- }else{
+ } else {
return;
}
- }else if(attacker instanceof Player) {
+ } else if (attacker instanceof Player) {
player = (Player) attacker;
item = player.getItemInHand();
- }else{
+ } else {
return;
}
LivingEntity target = null;
- if(damaged instanceof LivingEntity) {
+ if (damaged instanceof LivingEntity) {
target = (LivingEntity) damaged;
}
-
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_ATTACK, target);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%damage%",MathUtils.truncate(event.getFinalDamage())+""),
- new StoredVariable("%original_damage%",MathUtils.truncate(event.getDamage())+""),
- new StoredVariable("%attack_type%", attackType)
- ).setCommonItemVariables(item,null)
+ new StoredVariable("%damage%", MathUtils.truncate(event.getFinalDamage()) + ""),
+ new StoredVariable("%original_damage%", MathUtils.truncate(event.getDamage()) + ""),
+ new StoredVariable("%attack_type%", attackType)
+ ).setCommonItemVariables(item, null)
.setCommonVictimVariables(damaged)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onWorldChange(PlayerChangedWorldEvent event){
+ public void onWorldChange(PlayerChangedWorldEvent event) {
Player player = event.getPlayer();
new ConditionEvent(plugin, player, event, EventType.PLAYER_WORLD_CHANGE, null)
.addVariables(
- new StoredVariable("%world_from%",event.getFrom().getName()),
- new StoredVariable("%world_to%",player.getWorld().getName()),
- new StoredVariable("%online_players_from%",event.getFrom().getPlayers().size()+""),
- new StoredVariable("%online_players_to%",player.getWorld().getPlayers().size()+"")
+ new StoredVariable("%world_from%", event.getFrom().getName()),
+ new StoredVariable("%world_to%", player.getWorld().getName()),
+ new StoredVariable("%online_players_from%", event.getFrom().getPlayers().size() + ""),
+ new StoredVariable("%online_players_to%", player.getWorld().getPlayers().size() + "")
).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPlayerDamaged(EntityDamageEvent event){
+ public void onPlayerDamaged(EntityDamageEvent event) {
Entity damaged = event.getEntity();
- if(damaged == null || !(damaged instanceof Player) || event.getCause() == null) {
+ if (!(damaged instanceof Player)) {
return;
}
@@ -242,15 +237,15 @@ public void onPlayerDamaged(EntityDamageEvent event){
String damagerType = "";
String damagerName = "";
String damagerNameColorFormat = "";
- if(event instanceof EntityDamageByEntityEvent) {
+ if (event instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent event2 = (EntityDamageByEntityEvent) event;
Entity damager = event2.getDamager();
damagerType = damager.getType().name();
- if(damager != null && damager.getCustomName() != null) {
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
+ if (damager.getCustomName() != null) {
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
damagerName = MiniMessageUtils.getEntityCustomNamePlain(damager);
damagerNameColorFormat = MiniMessageUtils.getEntityCustomNameMiniMessage(damager);
- }else{
+ } else {
damagerName = ChatColor.stripColor(damager.getCustomName());
damagerNameColorFormat = damager.getCustomName().replace("§", "&");
}
@@ -259,51 +254,51 @@ public void onPlayerDamaged(EntityDamageEvent event){
new ConditionEvent(plugin, player, event, EventType.PLAYER_DAMAGE, null)
.addVariables(
- new StoredVariable("%damager_type%",damagerType),
- new StoredVariable("%damager_name%",damagerName),
- new StoredVariable("%damager_color_format_name%",damagerNameColorFormat),
- new StoredVariable("%damage%", MathUtils.truncate(event.getFinalDamage())+""),
- new StoredVariable("%original_damage%",MathUtils.truncate(event.getDamage())+""),
- new StoredVariable("%cause%",cause)
+ new StoredVariable("%damager_type%", damagerType),
+ new StoredVariable("%damager_name%", damagerName),
+ new StoredVariable("%damager_color_format_name%", damagerNameColorFormat),
+ new StoredVariable("%damage%", MathUtils.truncate(event.getFinalDamage()) + ""),
+ new StoredVariable("%original_damage%", MathUtils.truncate(event.getDamage()) + ""),
+ new StoredVariable("%cause%", cause)
).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onPlayerKill(EntityDeathEvent event){
+ public void onPlayerKill(EntityDeathEvent event) {
LivingEntity entity = event.getEntity();
- if(entity == null || entity.getKiller() == null) {
+ if (entity.getKiller() == null) {
return;
}
Player player = entity.getKiller();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_KILL, entity);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.setCommonVictimVariables(entity).
- setCommonItemVariables(player.getItemInHand(),null)
+ setCommonItemVariables(player.getItemInHand(), null)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onBlockPlace(BlockPlaceEvent event){
+ public void onBlockPlace(BlockPlaceEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.BLOCK_PLACE, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(player.getItemInHand(),null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(player.getItemInHand(), null)
.setCommonBlockVariables(block)
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onBlockBreak(BlockBreakEvent event){
+ public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
Block block = event.getBlock();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.BLOCK_BREAK, null);
- if(!conditionEvent.containsValidEvents()) return;
- conditionEvent.setCommonItemVariables(player.getItemInHand(),null)
+ if (!conditionEvent.containsValidEvents()) return;
+ conditionEvent.setCommonItemVariables(player.getItemInHand(), null)
.setCommonBlockVariables(block)
.checkEvent();
}
@@ -314,16 +309,16 @@ public void onCommandUse(PlayerCommandPreprocessEvent event) {
String command = event.getMessage();
String[] args = command.split(" ");
- ArrayList eventVariables = new ArrayList();
- for(int i=1;i eventVariables = new ArrayList<>();
+ for (int i = 1; i < args.length; i++) {
+ eventVariables.add(new StoredVariable("%arg_" + (i) + "%", args[i]));
}
new ConditionEvent(plugin, player, event, EventType.PLAYER_COMMAND, null)
.addVariables(
- new StoredVariable("%command%",command),
- new StoredVariable("%main_command%",args[0]),
- new StoredVariable("%args_length%",(args.length-1)+"")
+ new StoredVariable("%command%", command),
+ new StoredVariable("%main_command%", args[0]),
+ new StoredVariable("%args_length%", (args.length - 1) + "")
).addVariables(eventVariables)
.checkEvent();
}
@@ -334,7 +329,7 @@ public void onChat(AsyncPlayerChatEvent event) {
new ConditionEvent(plugin, player, event, EventType.PLAYER_CHAT, null)
.addVariables(
- new StoredVariable("%message%",event.getMessage())
+ new StoredVariable("%message%", event.getMessage())
).setAsync(true).checkEvent();
}
@@ -344,8 +339,8 @@ public void onPlayerLevelChange(PlayerLevelChangeEvent event) {
new ConditionEvent(plugin, player, event, EventType.PLAYER_LEVELUP, null)
.addVariables(
- new StoredVariable("%old_level%",event.getOldLevel()+""),
- new StoredVariable("%new_level%",event.getNewLevel()+"")
+ new StoredVariable("%old_level%", event.getOldLevel() + ""),
+ new StoredVariable("%new_level%", event.getNewLevel() + "")
).checkEvent();
}
@@ -356,34 +351,34 @@ public void onArmorEquip(ArmorEquipEvent event) {
String equipType = "EQUIP";
ItemStack newItem = event.getNewArmorPiece();
ItemStack previousItem = event.getOldArmorPiece();
- ItemStack selectedItem = null;
- if(newItem == null || newItem.getType().name().equals("AIR")) {
+ ItemStack selectedItem;
+ if (newItem == null || newItem.getType().name().equals("AIR")) {
equipType = "UNEQUIP";
selectedItem = previousItem;
- }else {
+ } else {
selectedItem = newItem;
}
String type = "";
- if(event.getType() != null) {
+ if (event.getType() != null) {
type = event.getType().name();
}
- if(newItem != null && !newItem.getType().name().equals("AIR")
+ if (newItem != null && !newItem.getType().name().equals("AIR")
&& previousItem != null && !previousItem.getType().name().equals("AIR")) {
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_ARMOR, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%armor_type%",type),
- new StoredVariable("%equip_type%","UNEQUIP")
- ).setCommonItemVariables(previousItem,null)
+ new StoredVariable("%armor_type%", type),
+ new StoredVariable("%equip_type%", "UNEQUIP")
+ ).setCommonItemVariables(previousItem, null)
.checkEvent();
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_ARMOR, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%armor_type%",type),
- new StoredVariable("%equip_type%",equipType)
- ).setCommonItemVariables(selectedItem,null)
+ new StoredVariable("%armor_type%", type),
+ new StoredVariable("%equip_type%", equipType)
+ ).setCommonItemVariables(selectedItem, null)
.checkEvent();
@@ -399,19 +394,19 @@ public void onPlayerTeleport(PlayerTeleportEvent event) {
new ConditionEvent(plugin, player, event, EventType.PLAYER_TELEPORT, null)
.addVariables(
- new StoredVariable("%cause%",event.getCause()+""),
- new StoredVariable("%from_x%",locationFrom.getX()+""),
- new StoredVariable("%from_y%",locationFrom.getY()+""),
- new StoredVariable("%from_z%",locationFrom.getZ()+""),
- new StoredVariable("%from_world%",locationFrom.getWorld().getName()+""),
- new StoredVariable("%from_yaw%",locationFrom.getYaw()+""),
- new StoredVariable("%from_pitch%",locationFrom.getPitch()+""),
- new StoredVariable("%to_x%",locationTo.getX()+""),
- new StoredVariable("%to_y%",locationTo.getY()+""),
- new StoredVariable("%to_z%",locationTo.getZ()+""),
- new StoredVariable("%to_world%",locationTo.getWorld().getName()+""),
- new StoredVariable("%to_yaw%",locationTo.getYaw()+""),
- new StoredVariable("%to_pitch%",locationTo.getPitch()+"")
+ new StoredVariable("%cause%", event.getCause() + ""),
+ new StoredVariable("%from_x%", locationFrom.getX() + ""),
+ new StoredVariable("%from_y%", locationFrom.getY() + ""),
+ new StoredVariable("%from_z%", locationFrom.getZ() + ""),
+ new StoredVariable("%from_world%", locationFrom.getWorld().getName()),
+ new StoredVariable("%from_yaw%", locationFrom.getYaw() + ""),
+ new StoredVariable("%from_pitch%", locationFrom.getPitch() + ""),
+ new StoredVariable("%to_x%", locationTo.getX() + ""),
+ new StoredVariable("%to_y%", locationTo.getY() + ""),
+ new StoredVariable("%to_z%", locationTo.getZ() + ""),
+ new StoredVariable("%to_world%", locationTo.getWorld().getName()),
+ new StoredVariable("%to_yaw%", locationTo.getYaw() + ""),
+ new StoredVariable("%to_pitch%", locationTo.getPitch() + "")
).checkEvent();
}
@@ -419,13 +414,13 @@ public void onPlayerTeleport(PlayerTeleportEvent event) {
public void onBedEnter(PlayerBedEnterEvent event) {
Player player = event.getPlayer();
- if(OtherUtils.isLegacy()){
+ if (OtherUtils.isLegacy()) {
return;
}
new ConditionEvent(plugin, player, event, EventType.PLAYER_BED_ENTER, null)
.addVariables(
- new StoredVariable("%result%",event.getBedEnterResult()+"")
+ new StoredVariable("%result%", event.getBedEnterResult() + "")
).checkEvent();
}
@@ -442,30 +437,30 @@ public void onFishEvent(PlayerFishEvent event) {
ItemStack caughtItem = null;
LivingEntity target = null;
- if(caught != null){
+ if (caught != null) {
caughtType = caught.getType().name();
Location l = caught.getLocation();
x = l.getX();
y = l.getY();
z = l.getZ();
- if(caught instanceof Item){
+ if (caught instanceof Item) {
caughtItem = ((Item) caught).getItemStack();
}
- if(caught instanceof LivingEntity) {
+ if (caught instanceof LivingEntity) {
target = (LivingEntity) caught;
}
}
new ConditionEvent(plugin, player, event, EventType.PLAYER_FISH, target)
.addVariables(
- new StoredVariable("%state%",state.name()+""),
- new StoredVariable("%caught_type%",caughtType),
- new StoredVariable("%caught_x%",x+""),
- new StoredVariable("%caught_y%",y+""),
- new StoredVariable("%caught_z%",z+"")
- ).setCommonItemVariables(caughtItem,null).checkEvent();
+ new StoredVariable("%state%", state.name()),
+ new StoredVariable("%caught_type%", caughtType),
+ new StoredVariable("%caught_x%", x + ""),
+ new StoredVariable("%caught_y%", y + ""),
+ new StoredVariable("%caught_z%", z + "")
+ ).setCommonItemVariables(caughtItem, null).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
@@ -473,16 +468,16 @@ public void onOpenInventory(InventoryOpenEvent event) {
Player player = (Player) event.getPlayer();
String inventoryTitle;
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
inventoryTitle = MiniMessageUtils.getInventoryTitlePlain(event);
- }else{
+ } else {
inventoryTitle = ChatColor.stripColor(InventoryUtils.getViewTitle(event));
}
new ConditionEvent(plugin, player, event, EventType.PLAYER_OPEN_INVENTORY, null)
.addVariables(
- new StoredVariable("%inventory_type%",event.getInventory().getType().name()),
- new StoredVariable("%inventory_title%",inventoryTitle)
+ new StoredVariable("%inventory_type%", event.getInventory().getType().name()),
+ new StoredVariable("%inventory_title%", inventoryTitle)
).checkEvent();
}
@@ -491,16 +486,16 @@ public void onCloseInventory(InventoryCloseEvent event) {
Player player = (Player) event.getPlayer();
String inventoryTitle;
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
inventoryTitle = MiniMessageUtils.getInventoryTitlePlain(event);
- }else{
+ } else {
inventoryTitle = ChatColor.stripColor(InventoryUtils.getViewTitle(event));
}
new ConditionEvent(plugin, player, event, EventType.PLAYER_CLOSE_INVENTORY, null)
.addVariables(
- new StoredVariable("%inventory_type%",event.getInventory().getType().name()),
- new StoredVariable("%inventory_title%",inventoryTitle)
+ new StoredVariable("%inventory_type%", event.getInventory().getType().name()),
+ new StoredVariable("%inventory_title%", inventoryTitle)
).checkEvent();
}
@@ -509,104 +504,100 @@ public void onClickInventory(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_CLICK_INVENTORY, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
String clickType = event.getClick().name();
String action = event.getAction().name();
- String slotType = "";
- if(event.getSlotType() != null){
- slotType = event.getSlotType().name();
- }
- String title = "";
- String titleColorFormat = "";
- if(event.getView() != null){
- if(plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()){
- title = MiniMessageUtils.getInventoryTitlePlain(event);
- titleColorFormat = MiniMessageUtils.getInventoryTitleMiniMessage(event);
- }else{
- title = InventoryUtils.getViewTitle(event);
- titleColorFormat = title.replace("§", "&");
- title = ChatColor.stripColor(title);
- }
+ String slotType;
+ slotType = event.getSlotType().name();
+ String title;
+ String titleColorFormat;
+ if (plugin.getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
+ title = MiniMessageUtils.getInventoryTitlePlain(event);
+ titleColorFormat = MiniMessageUtils.getInventoryTitleMiniMessage(event);
+ } else {
+ title = InventoryUtils.getViewTitle(event);
+ titleColorFormat = title.replace("§", "&");
+ title = ChatColor.stripColor(title);
}
String inventoryType = "";
int slot = event.getSlot();
- if(event.getClickedInventory() != null){
+ if (event.getClickedInventory() != null) {
inventoryType = event.getClickedInventory().getType().name();
}
conditionEvent.addVariables(
- new StoredVariable("%inventory_type%",inventoryType),
- new StoredVariable("%inventory_title%",title),
- new StoredVariable("%inventory_title_color_format%",titleColorFormat),
- new StoredVariable("%click_type%",clickType),
- new StoredVariable("%action_type%",action),
- new StoredVariable("%slot_type%",slotType),
- new StoredVariable("%slot%",slot+"")
- ).setCommonItemVariables(event.getCurrentItem(),null)
- .setCommonItemVariables(event.getCursor(),"cursor")
+ new StoredVariable("%inventory_type%", inventoryType),
+ new StoredVariable("%inventory_title%", title),
+ new StoredVariable("%inventory_title_color_format%", titleColorFormat),
+ new StoredVariable("%click_type%", clickType),
+ new StoredVariable("%action_type%", action),
+ new StoredVariable("%slot_type%", slotType),
+ new StoredVariable("%slot%", slot + "")
+ ).setCommonItemVariables(event.getCurrentItem(), null)
+ .setCommonItemVariables(event.getCursor(), "cursor")
.checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onStatisticIncrement(PlayerStatisticIncrementEvent event){
+ public void onStatisticIncrement(PlayerStatisticIncrementEvent event) {
Player player = event.getPlayer();
String material = "";
- if(event.getMaterial() != null){
+ if (event.getMaterial() != null) {
material = event.getMaterial().name();
}
String entityType = "";
- if(event.getEntityType() != null){
+ if (event.getEntityType() != null) {
entityType = event.getEntityType().name();
}
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_STATISTIC, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%statistic_name%",event.getStatistic().name()),
- new StoredVariable("%previous_value%",event.getPreviousValue()+""),
- new StoredVariable("%new_value%",event.getNewValue()+""),
- new StoredVariable("%entity%",entityType),
- new StoredVariable("%block%",material)
+ new StoredVariable("%statistic_name%", event.getStatistic().name()),
+ new StoredVariable("%previous_value%", event.getPreviousValue() + ""),
+ new StoredVariable("%new_value%", event.getNewValue() + ""),
+ new StoredVariable("%entity%", entityType),
+ new StoredVariable("%block%", material)
).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onSneak(PlayerToggleSneakEvent event){
+ public void onSneak(PlayerToggleSneakEvent event) {
Player player = event.getPlayer();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_SNEAK, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%is_sneaking%",event.isSneaking()+"")
+ new StoredVariable("%is_sneaking%", event.isSneaking() + "")
).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onRun(PlayerToggleSprintEvent event){
+ public void onRun(PlayerToggleSprintEvent event) {
Player player = event.getPlayer();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_RUN, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%is_running%",event.isSprinting()+"")
+ new StoredVariable("%is_running%", event.isSprinting() + "")
).checkEvent();
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onHealthRegain(EntityRegainHealthEvent event){
+ public void onHealthRegain(EntityRegainHealthEvent event) {
Entity entity = event.getEntity();
- if(!(entity instanceof Player)){
+ if (!(entity instanceof Player)) {
return;
}
Player player = (Player) entity;
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_REGAIN_HEALTH, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%reason%",event.getRegainReason().name()),
- new StoredVariable("%amount%",event.getAmount()+"")
+ new StoredVariable("%reason%", event.getRegainReason().name()),
+ new StoredVariable("%amount%", event.getAmount() + "")
).checkEvent();
}
@@ -618,10 +609,10 @@ public void onPlayerOffHand(OffHandEvent event) {
ItemStack recoveredItem = event.getRecoveredFromOffhand() != null ? event.getRecoveredFromOffhand() : new ItemStack(Material.AIR);
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_OFFHAND, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%movement_type%",event.getMovementType().name())
- ).setCommonItemVariables(placedItem,null).setCommonItemVariables(recoveredItem,"offhand")
+ new StoredVariable("%movement_type%", event.getMovementType().name())
+ ).setCommonItemVariables(placedItem, null).setCommonItemVariables(recoveredItem, "offhand")
.checkEvent();
}
}
diff --git a/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_16.java b/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_16.java
index c9f44fc..380f145 100644
--- a/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_16.java
+++ b/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_16.java
@@ -12,19 +12,20 @@
public class PlayerEventsListenerNew1_16 implements Listener {
public ConditionalEvents plugin;
+
public PlayerEventsListenerNew1_16(ConditionalEvents plugin) {
this.plugin = plugin;
}
@EventHandler
- public void onPlayerFoodLevelChange(FoodLevelChangeEvent event){
+ public void onPlayerFoodLevelChange(FoodLevelChangeEvent event) {
Player player = (Player) event.getEntity();
ConditionEvent conditionEvent = new ConditionEvent(plugin, player, event, EventType.PLAYER_CHANGE_FOOD, null);
- if(!conditionEvent.containsValidEvents()) return;
+ if (!conditionEvent.containsValidEvents()) return;
conditionEvent.addVariables(
- new StoredVariable("%old_food_level%",player.getFoodLevel()+""),
- new StoredVariable("%new_food_level%",event.getFoodLevel()+"")
- ).checkEvent();
+ new StoredVariable("%old_food_level%", player.getFoodLevel() + ""),
+ new StoredVariable("%new_food_level%", event.getFoodLevel() + "")
+ ).checkEvent();
}
}
diff --git a/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_9.java b/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_9.java
index 771d46b..a5bded1 100644
--- a/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_9.java
+++ b/src/main/java/ce/ajneb97/listeners/PlayerEventsListenerNew1_9.java
@@ -15,29 +15,30 @@
public class PlayerEventsListenerNew1_9 implements Listener {
public ConditionalEvents plugin;
+
public PlayerEventsListenerNew1_9(ConditionalEvents plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onTabComplete(TabCompleteEvent event){
- if(!(event.getSender() instanceof Player)){
+ public void onTabComplete(TabCompleteEvent event) {
+ if (!(event.getSender() instanceof Player)) {
return;
}
Player player = (Player) event.getSender();
String command = event.getBuffer();
- String[] args = command.split(" ",-1);
+ String[] args = command.split(" ", -1);
ArrayList eventVariables = new ArrayList<>();
- for(int i=1;i apiActions;
- public APIManager(ConditionalEvents plugin){
+ private final ConditionalEvents plugin;
+ private final ArrayList apiActions;
+
+ public APIManager(ConditionalEvents plugin) {
this.plugin = plugin;
- apiActions = new ArrayList<>();
+ this.apiActions = new ArrayList<>();
}
- public void registerApiActions(JavaPlugin plugin, ConditionalEventsAction... actions){
- for(ConditionalEventsAction a : actions){
+ public void registerApiActions(JavaPlugin plugin, ConditionalEventsAction... actions) {
+ for (ConditionalEventsAction a : actions) {
a.setPlugin(plugin);
- Bukkit.getConsoleSender().sendMessage(ConditionalEvents.prefix+
- MessagesManager.getLegacyColoredMessage(" &7Custom API Action &a"+a.getName()+" &7registered from plugin &e"+a.getPlugin().getName()));
+ Bukkit.getConsoleSender().sendMessage(ConditionalEvents.prefix +
+ MessagesManager.getLegacyColoredMessage(" &7Custom API Action &a" + a.getName() + " &7registered from plugin &e" + a.getPlugin().getName()));
apiActions.add(a);
}
this.plugin.getConfigsManager().endRepetitiveEvents();
@@ -31,30 +32,30 @@ public void registerApiActions(JavaPlugin plugin, ConditionalEventsAction... act
this.plugin.getVerifyManager().verifyEvents();
}
- public void unregisterApiActions(JavaPlugin plugin){
+ public void unregisterApiActions(JavaPlugin plugin) {
apiActions.removeIf(a -> a.getPlugin() == plugin);
this.plugin.getConfigsManager().endRepetitiveEvents();
this.plugin.getConfigsManager().configureEvents();
this.plugin.getVerifyManager().verifyEvents();
}
- public ConditionalEventsAction getApiAction(String actionName){
- for(ConditionalEventsAction action : apiActions){
- if(action.getName().equals(actionName)){
+ public ConditionalEventsAction getApiAction(String actionName) {
+ for (ConditionalEventsAction action : apiActions) {
+ if (action.getName().equals(actionName)) {
return action;
}
}
return null;
}
- public void executeAction(String actionName, LivingEntity livingEntity, String actionLine, Event minecraftEvent){
+ public void executeAction(String actionName, LivingEntity livingEntity, String actionLine, Event minecraftEvent) {
ConditionalEventsAction action = getApiAction(actionName);
- if(action != null){
+ if (action != null) {
Player player = null;
- if(livingEntity instanceof Player){
- player = (Player)livingEntity;
+ if (livingEntity instanceof Player) {
+ player = (Player) livingEntity;
}
- action.execute(player,actionLine,minecraftEvent);
+ action.execute(player, actionLine, minecraftEvent);
}
}
}
diff --git a/src/main/java/ce/ajneb97/managers/BungeeMessagingManager.java b/src/main/java/ce/ajneb97/manager/BungeeMessagingManager.java
similarity index 68%
rename from src/main/java/ce/ajneb97/managers/BungeeMessagingManager.java
rename to src/main/java/ce/ajneb97/manager/BungeeMessagingManager.java
index 4013972..ba5d123 100644
--- a/src/main/java/ce/ajneb97/managers/BungeeMessagingManager.java
+++ b/src/main/java/ce/ajneb97/manager/BungeeMessagingManager.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.ConditionalEvents;
import com.google.common.io.ByteArrayDataOutput;
@@ -6,24 +6,24 @@
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
+import org.jetbrains.annotations.NotNull;
public class BungeeMessagingManager implements PluginMessageListener {
- private ConditionalEvents plugin;
- public BungeeMessagingManager(ConditionalEvents plugin){
+ private final ConditionalEvents plugin;
+
+ public BungeeMessagingManager(ConditionalEvents plugin) {
this.plugin = plugin;
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord");
Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "BungeeCord", this);
}
@Override
- public void onPluginMessageReceived(String channel, Player player, byte[] bytes) {
- if (!channel.equals("BungeeCord")) {
- return;
- }
+ public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, byte[] bytes) {
+ //
}
- public void sendToServer(Player player,String server){
+ public void sendToServer(Player player, String server) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(server);
diff --git a/src/main/java/ce/ajneb97/manager/DebugManager.java b/src/main/java/ce/ajneb97/manager/DebugManager.java
new file mode 100644
index 0000000..67a93c2
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/DebugManager.java
@@ -0,0 +1,169 @@
+package ce.ajneb97.manager;
+
+import ce.ajneb97.model.actions.ActionTargeter;
+import ce.ajneb97.model.actions.ActionTargeterType;
+import ce.ajneb97.model.actions.ActionType;
+import ce.ajneb97.model.internal.DebugSender;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+
+public class DebugManager {
+
+ private final ArrayList debugSenders;
+
+ public DebugManager() {
+ this.debugSenders = new ArrayList<>();
+ }
+
+ public boolean setDebugSender(CommandSender sender, String event, String playerName) {
+ DebugSender debugSender = getDebugSender(sender);
+ if (debugSender == null) {
+ this.debugSenders.add(new DebugSender(sender, event, playerName));
+ return true;
+ }
+ if (debugSender.getEvent().equals(event)) {
+ //If the same, then remove it
+ removeDebugSender(sender);
+ return false;
+ }
+ //If different, update it
+ debugSender.setEvent(event);
+ return true;
+ }
+
+ public DebugSender getDebugSender(CommandSender sender) {
+ for (DebugSender debugSender : debugSenders) {
+ if (debugSender.getSender().equals(sender)) {
+ return debugSender;
+ }
+ }
+ return null;
+ }
+
+ public void removeDebugSender(CommandSender sender) {
+ for (int i = 0; i < debugSenders.size(); i++) {
+ if (debugSenders.get(i).getSender().equals(sender)) {
+ debugSenders.remove(i);
+ return;
+ }
+ }
+ }
+
+ public void sendConditionMessage(String event, String condition, boolean approved, Player player, boolean start) {
+ if (debugSenders.isEmpty()) {
+ return;
+ }
+ if (condition.endsWith(" or ")) {
+ condition = condition.substring(0, condition.length() - 4);
+ } else if (condition.endsWith(" and ")) {
+ condition = condition.substring(0, condition.length() - 5);
+ }
+
+ String result = "&a&lAPPROVED";
+ if (!approved) {
+ result = "&c&lDENIED";
+ }
+ String playerInfo = "";
+ if (player != null) {
+ playerInfo = "," + player.getName();
+ }
+ String startText = "";
+ if (start) {
+ startText = ",&estart";
+ }
+ String debugMessage = MessagesManager.getLegacyColoredMessage("&8[&c" + event + playerInfo + startText + "&8] &7Checking for: &f")
+ + condition + MessagesManager.getLegacyColoredMessage(" &8| &7Result: " + result);
+
+ for (DebugSender debugSender : debugSenders) {
+ if (debugSender.getEvent().equals(event)) {
+ if (player != null && debugSender.getPlayerName() != null) {
+ if (!debugSender.getPlayerName().equals(player.getName())) {
+ continue;
+ }
+ }
+ debugSender.getSender().sendMessage(debugMessage);
+ }
+ }
+ }
+
+ public void sendActionsMessage(String event, String actionGroup, Player player) {
+ if (debugSenders.isEmpty()) {
+ return;
+ }
+
+ String playerInfo = "";
+ if (player != null) {
+ playerInfo = "," + player.getName();
+ }
+
+ //Fix actionGroup if parameters are present
+ int pos = actionGroup.indexOf("{");
+ if (pos != -1) {
+ actionGroup = actionGroup.substring(0, pos);
+ }
+
+ String debugMessage = "&8[&c" + event + playerInfo + "&8] ";
+ if (actionGroup.equals("cooldown")) {
+ debugMessage = MessagesManager.getLegacyColoredMessage(debugMessage + "&7Cooldown present, overriding.");
+ } else if (actionGroup.equals("one_time")) {
+ debugMessage = MessagesManager.getLegacyColoredMessage(debugMessage + "&7One Time present, overriding.");
+ } else {
+ debugMessage = MessagesManager.getLegacyColoredMessage(debugMessage + "&7Executing actions from action group: &f" + actionGroup);
+ }
+
+ for (DebugSender debugSender : debugSenders) {
+ if (debugSender.getEvent().equals(event)) {
+ if (player != null && debugSender.getPlayerName() != null) {
+ if (!debugSender.getPlayerName().equals(player.getName())) {
+ continue;
+ }
+ }
+ debugSender.getSender().sendMessage(debugMessage);
+ }
+ }
+ }
+
+ public void sendActionMessage(String event, String actionLine, LivingEntity livingEntity, ActionType actionType, ActionTargeter actionTargeter) {
+ if (debugSenders.isEmpty()) {
+ return;
+ }
+
+ // Can be:
+ // [,]
+ // [,]
+ String playerInfo = "";
+ if (livingEntity != null) {
+ if (livingEntity instanceof Player) {
+ playerInfo = "," + livingEntity.getName();
+ } else {
+ playerInfo = "," + livingEntity.getType().name();
+ }
+ }
+
+ String actionTargeterInfo = "";
+ if (!actionTargeter.getType().equals(ActionTargeterType.NORMAL)) {
+ if (actionTargeter.getParameter() == null) {
+ actionTargeterInfo = " &6(" + actionTargeter.getType() + ")";
+ } else {
+ actionTargeterInfo = " &6(" + actionTargeter.getType() + " " + actionTargeter.getParameter() + ")";
+ }
+ }
+
+ String debugMessage = MessagesManager.getLegacyColoredMessage("&8[&c" + event + playerInfo +
+ ",&eaction&8] &7Executing action:" + actionTargeterInfo + " &6[" + actionType + "&6] &f") + actionLine;
+
+ for (DebugSender debugSender : debugSenders) {
+ if (debugSender.getEvent().equals(event)) {
+ if (livingEntity instanceof Player && debugSender.getPlayerName() != null) {
+ if (!debugSender.getPlayerName().equals(livingEntity.getName())) {
+ continue;
+ }
+ }
+ debugSender.getSender().sendMessage(debugMessage);
+ }
+ }
+ }
+}
diff --git a/src/main/java/ce/ajneb97/managers/DependencyManager.java b/src/main/java/ce/ajneb97/manager/DependencyManager.java
similarity index 58%
rename from src/main/java/ce/ajneb97/managers/DependencyManager.java
rename to src/main/java/ce/ajneb97/manager/DependencyManager.java
index b855d39..d87b088 100644
--- a/src/main/java/ce/ajneb97/managers/DependencyManager.java
+++ b/src/main/java/ce/ajneb97/manager/DependencyManager.java
@@ -1,10 +1,11 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.ConditionalEvents;
-import ce.ajneb97.managers.dependencies.DiscordSRVManager;
-import ce.ajneb97.managers.dependencies.ProtocolLibManager;
+import ce.ajneb97.manager.dependencies.DiscordSRVManager;
+import ce.ajneb97.manager.dependencies.ProtocolLibManager;
import org.bukkit.Bukkit;
+@SuppressWarnings("DataFlowIssue")
public class DependencyManager {
private boolean placeholderAPI;
@@ -14,37 +15,36 @@ public class DependencyManager {
private ProtocolLibManager protocolLibManager;
private DiscordSRVManager discordSRVManager;
- public DependencyManager(ConditionalEvents plugin){
+ public DependencyManager(ConditionalEvents plugin) {
placeholderAPI = false;
citizens = false;
worldGuardEvents = false;
paper = false;
- if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null
- && Bukkit.getPluginManager().getPlugin("PlaceholderAPI").isEnabled()){
+ if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null
+ && Bukkit.getPluginManager().getPlugin("PlaceholderAPI").isEnabled()) {
placeholderAPI = true;
}
- if(Bukkit.getPluginManager().getPlugin("Citizens") != null
- && Bukkit.getPluginManager().getPlugin("Citizens").isEnabled()){
+ if (Bukkit.getPluginManager().getPlugin("Citizens") != null
+ && Bukkit.getPluginManager().getPlugin("Citizens").isEnabled()) {
citizens = true;
}
- if(Bukkit.getPluginManager().getPlugin("WorldGuardEvents") != null
- && Bukkit.getPluginManager().getPlugin("WorldGuardEvents").isEnabled()){
+ if (Bukkit.getPluginManager().getPlugin("WorldGuardEvents") != null
+ && Bukkit.getPluginManager().getPlugin("WorldGuardEvents").isEnabled()) {
worldGuardEvents = true;
}
- if(Bukkit.getPluginManager().getPlugin("ProtocolLib") != null
- && Bukkit.getPluginManager().getPlugin("ProtocolLib").isEnabled()){
+ if (Bukkit.getPluginManager().getPlugin("ProtocolLib") != null
+ && Bukkit.getPluginManager().getPlugin("ProtocolLib").isEnabled()) {
protocolLibManager = new ProtocolLibManager(plugin);
}
- if(Bukkit.getPluginManager().getPlugin("DiscordSRV") != null
- && Bukkit.getPluginManager().getPlugin("DiscordSRV").isEnabled()){
- discordSRVManager = new DiscordSRVManager(plugin);
+ if (Bukkit.getPluginManager().getPlugin("DiscordSRV") != null
+ && Bukkit.getPluginManager().getPlugin("DiscordSRV").isEnabled()) {
+ discordSRVManager = new DiscordSRVManager();
}
- try{
+ try {
Class.forName("com.destroystokyo.paper.ParticleBuilder");
paper = true;
- }catch(Exception e){
-
+ } catch (Exception ignored) {
}
}
diff --git a/src/main/java/ce/ajneb97/managers/EventsManager.java b/src/main/java/ce/ajneb97/manager/EventsManager.java
similarity index 50%
rename from src/main/java/ce/ajneb97/managers/EventsManager.java
rename to src/main/java/ce/ajneb97/manager/EventsManager.java
index d83bf9c..c1eea62 100644
--- a/src/main/java/ce/ajneb97/managers/EventsManager.java
+++ b/src/main/java/ce/ajneb97/manager/EventsManager.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.model.CEEvent;
@@ -9,8 +9,6 @@
import ce.ajneb97.utils.MathUtils;
import ce.ajneb97.utils.TimeUtils;
import ce.ajneb97.utils.VariablesUtils;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
@@ -20,11 +18,12 @@
public class EventsManager {
- private ConditionalEvents plugin;
+ private final ConditionalEvents plugin;
private ArrayList events;
- public EventsManager(ConditionalEvents plugin){
+
+ public EventsManager(ConditionalEvents plugin) {
this.plugin = plugin;
- this.events = new ArrayList();
+ this.events = new ArrayList<>();
}
public void setEvents(ArrayList events) {
@@ -35,46 +34,46 @@ public ArrayList getEvents() {
return events;
}
- public CEEvent getEvent(String name){
- for(CEEvent event : events){
- if(event.getName().equals(name)){
+ public CEEvent getEvent(String name) {
+ for (CEEvent event : events) {
+ if (event.getName().equals(name)) {
return event;
}
}
return null;
}
- public void checkEvent(ConditionEvent conditionEvent){
+ public void checkEvent(ConditionEvent conditionEvent) {
ArrayList validEvents = getValidEvents(conditionEvent.getEventType());
- for(CEEvent event : validEvents){
- checkSingularEvent(conditionEvent,event);
+ for (CEEvent event : validEvents) {
+ checkSingularEvent(conditionEvent, event);
}
}
- public void checkSingularEvent(ConditionEvent conditionEvent,CEEvent event){
+ public void checkSingularEvent(ConditionEvent conditionEvent, CEEvent event) {
Player player = conditionEvent.getPlayer();
boolean isPlaceholderAPI = plugin.getDependencyManager().isPlaceholderAPI();
conditionEvent.setCurrentEvent(event);
//Ignore with permission
- if(player != null && event.getIgnoreWithPermission() != null && player.hasPermission(event.getIgnoreWithPermission())){
+ if (player != null && event.getIgnoreWithPermission() != null && player.hasPermission(event.getIgnoreWithPermission())) {
return;
}
//Ignore if cancelled
- if(event.isIgnoreIfCancelled()){
+ if (event.isIgnoreIfCancelled()) {
Event minecraftEvent = conditionEvent.getMinecraftEvent();
- if(minecraftEvent instanceof Cancellable){
+ if (minecraftEvent instanceof Cancellable) {
Cancellable c = (Cancellable) minecraftEvent;
- if(c.isCancelled()){
+ if (c.isCancelled()) {
return;
}
}
}
//Check condition list
- CheckConditionsResult conditionsResult = checkConditions(conditionEvent,isPlaceholderAPI);
- if(!conditionsResult.isConditionsAccomplished()){
+ CheckConditionsResult conditionsResult = checkConditions(conditionEvent, isPlaceholderAPI);
+ if (!conditionsResult.isConditionsAccomplished()) {
return;
}
String executeActionGroup = conditionsResult.getExecuteActionGroup();
@@ -84,56 +83,56 @@ public void checkSingularEvent(ConditionEvent conditionEvent,CEEvent event){
boolean bypassCooldown = false;
- if(player != null){
- bypassCooldown = player.hasPermission("conditionalevents.bypasscooldown."+event.getName());
+ if (player != null) {
+ bypassCooldown = player.hasPermission("conditionalevents.bypasscooldown." + event.getName());
//Check One time
- if(event.isOneTime()){
- boolean isOneTime = playerManager.getEventOneTime(event.getName(),player);
- if(isOneTime){
+ if (event.isOneTime()) {
+ boolean isOneTime = playerManager.getEventOneTime(event.getName(), player);
+ if (isOneTime) {
ExecutedEvent executedEvent = new ExecutedEvent(player, conditionEvent.getEventVariables(), event,
- "one_time", conditionEvent.getMinecraftEvent(), conditionEvent.getTarget(), plugin);
- plugin.getDebugManager().sendActionsMessage(event.getName(),"one_time",player);
+ "one_time", conditionEvent.getMinecraftEvent(), conditionEvent.getTarget(), plugin);
+ plugin.getDebugManager().sendActionsMessage(event.getName(), "one_time", player);
executedEvent.executeActions();
return;
}
}
//Check Cooldown
- if(event.getCooldown() != 0 && !bypassCooldown){
- long eventCooldownMillis = playerManager.getEventCooldown(event.getName(),player)+(event.getCooldown()*1000);
+ if (event.getCooldown() != 0 && !bypassCooldown) {
+ long eventCooldownMillis = playerManager.getEventCooldown(event.getName(), player) + (event.getCooldown() * 1000);
long currentTimeMillis = System.currentTimeMillis();
- if(eventCooldownMillis > currentTimeMillis){
- String timeString = TimeUtils.getTime((eventCooldownMillis-currentTimeMillis)/1000,messagesManager);
- conditionEvent.getEventVariables().add(new StoredVariable("%time%",timeString));
+ if (eventCooldownMillis > currentTimeMillis) {
+ String timeString = TimeUtils.getTime((eventCooldownMillis - currentTimeMillis) / 1000, messagesManager);
+ conditionEvent.getEventVariables().add(new StoredVariable("%time%", timeString));
ExecutedEvent executedEvent = new ExecutedEvent(player, conditionEvent.getEventVariables(), event,
- "cooldown", conditionEvent.getMinecraftEvent(), conditionEvent.getTarget(), plugin);
- plugin.getDebugManager().sendActionsMessage(event.getName(),"cooldown",player);
+ "cooldown", conditionEvent.getMinecraftEvent(), conditionEvent.getTarget(), plugin);
+ plugin.getDebugManager().sendActionsMessage(event.getName(), "cooldown", player);
executedEvent.executeActions();
return;
}
}
}
- if(player != null){
+ if (player != null) {
// Ignore parameters
String actionGroupWithoutParameters = executeActionGroup;
int pos = actionGroupWithoutParameters.indexOf("{");
- if(pos != -1){
+ if (pos != -1) {
actionGroupWithoutParameters = actionGroupWithoutParameters.substring(0, pos);
}
//Set One Time
- if(event.isOneTime()){
- if(!event.getPreventOneTimeActivationActionGroups().contains(actionGroupWithoutParameters)){
- playerManager.setEventOneTime(event.getName(),player);
+ if (event.isOneTime()) {
+ if (!event.getPreventOneTimeActivationActionGroups().contains(actionGroupWithoutParameters)) {
+ playerManager.setEventOneTime(event.getName(), player);
}
}
//Set Cooldown
- if(event.getCooldown() != 0 && !bypassCooldown){
- if(!event.getPreventCooldownActivationActionGroups().contains(actionGroupWithoutParameters)){
- playerManager.setEventCooldown(event.getName(),player);
+ if (event.getCooldown() != 0 && !bypassCooldown) {
+ if (!event.getPreventCooldownActivationActionGroups().contains(actionGroupWithoutParameters)) {
+ playerManager.setEventCooldown(event.getName(), player);
}
}
}
@@ -144,34 +143,34 @@ public void checkSingularEvent(ConditionEvent conditionEvent,CEEvent event){
executedEvent.executeActions();
}
- public ArrayList getValidEvents(EventType eventType){
- ArrayList validEvents = new ArrayList();
- for(CEEvent event : events){
- if(event.getEventType().equals(eventType) && event.isEnabled()){
+ public ArrayList getValidEvents(EventType eventType) {
+ ArrayList validEvents = new ArrayList<>();
+ for (CEEvent event : events) {
+ if (event.getEventType().equals(eventType) && event.isEnabled()) {
validEvents.add(event);
}
}
return validEvents;
}
- public ArrayList getEventsByType(EventType eventType){
+ public ArrayList getEventsByType(EventType eventType) {
ArrayList validEvents = new ArrayList<>();
- for(CEEvent event : events){
- if(event.getEventType().equals(eventType)){
+ for (CEEvent event : events) {
+ if (event.getEventType().equals(eventType)) {
validEvents.add(event);
}
}
return validEvents;
}
- private CheckConditionsResult checkConditions(ConditionEvent conditionEvent, boolean isPlaceholderAPI){
- List conditions = new ArrayList(conditionEvent.getCurrentEvent().getConditions());
+ private CheckConditionsResult checkConditions(ConditionEvent conditionEvent, boolean isPlaceholderAPI) {
+ List conditions = new ArrayList<>(conditionEvent.getCurrentEvent().getConditions());
String eventName = conditionEvent.getCurrentEvent().getName();
Player player = conditionEvent.getPlayer();
Player target = null;
- if(conditionEvent.getTarget() instanceof Player){
- target = (Player)conditionEvent.getTarget();
+ if (conditionEvent.getTarget() instanceof Player) {
+ target = (Player) conditionEvent.getTarget();
}
CEEvent event = conditionEvent.getCurrentEvent();
@@ -182,7 +181,7 @@ private CheckConditionsResult checkConditions(ConditionEvent conditionEvent, boo
//Check condition lines
ArrayList storedVariables = conditionEvent.getEventVariables();
- for(int i=0;i secondArgNum) approvedLine = true;break;
+ if (firstArgNum > secondArgNum) approvedLine = true;
+ break;
case GREATER_EQUALS:
- if(firstArgNum >= secondArgNum) approvedLine = true;break;
+ if (firstArgNum >= secondArgNum) approvedLine = true;
+ break;
case LOWER:
- if(firstArgNum < secondArgNum) approvedLine = true;break;
+ if (firstArgNum < secondArgNum) approvedLine = true;
+ break;
case LOWER_EQUALS:
- if(firstArgNum <= secondArgNum) approvedLine = true;break;
+ if (firstArgNum <= secondArgNum) approvedLine = true;
+ break;
}
}
- if(approvedLine){
+ if (approvedLine) {
break;
}
}
- if(separatorType.equals(SeparatorType.AND)){
- if(approvedLine){
- if(c != separatedConditions.length-1){
- //If not last condition, should verify again for the next
+ if (separatorType.equals(SeparatorType.AND)) {
+ if (approvedLine) {
+ if (c != separatedConditions.length - 1) {
+ //If not the last condition, should verify again for the next
approvedLine = false;
}
continue;
- }else{
+ } else {
break;
}
}
- if(approvedLine){
+ if (approvedLine) {
break;
}
}
- debugManager.sendConditionMessage(eventName,conditionLineWithReplacements,approvedLine,conditionEvent.getPlayer(),i==0);
+ debugManager.sendConditionMessage(eventName, conditionLineWithReplacements.toString(), approvedLine, conditionEvent.getPlayer(), i == 0);
//If approvedLine is false, the conditions are not satisfied. Returns FALSE.
//If approvedLine is false, but there is an executedActionGroup, it will continue with the next
// condition line.
//If approvedLine is true, it will continue with the next condition line.
//If approvedLine is true and there is an executedActionGroup selected, the method
// will return this action group.
- if(!approvedLine){
- if(executedActionGroup == null){
- return new CheckConditionsResult(false,null);
+ if (!approvedLine) {
+ if (executedActionGroup == null) {
+ return new CheckConditionsResult(false, null);
}
continue;
}
- if(approvedLine && executedActionGroup != null){
- debugManager.sendActionsMessage(eventName,executedActionGroup,conditionEvent.getPlayer());
- return new CheckConditionsResult(true,executedActionGroup);
+ if (executedActionGroup != null) {
+ debugManager.sendActionsMessage(eventName, executedActionGroup, conditionEvent.getPlayer());
+ return new CheckConditionsResult(true, executedActionGroup);
}
}
//If all condition lines are approved, the event is executed with the default actions.
- debugManager.sendActionsMessage(eventName,"default",conditionEvent.getPlayer());
- return new CheckConditionsResult(true,null);
+ debugManager.sendActionsMessage(eventName, "default", conditionEvent.getPlayer());
+ return new CheckConditionsResult(true, null);
}
public boolean checkToConditionAction(List conditionGroup, Player player, boolean isPlaceholderAPI,
- CEEvent event, Event minecraftEvent){
+ CEEvent event, Event minecraftEvent) {
boolean mathFormulas = event.isAllowMathFormulasInConditions();
- for(int i=0;i storedVariables = new ArrayList();
+ ArrayList storedVariables = new ArrayList<>();
- String[] separatedConditions = null;
+ String[] separatedConditions;
SeparatorType separatorType = SeparatorType.NONE;
- if(conditionLine.contains(" or ")){
+ if (conditionLine.contains(" or ")) {
separatedConditions = conditionLine.split(" or ");
separatorType = SeparatorType.OR;
- }else if(conditionLine.contains(" and ")){
+ } else if (conditionLine.contains(" and ")) {
separatedConditions = conditionLine.split(" and ");
separatorType = SeparatorType.AND;
- }else{
+ } else {
separatedConditions = new String[]{conditionLine};
}
- for(int c=0;c secondArgNum) approvedLine = true;break;
+ if (firstArgNum > secondArgNum) approvedLine = true;
+ break;
case GREATER_EQUALS:
- if(firstArgNum >= secondArgNum) approvedLine = true;break;
+ if (firstArgNum >= secondArgNum) approvedLine = true;
+ break;
case LOWER:
- if(firstArgNum < secondArgNum) approvedLine = true;break;
+ if (firstArgNum < secondArgNum) approvedLine = true;
+ break;
case LOWER_EQUALS:
- if(firstArgNum <= secondArgNum) approvedLine = true;break;
+ if (firstArgNum <= secondArgNum) approvedLine = true;
+ break;
}
}
- if(approvedLine){
+ if (approvedLine) {
break;
}
}
- if(separatorType.equals(SeparatorType.AND)){
- if(approvedLine){
- if(c != separatedConditions.length-1){
- //If not last condition, should verify again for the next
+ if (separatorType.equals(SeparatorType.AND)) {
+ if (approvedLine) {
+ if (c != separatedConditions.length - 1) {
+ //If not the last condition, should verify again for the next
approvedLine = false;
}
continue;
- }else{
+ } else {
break;
}
}
- if(approvedLine){
+ if (approvedLine) {
break;
}
}
- if(!approvedLine){
+ if (!approvedLine) {
return false;
}
}
diff --git a/src/main/java/ce/ajneb97/manager/InterruptEventManager.java b/src/main/java/ce/ajneb97/manager/InterruptEventManager.java
new file mode 100644
index 0000000..685ed6f
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/InterruptEventManager.java
@@ -0,0 +1,46 @@
+package ce.ajneb97.manager;
+
+import ce.ajneb97.model.internal.WaitActionTask;
+import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
+import org.bukkit.scheduler.BukkitTask;
+
+import java.util.*;
+
+public class InterruptEventManager {
+
+ private final ArrayList tasks;
+
+ public InterruptEventManager() {
+ this.tasks = new ArrayList<>();
+ }
+
+ public void addTask(String playerName, String eventName, BukkitTask bukkitTask) {
+ tasks.add(new WaitActionTask(playerName, eventName, bukkitTask));
+ }
+
+ public void addTask(String playerName, String eventName, ScheduledTask scheduledTask) {
+ tasks.add(new WaitActionTask(playerName, eventName, scheduledTask));
+ }
+
+ public void removeTaskById(int taskId) {
+ tasks.removeIf(task -> task.getTaskId() == taskId);
+ }
+
+ // Interrupt actions for a specific event, globally or per player
+ public void interruptEvent(String eventName, String playerName) {
+ tasks.removeIf(task -> {
+ if (playerName == null) {
+ if (task.getEventName().equals(eventName)) {
+ task.cancel();
+ return true;
+ }
+ } else {
+ if (task.getPlayerName() != null && task.getPlayerName().equals(playerName) && task.getEventName().equals(eventName)) {
+ task.cancel();
+ return true;
+ }
+ }
+ return false;
+ });
+ }
+}
diff --git a/src/main/java/ce/ajneb97/manager/MessagesManager.java b/src/main/java/ce/ajneb97/manager/MessagesManager.java
new file mode 100644
index 0000000..c4c217b
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/MessagesManager.java
@@ -0,0 +1,137 @@
+package ce.ajneb97.manager;
+
+import ce.ajneb97.api.ConditionalEventsAPI;
+import ce.ajneb97.libs.centeredmessages.DefaultFontInfo;
+import ce.ajneb97.utils.MiniMessageUtils;
+import ce.ajneb97.utils.OtherUtils;
+import net.md_5.bungee.api.ChatColor;
+import org.bukkit.command.CommandSender;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@SuppressWarnings("deprecation")
+public class MessagesManager {
+
+ private String timeSeconds;
+ private String timeMinutes;
+ private String timeHours;
+ private String timeDays;
+ private String prefix;
+ private String placeholderAPICooldownReady;
+ private String placeholderAPICooldownNameError;
+
+ public String getTimeSeconds() {
+ return timeSeconds;
+ }
+
+ public void setTimeSeconds(String timeSeconds) {
+ this.timeSeconds = timeSeconds;
+ }
+
+ public String getTimeMinutes() {
+ return timeMinutes;
+ }
+
+ public void setTimeMinutes(String timeMinutes) {
+ this.timeMinutes = timeMinutes;
+ }
+
+ public String getTimeHours() {
+ return timeHours;
+ }
+
+ public void setTimeHours(String timeHours) {
+ this.timeHours = timeHours;
+ }
+
+ public String getTimeDays() {
+ return timeDays;
+ }
+
+ public void setTimeDays(String timeDays) {
+ this.timeDays = timeDays;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public String getPlaceholderAPICooldownReady() {
+ return placeholderAPICooldownReady;
+ }
+
+ public void setPlaceholderAPICooldownReady(String placeholderAPICooldownReady) {
+ this.placeholderAPICooldownReady = placeholderAPICooldownReady;
+ }
+
+ public String getPlaceholderAPICooldownNameError() {
+ return placeholderAPICooldownNameError;
+ }
+
+ public void setPlaceholderAPICooldownNameError(String placeholderAPICooldownNameError) {
+ this.placeholderAPICooldownNameError = placeholderAPICooldownNameError;
+ }
+
+ public void sendMessage(CommandSender sender, String message, boolean prefix) {
+ if (!message.isEmpty()) {
+ if (ConditionalEventsAPI.getPlugin().getConfigsManager().getMainConfigManager().isUseMiniMessage()) {
+ MiniMessageUtils.messagePrefix(sender, message, prefix, this.prefix);
+ } else {
+ if (prefix) {
+ sender.sendMessage(getLegacyColoredMessage(this.prefix + message));
+ } else {
+ sender.sendMessage(getLegacyColoredMessage(message));
+ }
+ }
+ }
+ }
+
+ public static String getLegacyColoredMessage(String message) {
+ if (OtherUtils.isNew()) {
+ Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}");
+ Matcher match = pattern.matcher(message);
+
+ while (match.find()) {
+ String color = message.substring(match.start(), match.end());
+ message = message.replace(color, ChatColor.of(color) + "");
+
+ match = pattern.matcher(message);
+ }
+ }
+
+ message = ChatColor.translateAlternateColorCodes('&', message);
+ return message;
+ }
+
+ public static String getCenteredMessage(String message) {
+ int CENTER_PX = 154;
+ int messagePxSize = 0;
+ boolean previousCode = false;
+ boolean isBold = false;
+
+ for (char c : message.toCharArray()) {
+ if (c == '§') {
+ previousCode = true;
+ } else if (previousCode) {
+ previousCode = false;
+ isBold = c == 'l' || c == 'L';
+ } else {
+ DefaultFontInfo dFI = DefaultFontInfo.getDefaultFontInfo(c);
+ messagePxSize += isBold ? dFI.getBoldLength() : dFI.getLength();
+ messagePxSize++;
+ }
+ }
+
+ int halvedMessageSize = messagePxSize / 2;
+ int toCompensate = CENTER_PX - halvedMessageSize;
+ int spaceLength = DefaultFontInfo.SPACE.getLength() + 1;
+ int compensated = 0;
+ StringBuilder sb = new StringBuilder();
+ while (compensated < toCompensate) {
+ sb.append(" ");
+ compensated += spaceLength;
+ }
+ return (sb + message);
+ }
+}
diff --git a/src/main/java/ce/ajneb97/manager/PlayerManager.java b/src/main/java/ce/ajneb97/manager/PlayerManager.java
new file mode 100644
index 0000000..d01ecf5
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/PlayerManager.java
@@ -0,0 +1,193 @@
+package ce.ajneb97.manager;
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitRunnable;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+@SuppressWarnings("DataFlowIssue")
+public class PlayerManager {
+
+ private final ConditionalEvents plugin;
+ private final Map players;
+ private final Map playerNames;
+
+ public PlayerManager(ConditionalEvents plugin) {
+ this.plugin = plugin;
+ this.players = new HashMap<>();
+ this.playerNames = new HashMap<>();
+ }
+
+ public Map getPlayers() {
+ return players;
+ }
+
+ public void addPlayer(PlayerData p) {
+ players.put(p.getUuid(), p);
+ playerNames.put(p.getName(), p.getUuid());
+ }
+
+ public PlayerData getPlayer(Player player, boolean create) {
+ PlayerData playerData = players.get(player.getUniqueId());
+ if (playerData == null && create) {
+ playerData = new PlayerData(player.getUniqueId(), player.getName());
+ addPlayer(playerData);
+ }
+ return playerData;
+ }
+
+ private void updatePlayerName(String oldName, String newName, UUID uuid) {
+ if (oldName != null) {
+ playerNames.remove(oldName);
+ }
+ playerNames.put(newName, uuid);
+ }
+
+ private UUID getPlayerUUID(String name) {
+ return playerNames.get(name);
+ }
+
+ public PlayerData getPlayerByName(String name) {
+ UUID uuid = getPlayerUUID(name);
+ return players.get(uuid);
+ }
+
+ public void removePlayer(PlayerData playerData) {
+ players.remove(playerData.getUuid());
+ playerNames.remove(playerData.getName());
+ }
+
+ public void setEventCooldown(String eventName, Player player) {
+ PlayerData p = getPlayer(player, true);
+ p.setCooldown(eventName, System.currentTimeMillis());
+ p.setModified(true);
+ }
+
+ public long getEventCooldown(String eventName, Player player) {
+ PlayerData p = getPlayer(player, false);
+ if (p == null) {
+ return 0;
+ } else {
+ return p.getCooldown(eventName);
+ }
+ }
+
+ public void setEventOneTime(String eventName, Player player) {
+ PlayerData p = getPlayer(player, true);
+ p.setOneTime(eventName, true);
+ p.setModified(true);
+ }
+
+ public boolean getEventOneTime(String eventName, Player player) {
+ PlayerData p = getPlayer(player, false);
+ if (p == null) {
+ return false;
+ } else {
+ return p.isEventOneTime(eventName);
+ }
+ }
+
+ public String resetDataForPlayer(String playerName, String eventName, FileConfiguration messagesConfig) {
+ if (Bukkit.getPlayer(playerName) == null) {
+ return messagesConfig.getString("Messages.playerNotOnline");
+ }
+
+ PlayerData playerData = getPlayerByName(playerName);
+ if (playerData == null) {
+ return messagesConfig.getString("Messages.playerDoesNotExists");
+ }
+
+ if (eventName.equals("all")) {
+ // All data
+ playerData.resetAll();
+ return messagesConfig.getString("Messages.eventDataResetAll").replace("%player%", playerName);
+ } else {
+ // Specific event
+ playerData.resetEvent(eventName);
+ return messagesConfig.getString("Messages.eventDataReset").replace("%player%", playerName)
+ .replace("%event%", eventName);
+ }
+ }
+
+ public void resetDataForAllPlayers(String eventName, FileConfiguration messagesConfig, GenericCallback callback) {
+ if (plugin.isFolia) {
+ plugin.getServer().getAsyncScheduler().runNow(plugin, scheduledTask -> {
+ plugin.getPlayerDataManager().resetDataForAllPlayers(eventName);
+
+ plugin.getServer().getGlobalRegionScheduler().execute(plugin, () -> {
+ String result;
+ if (eventName.equals("all")) {
+ // All data, Online:
+ players.values().forEach(PlayerData::resetAll);
+ result = messagesConfig.getString("Messages.eventDataResetAllForAllPlayers");
+ } else {
+ // Specific event, Online:
+ players.values().forEach(p -> p.resetEvent(eventName));
+ result = messagesConfig.getString("Messages.eventDataResetForAllPlayers")
+ .replace("%event%", eventName);
+ }
+
+ callback.onDone(result);
+ });
+ });
+ } else {
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ plugin.getPlayerDataManager().resetDataForAllPlayers(eventName);
+
+ new BukkitRunnable() {
+ @Override
+ public void run() {
+ String result;
+ if (eventName.equals("all")) {
+ // All data, Online:
+ players.values().forEach(PlayerData::resetAll);
+ result = messagesConfig.getString("Messages.eventDataResetAllForAllPlayers");
+ } else {
+ // Specific event, Online:
+ players.values().forEach(p -> p.resetEvent(eventName));
+ result = messagesConfig.getString("Messages.eventDataResetForAllPlayers")
+ .replace("%event%", eventName);
+ }
+
+ callback.onDone(result);
+ }
+ }.runTask(plugin);
+ }
+ }.runTaskAsynchronously(plugin);
+ }
+ }
+
+ public void manageJoin(Player player) {
+ // Load player data from a file if exists
+ plugin.getPlayerDataManager().loadData(player.getUniqueId(), playerData -> {
+ if (playerData != null) {
+ addPlayer(playerData);
+ if (playerData.getName() == null || !playerData.getName().equals(player.getName())) {
+ updatePlayerName(playerData.getName(), player.getName(), player.getUniqueId());
+ playerData.setName(player.getName());
+ playerData.setModified(true);
+ }
+ }
+ });
+ }
+
+ public void manageLeave(Player player) {
+ // Save player data into file and remove from a map
+ PlayerData playerData = getPlayer(player, false);
+ if (playerData != null) {
+ if (playerData.isModified()) {
+ plugin.getPlayerDataManager().saveData(playerData);
+ }
+ removePlayer(playerData);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/manager/RepetitiveManager.java b/src/main/java/ce/ajneb97/manager/RepetitiveManager.java
new file mode 100644
index 0000000..0fba8e7
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/RepetitiveManager.java
@@ -0,0 +1,88 @@
+package ce.ajneb97.manager;
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.model.CEEvent;
+import ce.ajneb97.model.EventType;
+import ce.ajneb97.model.internal.ConditionEvent;
+import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.scheduler.BukkitTask;
+
+import java.util.concurrent.TimeUnit;
+
+public class RepetitiveManager {
+
+ private final ConditionalEvents plugin;
+ private final CEEvent ceEvent;
+ private final long ticks;
+ private boolean started;
+ private Runnable cancel;
+
+ public RepetitiveManager(ConditionalEvents plugin, CEEvent ceEvent, long ticks) {
+ this.plugin = plugin;
+ this.ceEvent = ceEvent;
+ this.ticks = ticks;
+ }
+
+ public boolean isStarted() {
+ return started;
+ }
+
+ public void start() {
+ this.started = true;
+ Runnable runnable = () -> {
+ if (!execute()) {
+ stop();
+ }
+ };
+
+ if (plugin.isFolia) {
+ long period = ticks * 50L;
+ ScheduledTask task = plugin.getServer().getAsyncScheduler().runAtFixedRate(
+ plugin,
+ t -> runnable.run(),
+ period,
+ period,
+ TimeUnit.MILLISECONDS
+ );
+ cancel = task::cancel;
+ } else {
+ BukkitTask task = plugin.getServer().getScheduler().runTaskTimerAsynchronously(
+ plugin,
+ runnable,
+ 0L,
+ ticks
+ );
+ cancel = task::cancel;
+ }
+ }
+
+ public void stop() {
+ if (cancel != null) {
+ cancel.run();
+ }
+ this.started = false;
+ }
+
+ private boolean execute() {
+ if (ceEvent == null) {
+ return false;
+ }
+
+ EventsManager eventsManager = plugin.getEventsManager();
+ if (ceEvent.getEventType().equals(EventType.REPETITIVE)) {
+ for (Player player : Bukkit.getOnlinePlayers()) {
+ ConditionEvent conditionEvent = new ConditionEvent(plugin, player, null, EventType.REPETITIVE, null);
+ conditionEvent.setAsync(true);
+ eventsManager.checkSingularEvent(conditionEvent, ceEvent);
+ }
+ } else {
+ //Repetitive server
+ ConditionEvent conditionEvent = new ConditionEvent(plugin, null, null, EventType.REPETITIVE_SERVER, null);
+ conditionEvent.setAsync(true);
+ eventsManager.checkSingularEvent(conditionEvent, ceEvent);
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/managers/SavedItemsManager.java b/src/main/java/ce/ajneb97/manager/SavedItemsManager.java
similarity index 64%
rename from src/main/java/ce/ajneb97/managers/SavedItemsManager.java
rename to src/main/java/ce/ajneb97/manager/SavedItemsManager.java
index 6ea2027..e6a35b2 100644
--- a/src/main/java/ce/ajneb97/managers/SavedItemsManager.java
+++ b/src/main/java/ce/ajneb97/manager/SavedItemsManager.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.utils.OtherUtils;
@@ -10,10 +10,13 @@
import java.util.List;
import java.util.Map;
+@SuppressWarnings("deprecation")
public class SavedItemsManager {
- private ConditionalEvents plugin;
+
+ private final ConditionalEvents plugin;
private Map savedItems;
- public SavedItemsManager(ConditionalEvents plugin){
+
+ public SavedItemsManager(ConditionalEvents plugin) {
this.plugin = plugin;
this.savedItems = new HashMap<>();
}
@@ -26,25 +29,29 @@ public void setSavedItems(Map savedItems) {
this.savedItems = savedItems;
}
- public ItemStack getItem(String name, Player player){
- if(!savedItems.containsKey(name)){
+ public ItemStack getItem(String name, Player player) {
+ if (!savedItems.containsKey(name)) {
return null;
}
ItemStack item = savedItems.get(name).clone();
- if(player == null){
+ if (player == null) {
return item;
}
// Placeholders
ItemMeta meta = item.getItemMeta();
- if(meta.hasDisplayName()){
- String displayName = OtherUtils.replaceGlobalVariables(meta.getDisplayName(),player,plugin);
+ if (meta.hasDisplayName()) {
+ String displayName = OtherUtils.replaceGlobalVariables(meta.getDisplayName(), player, plugin);
meta.setDisplayName(displayName);
}
- if(meta.hasLore()){
+ if (meta.hasLore()) {
List lore = meta.getLore();
- lore.replaceAll(text -> OtherUtils.replaceGlobalVariables(text, player, plugin));
+
+ if (lore != null) {
+ lore.replaceAll(text -> OtherUtils.replaceGlobalVariables(text, player, plugin));
+ }
+
meta.setLore(lore);
}
item.setItemMeta(meta);
@@ -52,12 +59,12 @@ public ItemStack getItem(String name, Player player){
return item;
}
- public void addItem(String name,ItemStack item){
- savedItems.put(name,item);
- plugin.getConfigsManager().getSavedItemsConfigManager().saveItem(name,item);
+ public void addItem(String name, ItemStack item) {
+ savedItems.put(name, item);
+ plugin.getConfigsManager().getSavedItemsConfigManager().saveItem(name, item);
}
- public void removeItem(String name){
+ public void removeItem(String name) {
savedItems.remove(name);
plugin.getConfigsManager().getSavedItemsConfigManager().removeItem(name);
}
diff --git a/src/main/java/ce/ajneb97/managers/UpdateCheckerManager.java b/src/main/java/ce/ajneb97/manager/UpdateCheckerManager.java
similarity index 83%
rename from src/main/java/ce/ajneb97/managers/UpdateCheckerManager.java
rename to src/main/java/ce/ajneb97/manager/UpdateCheckerManager.java
index eba5ca0..753de3d 100644
--- a/src/main/java/ce/ajneb97/managers/UpdateCheckerManager.java
+++ b/src/main/java/ce/ajneb97/manager/UpdateCheckerManager.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.model.internal.UpdateCheckerResult;
@@ -9,14 +9,14 @@
public class UpdateCheckerManager {
- private String version;
+ private final String version;
private String latestVersion;
- public UpdateCheckerManager(String version){
+ public UpdateCheckerManager(String version) {
this.version = version;
}
- public UpdateCheckerResult check(){
+ public UpdateCheckerResult check() {
try {
HttpURLConnection con = (HttpURLConnection) new URL(
"https://api.spigotmc.org/legacy/update.php?resource=82271").openConnection();
@@ -25,7 +25,7 @@ public UpdateCheckerResult check(){
con.setReadTimeout(timed_out);
latestVersion = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine();
if (latestVersion.length() <= 7) {
- if(!version.equals(latestVersion)){
+ if (!version.equals(latestVersion)) {
return UpdateCheckerResult.noErrors(latestVersion);
}
}
diff --git a/src/main/java/ce/ajneb97/managers/VerifyManager.java b/src/main/java/ce/ajneb97/manager/VerifyManager.java
similarity index 63%
rename from src/main/java/ce/ajneb97/managers/VerifyManager.java
rename to src/main/java/ce/ajneb97/manager/VerifyManager.java
index 4c20522..bec7ff6 100644
--- a/src/main/java/ce/ajneb97/managers/VerifyManager.java
+++ b/src/main/java/ce/ajneb97/manager/VerifyManager.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers;
+package ce.ajneb97.manager;
import ce.ajneb97.ConditionalEvents;
import ce.ajneb97.configs.model.CommonConfig;
@@ -15,22 +15,25 @@
import java.util.ArrayList;
import java.util.List;
+@SuppressWarnings({"DataFlowIssue", "BooleanMethodIsAlwaysInverted"})
public class VerifyManager {
- private ConditionalEvents plugin;
+
+ private final ConditionalEvents plugin;
private ArrayList errors;
+
public VerifyManager(ConditionalEvents plugin) {
this.plugin = plugin;
- this.errors = new ArrayList();
+ this.errors = new ArrayList<>();
}
public void sendVerification(Player player) {
player.sendMessage(MessagesManager.getLegacyColoredMessage("&f&l- - - - - - - - &b&lEVENTS VERIFY &f&l- - - - - - - -"));
player.sendMessage(MessagesManager.getLegacyColoredMessage(""));
- if(errors.isEmpty()) {
+ if (errors.isEmpty()) {
player.sendMessage(MessagesManager.getLegacyColoredMessage("&aThere are no errors in your events ;)"));
- }else {
+ } else {
player.sendMessage(MessagesManager.getLegacyColoredMessage("&e&oHover on the errors to see more information."));
- for(CEError error : errors) {
+ for (CEError error : errors) {
error.sendMessage(player);
}
}
@@ -39,78 +42,78 @@ public void sendVerification(Player player) {
}
public void verifyEvents() {
- this.errors = new ArrayList();
+ this.errors = new ArrayList<>();
ArrayList events = plugin.getEventsManager().getEvents();
//Loaded events
- for(CEEvent event : events) {
+ for (CEEvent event : events) {
verifyEvent(event);
}
//Unloaded events
ArrayList ceConfigs = plugin.getConfigsManager().getEventConfigs();
- for(CommonConfig ceConfig : ceConfigs){
+ for (CommonConfig ceConfig : ceConfigs) {
FileConfiguration config = ceConfig.getConfig();
- if(!config.contains("Events")){
+ if (!config.contains("Events")) {
return;
}
for (String key : config.getConfigurationSection("Events").getKeys(false)) {
- String eventType = config.getString("Events."+key+".type");
- try{
+ String eventType = config.getString("Events." + key + ".type");
+ try {
EventType.valueOf(eventType.toUpperCase());
- }catch(Exception e){
+ } catch (Exception e) {
errors.add(new CEErrorEventType(key, eventType));
}
- String pathActions = "Events."+key+".actions";
- if(!config.contains(pathActions)) {
+ String pathActions = "Events." + key + ".actions";
+ if (!config.contains(pathActions)) {
continue;
}
for (String groupName : config.getConfigurationSection(pathActions).getKeys(false)) {
- String path = pathActions+"."+groupName;
+ String path = pathActions + "." + groupName;
List actionsList = config.getStringList(path);
- for(int i=0;i conditions = event.getConditions();
- for(int i=0;i actionGroups = event.getActionGroups();
- for(ActionGroup actionGroup : actionGroups){
+ for (ActionGroup actionGroup : actionGroups) {
List actions = actionGroup.getActions();
- for(CEAction action : actions){
- if(!verifyRandomVariable(action.getActionLine())){
+ for (CEAction action : actions) {
+ if (!verifyRandomVariable(action.getActionLine())) {
errors.add(new CEErrorRandomVariable(event.getName(), action.getActionLine()));
}
}
@@ -141,23 +144,23 @@ public void verifyEvent(CEEvent event) {
}
- private boolean verifyRandomVariable(String line){
- for(int c=0;c commands = config.getStringList("Config.register_commands");
- for(String commandName : commands){
+ for (String commandName : commands) {
registerCommand(commandName);
}
}
@@ -44,6 +42,6 @@ public void registerCommands(){
public void registerCommand(String commandName) {
CECommand ceCommand = new CECommand(commandName);
CommandMap commandMap = getCommandMap();
- commandMap.register("ConditionalEvents",ceCommand);
+ commandMap.register("ConditionalEvents", ceCommand);
}
}
diff --git a/src/main/java/ce/ajneb97/manager/data/FilePlayerDataManager.java b/src/main/java/ce/ajneb97/manager/data/FilePlayerDataManager.java
new file mode 100644
index 0000000..7407389
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/data/FilePlayerDataManager.java
@@ -0,0 +1,36 @@
+package ce.ajneb97.manager.data;
+
+import ce.ajneb97.configs.PlayerConfigsManager;
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+
+import java.util.UUID;
+
+public class FilePlayerDataManager extends PlayerDataManager {
+
+ private final PlayerConfigsManager configsManager;
+
+ public FilePlayerDataManager(PlayerConfigsManager configsManager){
+ this.configsManager = configsManager;
+ }
+
+ @Override
+ public void loadData(UUID uuid, GenericCallback callback) {
+ configsManager.loadData(uuid, callback);
+ }
+
+ @Override
+ public void saveData(PlayerData playerData) {
+ configsManager.saveData(playerData);
+ }
+
+ @Override
+ public void saveAllData() {
+ configsManager.saveAllData();
+ }
+
+ @Override
+ public void resetDataForAllPlayers(String event) {
+ configsManager.resetDataForAllPlayers(event);
+ }
+}
diff --git a/src/main/java/ce/ajneb97/manager/data/PlayerDataManager.java b/src/main/java/ce/ajneb97/manager/data/PlayerDataManager.java
new file mode 100644
index 0000000..09c8ab2
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/data/PlayerDataManager.java
@@ -0,0 +1,17 @@
+package ce.ajneb97.manager.data;
+
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+
+import java.util.UUID;
+
+public abstract class PlayerDataManager {
+
+ public abstract void loadData(UUID uuid, GenericCallback callback);
+
+ public abstract void saveData(PlayerData playerData);
+
+ public abstract void saveAllData();
+
+ public abstract void resetDataForAllPlayers(String event);
+}
diff --git a/src/main/java/ce/ajneb97/manager/data/mysql/MySQLConnection.java b/src/main/java/ce/ajneb97/manager/data/mysql/MySQLConnection.java
new file mode 100644
index 0000000..dd665cc
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/data/mysql/MySQLConnection.java
@@ -0,0 +1,174 @@
+package ce.ajneb97.manager.data.mysql;
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.model.player.EventData;
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.UUID;
+
+public class MySQLConnection {
+
+ private final ConditionalEvents plugin;
+ private HikariDataSource dataSource;
+
+ public MySQLConnection(ConditionalEvents plugin) {
+ this.plugin = plugin;
+ }
+
+ public void setupMySql() {
+ HikariConfig hikariConfig = getHikariConfig();
+ hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
+ hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
+ hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
+
+ this.dataSource = new HikariDataSource(hikariConfig);
+ createTables();
+ plugin.getLogger().info("Successfully connected to the MySQL Database.");
+ }
+
+ public Connection getConnection() throws SQLException {
+ return dataSource.getConnection();
+ }
+
+ public void close() {
+ if (dataSource != null && !dataSource.isClosed()) {
+ dataSource.close();
+ }
+ }
+
+ private void createTables() {
+ try (Connection connection = getConnection()) {
+ PreparedStatement st1 = connection.prepareStatement(
+ "CREATE TABLE IF NOT EXISTS ce_players (UUID VARCHAR(36) NOT NULL, NAME VARCHAR(50), PRIMARY KEY (UUID))");
+ st1.executeUpdate();
+ PreparedStatement st2 = connection.prepareStatement(
+ "CREATE TABLE IF NOT EXISTS ce_events_data (UUID VARCHAR(36) NOT NULL, EVENT_NAME VARCHAR(100) NOT NULL, " +
+ "COOLDOWN BIGINT, ONE_TIME BOOLEAN, PRIMARY KEY (UUID, EVENT_NAME), " +
+ "FOREIGN KEY (UUID) REFERENCES ce_players(UUID) ON DELETE CASCADE)");
+ st2.executeUpdate();
+ } catch (SQLException e) {
+ plugin.getLogger().log(java.util.logging.Level.SEVERE, "Error while creating MySQL tables", e);
+ }
+ }
+
+ public void getPlayer(UUID uuid, GenericCallback callback) {
+ Runnable task = () -> {
+ PlayerData player = null;
+ try (Connection connection = getConnection()) {
+ PreparedStatement st = connection.prepareStatement(
+ "SELECT p.NAME, e.EVENT_NAME, e.COOLDOWN, e.ONE_TIME FROM ce_players p " +
+ "LEFT JOIN ce_events_data e ON p.UUID = e.UUID WHERE p.UUID = ?");
+ st.setString(1, uuid.toString());
+ ResultSet rs = st.executeQuery();
+
+ ArrayList events = new ArrayList<>();
+ while (rs.next()) {
+ if (player == null) {
+ player = new PlayerData(uuid, rs.getString("NAME"));
+ }
+ String eventName = rs.getString("EVENT_NAME");
+ if (eventName != null) {
+ events.add(new EventData(eventName, rs.getLong("COOLDOWN"), rs.getBoolean("ONE_TIME")));
+ }
+ }
+ if (player != null) player.setEventData(events);
+
+ } catch (SQLException e) {
+ plugin.getLogger().log(java.util.logging.Level.SEVERE, "Error while loading player data from MySQL for: " + uuid, e);
+ }
+
+ PlayerData finalPlayer = player;
+ if (plugin.isFolia) {
+ plugin.getServer().getGlobalRegionScheduler().execute(plugin, () -> callback.onDone(finalPlayer));
+ } else {
+ plugin.getServer().getScheduler().runTask(plugin, () -> callback.onDone(finalPlayer));
+ }
+ };
+
+ if (plugin.isFolia) {
+ plugin.getServer().getAsyncScheduler().runNow(plugin, s -> task.run());
+ } else {
+ plugin.getServer().getScheduler().runTaskAsynchronously(plugin, task);
+ }
+ }
+
+ public void saveData(PlayerData player) {
+ try (Connection connection = getConnection()) {
+ // Update or Insert player
+ PreparedStatement st1 = connection.prepareStatement(
+ "INSERT INTO ce_players (UUID, NAME) VALUES (?, ?) ON DUPLICATE KEY UPDATE NAME = ?");
+ st1.setString(1, player.getUuid().toString());
+ st1.setString(2, player.getName());
+ st1.setString(3, player.getName());
+ st1.executeUpdate();
+
+ // Clear old event data for this player or update?
+ // Efficiency wise: we can replace all for simplicity or use ON DUPLICATE KEY.
+ for (EventData event : player.getEventData()) {
+ PreparedStatement st2 = connection.prepareStatement(
+ "INSERT INTO ce_events_data (UUID, EVENT_NAME, COOLDOWN, ONE_TIME) VALUES (?, ?, ?, ?) " +
+ "ON DUPLICATE KEY UPDATE COOLDOWN = ?, ONE_TIME = ?");
+ st2.setString(1, player.getUuid().toString());
+ st2.setString(2, event.getName());
+ st2.setLong(3, event.getCooldown());
+ st2.setBoolean(4, event.isOneTime());
+ st2.setLong(5, event.getCooldown());
+ st2.setBoolean(6, event.isOneTime());
+ st2.executeUpdate();
+ }
+ } catch (SQLException e) {
+ plugin.getLogger().log(java.util.logging.Level.SEVERE, "Error while saving player data to MySQL for: " + player.getName(), e);
+ }
+ }
+
+ public void saveAllData() {
+ Map players = plugin.getPlayerManager().getPlayers();
+ for (PlayerData player : new ArrayList<>(players.values())) {
+ if (player.isModified()) {
+ saveData(player);
+ player.setModified(false);
+ }
+ }
+ }
+
+ public void resetDataForAllPlayers(String eventName) {
+ try (Connection connection = getConnection()) {
+ PreparedStatement st;
+ if (eventName.equals("all")) {
+ st = connection.prepareStatement("DELETE FROM ce_events_data");
+ } else {
+ st = connection.prepareStatement("DELETE FROM ce_events_data WHERE EVENT_NAME = ?");
+ st.setString(1, eventName);
+ }
+ st.executeUpdate();
+ } catch (SQLException e) {
+ plugin.getLogger().log(java.util.logging.Level.SEVERE, "Error while resetting MySQL data for event: " + eventName, e);
+ }
+ }
+
+ private @NotNull HikariConfig getHikariConfig() {
+ FileConfiguration config = plugin.getConfigsManager().getMainConfigManager().getConfig();
+ String host = config.getString("Config.mysql_database.host");
+ int port = config.getInt("Config.mysql_database.port");
+ String username = config.getString("Config.mysql_database.username");
+ String password = config.getString("Config.mysql_database.password");
+ String database = config.getString("Config.mysql_database.database");
+
+ HikariConfig hikariConfig = new HikariConfig();
+ hikariConfig.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database + "?useSSL=" + config.getBoolean("Config.mysql_database.advanced.useSSL"));
+ hikariConfig.setUsername(username);
+ hikariConfig.setPassword(password);
+ return hikariConfig;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/manager/data/mysql/MySQLPlayerDataManager.java b/src/main/java/ce/ajneb97/manager/data/mysql/MySQLPlayerDataManager.java
new file mode 100644
index 0000000..af27ee9
--- /dev/null
+++ b/src/main/java/ce/ajneb97/manager/data/mysql/MySQLPlayerDataManager.java
@@ -0,0 +1,83 @@
+package ce.ajneb97.manager.data.mysql;
+
+import ce.ajneb97.ConditionalEvents;
+import ce.ajneb97.configs.PlayerConfigsManager;
+import ce.ajneb97.configs.model.CommonConfig;
+import ce.ajneb97.manager.data.PlayerDataManager;
+import ce.ajneb97.model.player.EventData;
+import ce.ajneb97.model.player.GenericCallback;
+import ce.ajneb97.model.player.PlayerData;
+import org.bukkit.configuration.file.FileConfiguration;
+
+import java.util.ArrayList;
+import java.util.UUID;
+import java.util.concurrent.CompletableFuture;
+
+@SuppressWarnings("DataFlowIssue")
+public class MySQLPlayerDataManager extends PlayerDataManager {
+
+ private final MySQLConnection mySQLConnection;
+
+ public MySQLPlayerDataManager(ConditionalEvents plugin) {
+ this.mySQLConnection = new MySQLConnection(plugin);
+ this.mySQLConnection.setupMySql();
+ }
+
+ @Override
+ public void loadData(UUID uuid, GenericCallback callback) {
+ mySQLConnection.getPlayer(uuid, callback);
+ }
+
+ @Override
+ public void saveData(PlayerData playerData) {
+ mySQLConnection.saveData(playerData);
+ }
+
+ @Override
+ public void saveAllData() {
+ mySQLConnection.saveAllData();
+ }
+
+ @Override
+ public void resetDataForAllPlayers(String event) {
+ mySQLConnection.resetDataForAllPlayers(event);
+ }
+
+ public CompletableFuture migrate(PlayerConfigsManager playerConfigsManager) {
+ return CompletableFuture.supplyAsync(() -> {
+ ArrayList configs = playerConfigsManager.getConfigs();
+ int count = 0;
+ for (CommonConfig commonConfig : configs) {
+ String fileName = commonConfig.getFile().getName();
+ if (!fileName.endsWith(".yml")) continue;
+
+ try {
+ UUID uuid = UUID.fromString(fileName.replace(".yml", ""));
+ FileConfiguration config = commonConfig.getConfig();
+ String name = config.getString("name");
+
+ PlayerData playerData = new PlayerData(uuid, name);
+ ArrayList eventDataList = new ArrayList<>();
+ if (config.contains("events")) {
+ for (String key : config.getConfigurationSection("events").getKeys(false)) {
+ boolean oneTime = config.getBoolean("events." + key + ".one_time");
+ long cooldown = config.getLong("events." + key + ".cooldown");
+ eventDataList.add(new EventData(key, cooldown, oneTime));
+ }
+ }
+ playerData.setEventData(eventDataList);
+ saveData(playerData);
+ count++;
+ } catch (Exception ignored) {
+ }
+ }
+ return count;
+ });
+ }
+
+ public void close() {
+ if (mySQLConnection != null) {
+ mySQLConnection.close();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/ce/ajneb97/managers/dependencies/DiscordSRVManager.java b/src/main/java/ce/ajneb97/manager/dependencies/DiscordSRVManager.java
similarity index 81%
rename from src/main/java/ce/ajneb97/managers/dependencies/DiscordSRVManager.java
rename to src/main/java/ce/ajneb97/manager/dependencies/DiscordSRVManager.java
index 713f60c..407e475 100644
--- a/src/main/java/ce/ajneb97/managers/dependencies/DiscordSRVManager.java
+++ b/src/main/java/ce/ajneb97/manager/dependencies/DiscordSRVManager.java
@@ -1,21 +1,17 @@
-package ce.ajneb97.managers.dependencies;
+package ce.ajneb97.manager.dependencies;
-import ce.ajneb97.ConditionalEvents;
import github.scarsz.discordsrv.DiscordSRV;
import github.scarsz.discordsrv.dependencies.jda.api.EmbedBuilder;
import github.scarsz.discordsrv.dependencies.jda.api.entities.MessageChannel;
import org.bukkit.Bukkit;
+
import java.awt.Color;
+
import org.bukkit.entity.Player;
public class DiscordSRVManager {
- private ConditionalEvents plugin;
- public DiscordSRVManager(ConditionalEvents plugin){
- this.plugin = plugin;
- }
-
- public void sendEmbedMessage(String actionLine){
+ public void sendEmbedMessage(String actionLine) {
// discordsrv_embed: channel:;author_name:;title:;player_skin_name:;
//color:,,;image:
EmbedBuilder embed = new EmbedBuilder();
@@ -33,11 +29,11 @@ public void sendEmbedMessage(String actionLine){
int colorB = 0;
String[] sep = actionLine.split(";");
- for(String s : sep) {
+ for (String s : sep) {
String key = s.split(":")[0];
- String value = s.replace(key+":","");
+ String value = s.replace(key + ":", "");
- switch(key){
+ switch (key) {
case "channel":
channel = value;
break;
@@ -51,22 +47,22 @@ public void sendEmbedMessage(String actionLine){
footer = value;
break;
case "author_avatar":
- if(value.startsWith("http:/") || value.startsWith("https:/")){
+ if (value.startsWith("http:/") || value.startsWith("https:/")) {
authorAvatarURL = value;
- }else{
+ } else {
Player player = Bukkit.getPlayer(value);
- if(player != null){
+ if (player != null) {
authorAvatarURL = DiscordSRV.getAvatarUrl(player);
}
}
break;
case "color":
- try{
+ try {
String[] color = value.split(",");
colorR = Integer.parseInt(color[0]);
colorG = Integer.parseInt(color[1]);
colorB = Integer.parseInt(color[2]);
- }catch(Exception e){
+ } catch (Exception e) {
colorR = 0;
colorG = 0;
colorB = 0;
@@ -84,7 +80,7 @@ public void sendEmbedMessage(String actionLine){
}
}
- embed.setAuthor(authorName,null,authorAvatarURL);
+ embed.setAuthor(authorName, null, authorAvatarURL);
embed.setTitle(title);
embed.setFooter(footer);
embed.setColor(new Color(colorR, colorG, colorB));
diff --git a/src/main/java/ce/ajneb97/managers/dependencies/Metrics.java b/src/main/java/ce/ajneb97/manager/dependencies/Metrics.java
similarity index 92%
rename from src/main/java/ce/ajneb97/managers/dependencies/Metrics.java
rename to src/main/java/ce/ajneb97/manager/dependencies/Metrics.java
index 2cd94c5..60d12bc 100644
--- a/src/main/java/ce/ajneb97/managers/dependencies/Metrics.java
+++ b/src/main/java/ce/ajneb97/manager/dependencies/Metrics.java
@@ -1,4 +1,4 @@
-package ce.ajneb97.managers.dependencies;
+package ce.ajneb97.manager.dependencies;
/*
* This Metrics class was auto-generated and can be copied into your project if you are
@@ -42,6 +42,7 @@
import java.util.stream.Collectors;
import java.util.zip.GZIPOutputStream;
import javax.net.ssl.HttpsURLConnection;
+
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
@@ -57,9 +58,9 @@ public class Metrics {
/**
* Creates a new Metrics instance.
*
- * @param plugin Your plugin instance.
+ * @param plugin Your plugin instance.
* @param serviceId The id of the service. It can be found at What is my plugin id?
+ * href="https://bstats.org/what-is-my-plugin-id">What is my plugin id?
*/
public Metrics(JavaPlugin plugin, int serviceId) {
this.plugin = plugin;
@@ -111,7 +112,9 @@ public Metrics(JavaPlugin plugin, int serviceId) {
logResponseStatusText);
}
- /** Shuts down the underlying scheduler service. */
+ /**
+ * Shuts down the underlying scheduler service.
+ */
public void shutdown() {
metricsBase.shutdown();
}
@@ -158,7 +161,9 @@ private int getPlayerAmount() {
public static class MetricsBase {
- /** The version of the Metrics class. */
+ /**
+ * The version of the Metrics class.
+ */
public static final String METRICS_VERSION = "3.0.2";
private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s";
@@ -196,23 +201,23 @@ public static class MetricsBase {
/**
* Creates a new MetricsBase class instance.
*
- * @param platform The platform of the service.
- * @param serviceId The id of the service.
- * @param serverUuid The server uuid.
- * @param enabled Whether or not data sending is enabled.
- * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
- * appends all platform-specific data.
- * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
- * appends all service-specific data.
- * @param submitTaskConsumer A consumer that takes a runnable with the submit task. This can be
- * used to delegate the data collection to a another thread to prevent errors caused by
- * concurrency. Can be {@code null}.
+ * @param platform The platform of the service.
+ * @param serviceId The id of the service.
+ * @param serverUuid The server uuid.
+ * @param enabled Whether or not data sending is enabled.
+ * @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
+ * appends all platform-specific data.
+ * @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
+ * appends all service-specific data.
+ * @param submitTaskConsumer A consumer that takes a runnable with the submit task. This can be
+ * used to delegate the data collection to a another thread to prevent errors caused by
+ * concurrency. Can be {@code null}.
* @param checkServiceEnabledSupplier A supplier to check if the service is still enabled.
- * @param errorLogger A consumer that accepts log message and an error.
- * @param infoLogger A consumer that accepts info log messages.
- * @param logErrors Whether or not errors should be logged.
- * @param logSentData Whether or not the sent data should be logged.
- * @param logResponseStatusText Whether or not the response status text should be logged.
+ * @param errorLogger A consumer that accepts log message and an error.
+ * @param infoLogger A consumer that accepts info log messages.
+ * @param logErrors Whether or not errors should be logged.
+ * @param logSentData Whether or not the sent data should be logged.
+ * @param logResponseStatusText Whether or not the response status text should be logged.
*/
public MetricsBase(
String platform,
@@ -356,7 +361,9 @@ private void sendData(JsonObjectBuilder.JsonObject data) throws Exception {
}
}
- /** Checks that the class was properly relocated. */
+ /**
+ * Checks that the class was properly relocated.
+ */
private void checkRelocation() {
// You can use the property to disable the check in your test environment
if (System.getProperty("bstats.relocatecheck") == null
@@ -364,9 +371,9 @@ private void checkRelocation() {
// Maven's Relocate is clever and changes strings, too. So we have to use this
// little "trick" ... :D
final String defaultPackage =
- new String(new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'});
+ new String(new byte[]{'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'});
final String examplePackage =
- new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'});
+ new String(new byte[]{'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'});
// We want to make sure no one just copy & pastes the example and uses the wrong
// package names
if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage)
@@ -401,7 +408,7 @@ public static class SimplePie extends CustomChart {
/**
* Class constructor.
*
- * @param chartId The id of the chart.
+ * @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public SimplePie(String chartId, Callable callable) {
@@ -427,7 +434,7 @@ public static class MultiLineChart extends CustomChart {
/**
* Class constructor.
*
- * @param chartId The id of the chart.
+ * @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public MultiLineChart(String chartId, Callable