From f9500a888b77965238225604972d32b75c9fd780 Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 18:24:21 +0300 Subject: [PATCH 1/9] chore(deps): added lombok --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d624282..857029b 100644 --- a/pom.xml +++ b/pom.xml @@ -118,6 +118,12 @@ 1.26.0 provided + + org.projectlombok + lombok + 1.18.34 + provided + @@ -157,4 +163,4 @@ - \ No newline at end of file + From 6c198b05ce9fbfec3e14f4949fb2917a15a7712a Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 18:32:07 +0300 Subject: [PATCH 2/9] chore: refactor server version --- .../java/ce/ajneb97/ConditionalEvents.java | 4 ++-- .../libs/armorequipevent/ArmorListener.java | 9 +++----- .../libs/armorequipevent/ArmorType.java | 4 +--- .../java/ce/ajneb97/utils/ActionUtils.java | 22 ++++++++----------- .../java/ce/ajneb97/utils/BlockUtils.java | 8 +++---- src/main/java/ce/ajneb97/utils/ItemUtils.java | 3 +-- .../java/ce/ajneb97/utils/OtherUtils.java | 19 +++------------- .../java/ce/ajneb97/utils/ServerVersion.java | 5 ++++- 8 files changed, 26 insertions(+), 48 deletions(-) diff --git a/src/main/java/ce/ajneb97/ConditionalEvents.java b/src/main/java/ce/ajneb97/ConditionalEvents.java index 6bb23fa..2e37160 100644 --- a/src/main/java/ce/ajneb97/ConditionalEvents.java +++ b/src/main/java/ce/ajneb97/ConditionalEvents.java @@ -109,11 +109,11 @@ public void registerEvents() { pm.registerEvents(new OtherEventsListener(this), this); pm.registerEvents(new CustomEventListener(this), this); - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_9_R1)){ + if (ServerVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_9_R1)) { pm.registerEvents(new ItemSelectListenerNew(), this); pm.registerEvents(new PlayerEventsListenerNew1_9(this), this); } - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_16_R1)){ + if (ServerVersion.serverVersionGreaterEqualThan(serverVersion, ServerVersion.v1_16_R1)) { pm.registerEvents(new PlayerEventsListenerNew1_16(this), this); } diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java index 434dac1..4c2f390 100644 --- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java +++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorListener.java @@ -89,11 +89,10 @@ public final void inventoryClick(final InventoryClickEvent e){ } } }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)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_9_R1)) { ItemStack offhandItem = e.getWhoClicked().getInventory().getItemInOffHand(); if(e.getSlotType() == SlotType.ARMOR && !isAirOrNull(offhandItem)){ ArmorType offhandArmorType = ArmorType.matchType(offhandItem); @@ -135,12 +134,11 @@ public void playerInteractEvent(PlayerInteractEvent e){ 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)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R1)) { switch(newArmorType){ case HELMET: oldArmorPiece = player.getInventory().getHelmet(); @@ -234,8 +232,7 @@ public static boolean isAirOrNull(ItemStack item){ public static boolean isHead(ItemStack item) { String materialName = item.getType().name(); - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_13_R1)) { if(materialName.equals("CARVED_PUMPKIN")){ return true; } diff --git a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java index ac45f9c..0eca102 100644 --- a/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java +++ b/src/main/java/ce/ajneb97/libs/armorequipevent/ArmorType.java @@ -2,7 +2,6 @@ import ce.ajneb97.ConditionalEvents; import ce.ajneb97.utils.ServerVersion; -import org.bukkit.Material; import org.bukkit.inventory.ItemStack; /** @@ -28,8 +27,7 @@ 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 (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_13_R1)) { if(type.equals("CARVED_PUMPKIN")){ return HELMET; } diff --git a/src/main/java/ce/ajneb97/utils/ActionUtils.java b/src/main/java/ce/ajneb97/utils/ActionUtils.java index 62483d2..061c347 100644 --- a/src/main/java/ce/ajneb97/utils/ActionUtils.java +++ b/src/main/java/ce/ajneb97/utils/ActionUtils.java @@ -54,9 +54,8 @@ public static void jsonMessage(Player player,String actionLine){ player.spigot().sendMessage(base); } - public static void miniMessage(Player player,String actionLine,ConditionalEvents plugin){ - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(plugin.getDependencyManager().isPaper() && serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_19_R3)) { + public static void miniMessage(Player player, String actionLine, ConditionalEvents plugin) { + if (plugin.getDependencyManager().isPaper() && ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_19_R3)) { player.sendRichMessage(actionLine); } } @@ -295,11 +294,10 @@ public static void playSoundResourcePack(Player player,String actionLine){ public static void stopSound(Player player,String actionLine){ // stopsound: sound/all - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_10_R1)) { + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_10_R1)) { Sound sound = null; if(actionLine.equals("all")){ - if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_17_R1)){ + if (!ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_17_R1)) { return; } player.stopAllSounds(); @@ -607,11 +605,10 @@ public static void firework(Player player,String actionLine,ConditionalEvents pl location = player.getLocation(); } - ServerVersion serverVersion = ConditionalEvents.serverVersion; - EntityType entityType = null; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){ + EntityType entityType; + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R4)) { entityType = EntityType.FIREWORK_ROCKET; - }else{ + } else { entityType = EntityType.valueOf("FIREWORK"); } Firework firework = (Firework) location.getWorld().spawnEntity(location, entityType); @@ -705,10 +702,9 @@ public static void setOnFire(Player player,String actionLine){ } - public static void freeze(Player player,String actionLine){ + public static void freeze(Player player, String actionLine) { // freeze: - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_17_R1)) { + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_17_R1)) { player.setFreezeTicks(Integer.parseInt(actionLine)); } } diff --git a/src/main/java/ce/ajneb97/utils/BlockUtils.java b/src/main/java/ce/ajneb97/utils/BlockUtils.java index 11c4c7a..33f2a21 100644 --- a/src/main/java/ce/ajneb97/utils/BlockUtils.java +++ b/src/main/java/ce/ajneb97/utils/BlockUtils.java @@ -33,8 +33,7 @@ public static String getHeadTextureData(Block block) { if(material.name().equals("PLAYER_HEAD") || material.name().equals("SKULL") || material.name().equals("PLAYER_WALL_HEAD")) { Skull skullBlock = (Skull) block.getState(); - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_21_R1)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_21_R1)) { if(skullBlock.getOwnerProfile() == null){ return ""; } @@ -60,7 +59,7 @@ public static String getHeadTextureData(Block block) { gameProfile.getProperties().containsKey("textures")) { Collection properties = gameProfile.getProperties().get("textures"); for(Property p : properties) { - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R2)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R2)) { String pName = (String)p.getClass().getMethod("name").invoke(p); if(pName.equals("textures")){ return (String)p.getClass().getMethod("value").invoke(p); @@ -95,8 +94,7 @@ public static void setHeadTextureData(Block block,String texture,String owner){ return; } - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R2)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R2)) { PlayerProfile profile = Bukkit.createPlayerProfile(UUID.randomUUID()); PlayerTextures textures = profile.getTextures(); URL url; diff --git a/src/main/java/ce/ajneb97/utils/ItemUtils.java b/src/main/java/ce/ajneb97/utils/ItemUtils.java index 49603b8..b1fd287 100644 --- a/src/main/java/ce/ajneb97/utils/ItemUtils.java +++ b/src/main/java/ce/ajneb97/utils/ItemUtils.java @@ -85,8 +85,7 @@ public static void setSkullData(ItemStack item,String texture,String id,String o } if(texture != null){ - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R2)){ + if (ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_20_R2)) { UUID uuid = id != null ? UUID.fromString(id) : UUID.randomUUID(); PlayerProfile profile = Bukkit.createPlayerProfile(uuid); PlayerTextures textures = profile.getTextures(); diff --git a/src/main/java/ce/ajneb97/utils/OtherUtils.java b/src/main/java/ce/ajneb97/utils/OtherUtils.java index 01239b6..a627f04 100644 --- a/src/main/java/ce/ajneb97/utils/OtherUtils.java +++ b/src/main/java/ce/ajneb97/utils/OtherUtils.java @@ -8,28 +8,15 @@ public class OtherUtils { public static boolean isChatNew() { - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_19_R1)){ - return true; - } - return false; + return ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_19_R1); } public static boolean isNew() { - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_16_R1)){ - return true; - } - return false; + return ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_16_R1); } public static boolean isLegacy() { - ServerVersion serverVersion = ConditionalEvents.serverVersion; - if(serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_13_R1)){ - return false; - }else { - return true; - } + return !ServerVersion.serverVersionGreaterEqualThan(ConditionalEvents.serverVersion, ServerVersion.v1_13_R1); } public static Color getFireworkColorFromName(String colorName) { diff --git a/src/main/java/ce/ajneb97/utils/ServerVersion.java b/src/main/java/ce/ajneb97/utils/ServerVersion.java index 14c75cc..fc846c2 100644 --- a/src/main/java/ce/ajneb97/utils/ServerVersion.java +++ b/src/main/java/ce/ajneb97/utils/ServerVersion.java @@ -1,5 +1,7 @@ package ce.ajneb97.utils; +import javax.annotation.Nonnull; + public enum ServerVersion { v1_8_R1, v1_8_R2, @@ -28,7 +30,8 @@ public enum ServerVersion { v1_20_R4, v1_21_R1; - public boolean serverVersionGreaterEqualThan(ServerVersion version1,ServerVersion version2){ + public static boolean serverVersionGreaterEqualThan(@Nonnull final ServerVersion version1, + @Nonnull final ServerVersion version2) { return version1.ordinal() >= version2.ordinal(); } } From 54d154cbd5788eda7f424951feaed1f09ea9fcee Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 18:35:23 +0300 Subject: [PATCH 3/9] chore: refactor valueOf -> parse --- .../ce/ajneb97/configs/ConfigsManager.java | 10 +++--- .../ajneb97/model/internal/ExecutedEvent.java | 4 +-- .../java/ce/ajneb97/utils/ActionUtils.java | 36 +++++++++---------- .../ajneb97/utils/GlobalVariablesUtils.java | 12 +++---- src/main/java/ce/ajneb97/utils/ItemUtils.java | 2 +- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/main/java/ce/ajneb97/configs/ConfigsManager.java b/src/main/java/ce/ajneb97/configs/ConfigsManager.java index e736c03..ff23556 100644 --- a/src/main/java/ce/ajneb97/configs/ConfigsManager.java +++ b/src/main/java/ce/ajneb97/configs/ConfigsManager.java @@ -156,19 +156,19 @@ public void configureEvents(){ } } if(config.contains(path+".cooldown")) { - cooldown = Long.valueOf(config.getString(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+".one_time")) { - oneTime = Boolean.valueOf(config.getString(path+".one_time")); + oneTime = Boolean.parseBoolean(config.getString(path + ".one_time")); } if(config.contains(path+".enabled")) { - enabled = Boolean.valueOf(config.getString(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")); + ignoreIfCancelled = Boolean.parseBoolean(config.getString(path + ".ignore_if_cancelled")); } if(config.contains(path+".prevent_cooldown_activation")){ preventCooldownActivationActionGroups = config.getStringList(path+".prevent_cooldown_activation"); @@ -177,7 +177,7 @@ public void configureEvents(){ 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")); + allowMathFormulasInConditions = Boolean.parseBoolean(config.getString(path + ".allow_math_formulas_in_conditions")); } event.setEventType(eventType); diff --git a/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java b/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java index cafc054..77e6198 100644 --- a/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java +++ b/src/main/java/ce/ajneb97/model/internal/ExecutedEvent.java @@ -159,8 +159,8 @@ private void executeActionsFinal(){ } }else if(targeterType.equals(ActionTargeterType.TO_RANGE)){ String[] sep = parametersLine.split(";"); - double range = Double.valueOf(sep[0]); - boolean includePlayer = Boolean.valueOf(sep[1]); + double range = Double.parseDouble(sep[0]); + boolean includePlayer = Boolean.parseBoolean(sep[1]); ArrayList globalPlayers = new ArrayList(); if(includePlayer){ globalPlayers.add(player); diff --git a/src/main/java/ce/ajneb97/utils/ActionUtils.java b/src/main/java/ce/ajneb97/utils/ActionUtils.java index 061c347..6f7122d 100644 --- a/src/main/java/ce/ajneb97/utils/ActionUtils.java +++ b/src/main/java/ce/ajneb97/utils/ActionUtils.java @@ -89,11 +89,11 @@ public static void sendToServer(Player player,String actionLine,ConditionalEvent public static void teleport(Player player, String actionLine, Event minecraftEvent){ String[] sep = actionLine.split(";"); World world = Bukkit.getWorld(sep[0]); - double x = Double.valueOf(sep[1]); - double y = Double.valueOf(sep[2]); - double z = Double.valueOf(sep[3]); - float yaw = Float.valueOf(sep[4]); - float pitch = Float.valueOf(sep[5]); + double x = Double.parseDouble(sep[1]); + double y = Double.parseDouble(sep[2]); + double z = Double.parseDouble(sep[3]); + float yaw = Float.parseFloat(sep[4]); + float pitch = Float.parseFloat(sep[5]); Location l = new Location(world,x,y,z,yaw,pitch); if(minecraftEvent instanceof PlayerRespawnEvent) { @@ -132,14 +132,14 @@ public static void removeItem(Player player,String actionLine){ String[] sep = actionLine.split(";"); String material = sep[0]; - int amount = Integer.valueOf(sep[1]); + int amount = Integer.parseInt(sep[1]); short datavalue = 0; String name = null; String loreContainsLoreLine = null; for(String sepLine : sep) { if(sepLine.startsWith("datavalue: ")) { - datavalue = Short.valueOf(sepLine.replace("datavalue: ", "")); + datavalue = Short.parseShort(sepLine.replace("datavalue: ", "")); }else if(sepLine.startsWith("name: ")) { name = sepLine.replace("name: ", ""); }else if(sepLine.startsWith("lorecontains: ")) { @@ -203,11 +203,11 @@ public static void removeItem(Player player,String actionLine){ public static void givePotionEffect(Player player,String actionLine){ String[] sep = actionLine.split(";"); PotionEffectType potionEffectType = PotionEffectType.getByName(sep[0]); - int duration = Integer.valueOf(sep[1]); - int level = Integer.valueOf(sep[2])-1; + int duration = Integer.parseInt(sep[1]); + int level = Integer.parseInt(sep[2]) - 1; boolean showParticles = true; if(sep.length >= 4) { - showParticles = Boolean.valueOf(sep[3]); + showParticles = Boolean.parseBoolean(sep[3]); } PotionEffect effect = new PotionEffect(potionEffectType,duration,level,false,showParticles); player.addPotionEffect(effect); @@ -219,7 +219,7 @@ public static void removePotionEffect(Player player,String actionLine){ } public static void cancelEvent(String actionLine,Event minecraftEvent){ - boolean cancel = Boolean.valueOf(actionLine); + boolean cancel = Boolean.parseBoolean(actionLine); if(minecraftEvent != null && minecraftEvent instanceof Cancellable) { Cancellable cancellableEvent = (Cancellable) minecraftEvent; cancellableEvent.setCancelled(cancel); @@ -533,15 +533,15 @@ public static void summon(String actionLine) { public static void actionbar(Player player,String actionLine,ConditionalEvents plugin){ String[] sep = actionLine.split(";"); String text = sep[0]; - int duration = Integer.valueOf(sep[1]); + int duration = Integer.parseInt(sep[1]); ActionBarAPI.sendActionBar(player,text,duration,plugin); } public static void title(Player player,String actionLine){ String[] sep = actionLine.split(";"); - int fadeIn = Integer.valueOf(sep[0]); - int stay = Integer.valueOf(sep[1]); - int fadeOut = Integer.valueOf(sep[2]); + int fadeIn = Integer.parseInt(sep[0]); + int stay = Integer.parseInt(sep[1]); + int fadeOut = Integer.parseInt(sep[2]); String title = sep[3]; String subtitle = sep[4]; @@ -592,7 +592,7 @@ public static void firework(Player player,String actionLine,ConditionalEvents pl } }else if(s.startsWith("power:")) { s = s.replace("power:", ""); - power = Integer.valueOf(s); + power = Integer.parseInt(s); }else if(s.startsWith("location:")) { String[] sep2 = s.replace("location:", "").split(";"); location = new Location( @@ -728,7 +728,7 @@ public static void setFoodLevel(Player player,String actionLine){ public static void wait(String actionLine, ExecutedEvent executedEvent){ executedEvent.setOnWait(true); - int timeSeconds = Integer.valueOf(actionLine); + int timeSeconds = Integer.parseInt(actionLine); new BukkitRunnable(){ @Override @@ -740,7 +740,7 @@ public void run() { public static void waitTicks(String actionLine, ExecutedEvent executedEvent){ executedEvent.setOnWait(true); - long timeTicks = Long.valueOf(actionLine); + long timeTicks = Long.parseLong(actionLine); new BukkitRunnable(){ @Override diff --git a/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java b/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java index b2fa199..4f144b3 100644 --- a/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java +++ b/src/main/java/ce/ajneb97/utils/GlobalVariablesUtils.java @@ -75,8 +75,8 @@ public static String variableRandomPlayerWorld(String variable){ public static String variableRandomMinMax(String variable){ String variableLR = variable.replace("random_", ""); String[] variableLRSplit = variableLR.split("_"); - int num1 = Integer.valueOf(variableLRSplit[0]); - int num2 = Integer.valueOf(variableLRSplit[1]); + int num1 = Integer.parseInt(variableLRSplit[0]); + int num2 = Integer.parseInt(variableLRSplit[1]); int numFinal = MathUtils.getRandomNumber(num1, num2); return numFinal+""; } @@ -161,9 +161,9 @@ public static String variableIsNearby(Player finalPlayer,String variable){ String variableLR = variable.replace("is_nearby_", ""); String[] variableLRSplit = variableLR.split("_"); try { - int x = Integer.valueOf(variableLRSplit[0]); - int y = Integer.valueOf(variableLRSplit[1]); - int z = Integer.valueOf(variableLRSplit[2]); + int x = Integer.parseInt(variableLRSplit[0]); + int y = Integer.parseInt(variableLRSplit[1]); + int z = Integer.parseInt(variableLRSplit[2]); String worldName = ""; for(int i=3;i Date: Wed, 2 Oct 2024 18:36:36 +0300 Subject: [PATCH 4/9] chore: refactor ConditionEvent --- .../listeners/PlayerEventsListener.java | 4 +- .../ajneb97/managers/RepetitiveManager.java | 6 +- .../model/internal/ConditionEvent.java | 373 +++++++++--------- .../java/ce/ajneb97/utils/ColorUtils.java | 18 + 4 files changed, 215 insertions(+), 186 deletions(-) create mode 100644 src/main/java/ce/ajneb97/utils/ColorUtils.java diff --git a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java index 4e83a61..6d81400 100644 --- a/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java +++ b/src/main/java/ce/ajneb97/listeners/PlayerEventsListener.java @@ -323,10 +323,10 @@ public void onCommandUse(PlayerCommandPreprocessEvent event) { public void onChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); - new ConditionEvent(plugin, player, event, EventType.PLAYER_CHAT, null) + new ConditionEvent(plugin, player, event, EventType.PLAYER_CHAT, null, true) .addVariables( new StoredVariable("%message%",event.getMessage()) - ).setAsync(true).checkEvent(); + ).checkEvent(); } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/src/main/java/ce/ajneb97/managers/RepetitiveManager.java b/src/main/java/ce/ajneb97/managers/RepetitiveManager.java index 288a903..3731928 100644 --- a/src/main/java/ce/ajneb97/managers/RepetitiveManager.java +++ b/src/main/java/ce/ajneb97/managers/RepetitiveManager.java @@ -52,14 +52,12 @@ public boolean execute(){ 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); + ConditionEvent conditionEvent = new ConditionEvent(plugin, player, null, EventType.REPETITIVE, null, true); eventsManager.checkSingularEvent(conditionEvent,ceEvent); } }else{ //Repetitive server - ConditionEvent conditionEvent = new ConditionEvent(plugin, null, null, EventType.REPETITIVE_SERVER, null); - conditionEvent.setAsync(true); + ConditionEvent conditionEvent = new ConditionEvent(plugin, null, null, EventType.REPETITIVE_SERVER, null, true); eventsManager.checkSingularEvent(conditionEvent,ceEvent); } return true; diff --git a/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java b/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java index 742ec05..c046ed3 100644 --- a/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java +++ b/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java @@ -5,9 +5,12 @@ import ce.ajneb97.model.EventType; import ce.ajneb97.model.StoredVariable; import ce.ajneb97.utils.BlockUtils; +import ce.ajneb97.utils.ColorUtils; import ce.ajneb97.utils.OtherUtils; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; +import com.google.common.collect.ImmutableList; +import lombok.Getter; +import lombok.Setter; +import lombok.val; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Entity; @@ -15,253 +18,263 @@ import org.bukkit.event.Event; import org.bukkit.event.block.Action; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; +import java.util.Objects; // Represent an event that is being executed and conditions need // to be checked. +@Getter public class ConditionEvent { - private ConditionalEvents plugin; - private Player player; - private Player target; - private ArrayList eventVariables; - private Event minecraftEvent; - private EventType eventType; + private final ConditionalEvents plugin; + + private final Player player; + private final Player target; + private final ArrayList eventVariables; + private final Event minecraftEvent; + private final EventType eventType; + private final boolean async; + + @Setter private CEEvent currentEvent; //The current event that is being checked - private boolean async; + public ConditionEvent(@Nonnull final ConditionalEvents plugin, + @Nullable final Player player, + @Nullable final Event minecraftEvent, + @Nonnull final EventType eventType, + @Nullable final Player target) { + this(plugin, player, minecraftEvent, eventType, target, false); + } - public ConditionEvent(ConditionalEvents plugin,Player player, Event minecraftEvent, EventType eventType - , Player target) { - this.plugin = plugin; + public ConditionEvent(@Nonnull final ConditionalEvents plugin, + @Nullable final Player player, + @Nullable final Event minecraftEvent, + @Nonnull final EventType eventType, + @Nullable final Player target, + final boolean async) { + this.plugin = Objects.requireNonNull(plugin); this.player = player; - this.eventVariables = new ArrayList(); + this.eventVariables = new ArrayList<>(); this.minecraftEvent = minecraftEvent; - this.eventType = eventType; + this.eventType = Objects.requireNonNull(eventType); this.target = target; - this.async = false; - } - - public Player getPlayer() { - return player; - } - - public Player getTarget() { - return target; - } - - public ArrayList getEventVariables() { - return eventVariables; - } - - public Event getMinecraftEvent() { - return minecraftEvent; - } - - public EventType getEventType() { - return eventType; - } - - public CEEvent getCurrentEvent() { - return currentEvent; - } - - public void setCurrentEvent(CEEvent currentEvent) { - this.currentEvent = currentEvent; + this.async = async; } - public void checkEvent(){ + public void checkEvent() { plugin.getEventsManager().checkEvent(this); } - public boolean containsValidEvents(){ + public boolean containsValidEvents() { ArrayList validEvents = plugin.getEventsManager().getValidEvents(eventType); - if(validEvents.size() == 0){ - return false; - } - return true; + return !validEvents.isEmpty(); } - public ConditionEvent addVariables(StoredVariable... storedVariables){ - for(StoredVariable v : storedVariables){ - eventVariables.add(v); - } + public ConditionEvent addVariables(@Nonnull final StoredVariable... variables) { + eventVariables.addAll(ImmutableList.copyOf(Objects.requireNonNull(variables))); return this; } - public ConditionEvent addVariables(ArrayList storedVariables){ - eventVariables.addAll(storedVariables); + public ConditionEvent addVariables(@Nonnull final List variables) { + eventVariables.addAll(Objects.requireNonNull(variables)); return this; } - public ConditionEvent setCommonBlockVariables(Block block){ - Location l = block.getLocation(); - eventVariables.add(new StoredVariable("%block_x%",l.getBlockX()+"")); - eventVariables.add(new StoredVariable("%block_y%",l.getBlockY()+"")); - eventVariables.add(new StoredVariable("%block_z%",l.getBlockZ()+"")); - eventVariables.add(new StoredVariable("%block_world%",l.getWorld().getName())); - eventVariables.add(new StoredVariable("%block%",block.getType().name())); - eventVariables.add(new StoredVariable("%block_head_texture%", BlockUtils.getHeadTextureData(block))); - if(OtherUtils.isLegacy()){ - eventVariables.add(new StoredVariable("%block_data%",block.getData()+"")); - }else{ - eventVariables.add(new StoredVariable("%block_data%", - BlockUtils.getBlockDataStringFromObject(block.getBlockData()))); + public ConditionEvent setCommonBlockVariables(@Nonnull final Block block) { + final Location location = block.getLocation(); + addStoredVariable("block_x", String.valueOf(location.getBlockX())); + addStoredVariable("block_y", String.valueOf(location.getBlockY())); + addStoredVariable("block_z", String.valueOf(location.getBlockZ())); + addStoredVariable("block_world", location.getWorld().getName()); + addStoredVariable("block", block.getType().name()); + addStoredVariable("block_head_texture", BlockUtils.getHeadTextureData(block)); + if (OtherUtils.isLegacy()) { + //noinspection deprecation + addStoredVariable("block_data", String.valueOf(block.getData())); + } else { + addStoredVariable("block_data", BlockUtils.getBlockDataStringFromObject(block.getBlockData())); } - return this; } - public ConditionEvent setCommonActionVariables(Action action,Player player){ - String actionVariable = null; - String actionName = action.name(); - if(player.isSneaking()) { - if(actionName.contains("RIGHT_CLICK")) { - actionVariable = "SHIFT_RIGHT_CLICK"; - }else if(actionName.contains("LEFT_CLICK")) { - actionVariable = "SHIFT_LEFT_CLICK"; - }else if(action.equals(Action.PHYSICAL)) { - actionVariable = "PHYSICAL"; - } - }else { - if(actionName.contains("RIGHT_CLICK")) { - actionVariable = "RIGHT_CLICK"; - }else if(actionName.contains("LEFT_CLICK")) { - actionVariable = "LEFT_CLICK"; - }else if(action.equals(Action.PHYSICAL)) { - actionVariable = "PHYSICAL"; - } + private static final String SHIFT_RIGHT_CLICK = "SHIFT_RIGHT_CLICK"; + private static final String RIGHT_CLICK = "RIGHT_CLICK"; + private static final String SHIFT_LEFT_CLICK = "SHIFT_LEFT_CLICK"; + private static final String LEFT_CLICK = "LEFT_CLICK"; + private static final String PHYSICAL = "PHYSICAL"; + + public ConditionEvent setCommonActionVariables(@Nonnull final Action action, + @Nonnull final Player player) { + final String actionVariable; + + switch (action) { + case RIGHT_CLICK_AIR: + case RIGHT_CLICK_BLOCK: + actionVariable = player.isSneaking() ? SHIFT_RIGHT_CLICK : RIGHT_CLICK; + break; + case LEFT_CLICK_AIR: + case LEFT_CLICK_BLOCK: + actionVariable = player.isSneaking() ? SHIFT_LEFT_CLICK : LEFT_CLICK; + break; + case PHYSICAL: + actionVariable = PHYSICAL; + break; + default: + return this; } - if(actionVariable != null){ - eventVariables.add(new StoredVariable("%action_type%",actionVariable)); - } + addStoredVariable("action_type", actionVariable); return this; } - public ConditionEvent setCommonVictimVariables(Entity entity){ - String victimType = entity.getType().name(); - String victimName = ""; - String victimNameColorFormat = ""; - String victimUuid = entity.getUniqueId().toString(); - if(entity.getCustomName() != null) { - victimName = ChatColor.stripColor(entity.getCustomName()); - victimNameColorFormat = entity.getCustomName().replace("§", "&"); - } - Location location = entity.getLocation(); - - eventVariables.add(new StoredVariable("%victim%",victimType)); - eventVariables.add(new StoredVariable("%victim_name%",victimName)); - eventVariables.add(new StoredVariable("%victim_color_format_name%",victimNameColorFormat)); - eventVariables.add(new StoredVariable("%victim_block_x%",location.getBlockX()+"")); - eventVariables.add(new StoredVariable("%victim_block_y%",location.getBlockY()+"")); - eventVariables.add(new StoredVariable("%victim_block_z%",location.getBlockZ()+"")); - eventVariables.add(new StoredVariable("%victim_block_world%",location.getWorld().getName())); - eventVariables.add(new StoredVariable("%victim_uuid%",victimUuid)); - return this; - } + public ConditionEvent setCommonItemVariables(@Nullable final ItemStack item, + @Nullable String otherItemTag) { - public ConditionEvent setCommonItemVariables(ItemStack item,String otherItemTag){ - String name = ""; - String colorFormatName = ""; - String material = ""; - String loreString = ""; - String colorFormatLoreString = ""; + String material = null; short durability = 0; int amount = 0; - List loreList = new ArrayList(); - List colorFormatLoreList = new ArrayList(); + + String name = null; + String colorFormatName = null; + + String metaString = null; + String loreWithoutColorsFullString = null; + String loreWithColorsFullString = null; + List loreWithoutColors = null; + List loreWithColors = null; + int customModelData = 0; - String metaString = ""; - if(item != null) { - durability = item.getDurability(); + if (item != null) { material = item.getType().name(); + //noinspection deprecation + durability = item.getDurability(); amount = item.getAmount(); - if(item.hasItemMeta()) { - ItemMeta meta = item.getItemMeta(); + if (item.hasItemMeta()) { + + val meta = item.getItemMeta(); metaString = meta.toString(); - if(meta.hasDisplayName()) { - name = ChatColor.stripColor(meta.getDisplayName()); - colorFormatName = meta.getDisplayName().replace("§", "&"); + + if (meta.hasDisplayName()) { + //noinspection deprecation + final String displayName = meta.getDisplayName(); + name = ColorUtils.stripColor(displayName); + colorFormatName = displayName.replace("§", "&"); } - if(meta.hasLore()) { - List lore = meta.getLore(); - for(int i=0;i lore = meta.getLore(); + if (lore != null && !lore.isEmpty()) { + final ImmutableList.Builder loreWithoutColorsBuilder = ImmutableList.builder(); + final ImmutableList.Builder loreWithColorsBuilder = ImmutableList.builder(); + + for (final String line : lore) { + loreWithoutColorsBuilder.add(ColorUtils.stripColor(line)); + loreWithColorsBuilder.add(line.replace("§", "&")); } + + loreWithoutColors = loreWithoutColorsBuilder.build(); + loreWithColors = loreWithColorsBuilder.build(); + + loreWithoutColorsFullString = String.join(" ", loreWithoutColors); + loreWithColorsFullString = String.join(" ", loreWithColors); } } - if(OtherUtils.isNew() && meta.hasCustomModelData()){ + + if (OtherUtils.isNew() && meta.hasCustomModelData()) { customModelData = meta.getCustomModelData(); } } } //Example: %offhand:% - if(otherItemTag == null){ + if (otherItemTag == null) { otherItemTag = "%"; - }else{ - otherItemTag = "%"+otherItemTag+":"; + } else { + otherItemTag = "%" + otherItemTag + ":"; } - eventVariables.add(new StoredVariable(otherItemTag+"item%",material)); - eventVariables.add(new StoredVariable(otherItemTag+"item_name%",name)); - eventVariables.add(new StoredVariable(otherItemTag+"item_color_format_name%",colorFormatName)); - eventVariables.add(new StoredVariable(otherItemTag+"item_durability%",durability+"")); - eventVariables.add(new StoredVariable(otherItemTag+"item_amount%",amount+"")); - eventVariables.add(new StoredVariable(otherItemTag+"item_lore%",loreString)); - eventVariables.add(new StoredVariable(otherItemTag+"item_color_format_lore%",colorFormatLoreString)); - eventVariables.add(new StoredVariable(otherItemTag+"item_custom_model_data%",customModelData+"")); - eventVariables.add(new StoredVariable(otherItemTag+"item_meta%",metaString)); - for(int i=0;i %name% + this.eventVariables.add(new StoredVariable(String.format("%%%s%%", + Objects.requireNonNull(name)), + Objects.requireNonNull(value) + )); } - public ConditionEvent setAsync(boolean async) { - this.async = async; - return this; + @Nonnull + private String nullToEmptyString(@Nullable final Object object) { + if (object == null) return ""; + return object.toString(); } + } diff --git a/src/main/java/ce/ajneb97/utils/ColorUtils.java b/src/main/java/ce/ajneb97/utils/ColorUtils.java new file mode 100644 index 0000000..5bf32b9 --- /dev/null +++ b/src/main/java/ce/ajneb97/utils/ColorUtils.java @@ -0,0 +1,18 @@ +package ce.ajneb97.utils; + +import org.bukkit.ChatColor; + +import javax.annotation.Nullable; + +public final class ColorUtils { + + public static String stripColor(@Nullable final String text) { + if (text == null) return null; + //noinspection deprecation + return ChatColor.stripColor(text); + } + + private ColorUtils() { + } + +} From b760f473be694e267ce01c46e32293a86a53c231 Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 21:55:00 +0300 Subject: [PATCH 5/9] feat(perf): experimental serialize item meta --- .../java/ce/ajneb97/configs/MainConfigManager.java | 11 +++++------ .../ce/ajneb97/model/internal/ConditionEvent.java | 10 ++++++++-- src/main/resources/config.yml | 1 + 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/ce/ajneb97/configs/MainConfigManager.java b/src/main/java/ce/ajneb97/configs/MainConfigManager.java index 718574c..84492d1 100644 --- a/src/main/java/ce/ajneb97/configs/MainConfigManager.java +++ b/src/main/java/ce/ajneb97/configs/MainConfigManager.java @@ -2,13 +2,8 @@ import ce.ajneb97.ConditionalEvents; import ce.ajneb97.managers.MessagesManager; -import ce.ajneb97.managers.RepetitiveManager; -import ce.ajneb97.model.CEEvent; -import ce.ajneb97.model.CustomEventProperties; -import ce.ajneb97.model.EventType; import ce.ajneb97.model.ToConditionGroup; -import ce.ajneb97.model.actions.*; -import org.bukkit.Bukkit; +import lombok.Getter; import org.bukkit.configuration.file.FileConfiguration; import java.io.IOException; @@ -26,7 +21,10 @@ public class MainConfigManager { private boolean updateNotifications; private boolean debugActions; private boolean experimentalVariableReplacement; + @Getter + private boolean experimentalSerializeItemMeta; private ArrayList toConditionGroups; + public MainConfigManager(ConditionalEvents plugin){ this.plugin = plugin; this.configFile = new CEConfig("config.yml",plugin,null); @@ -40,6 +38,7 @@ public void configure(){ updateNotifications = config.getBoolean("Config.update_notification"); debugActions = config.getBoolean("Config.debug_actions"); experimentalVariableReplacement = config.getBoolean("Config.experimental.variable_replacement"); + experimentalSerializeItemMeta = config.getBoolean("Config.experimental.serialize_item_meta", true); toConditionGroups = new ArrayList(); String path = "Config.to_condition_groups"; if(config.contains(path)){ diff --git a/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java b/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java index c046ed3..4afde04 100644 --- a/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java +++ b/src/main/java/ce/ajneb97/model/internal/ConditionEvent.java @@ -157,7 +157,10 @@ public ConditionEvent setCommonItemVariables(@Nullable final ItemStack item, if (item.hasItemMeta()) { val meta = item.getItemMeta(); - metaString = meta.toString(); + + if (plugin.getConfigsManager().getMainConfigManager().isExperimentalSerializeItemMeta()) { + metaString = meta.toString(); + } if (meta.hasDisplayName()) { //noinspection deprecation @@ -207,7 +210,10 @@ public ConditionEvent setCommonItemVariables(@Nullable final ItemStack item, addStoredVariable(String.format("%sitem_lore", otherItemTag), nullToEmptyString(loreWithoutColorsFullString)); addStoredVariable(String.format("%sitem_color_format_lore", otherItemTag), nullToEmptyString(loreWithColorsFullString)); addStoredVariable(String.format("%sitem_custom_model_data", otherItemTag), String.valueOf(customModelData)); - addStoredVariable(String.format("%sitem_meta", otherItemTag), nullToEmptyString(metaString)); + + if (plugin.getConfigsManager().getMainConfigManager().isExperimentalSerializeItemMeta()) { + addStoredVariable(String.format("%sitem_meta", otherItemTag), nullToEmptyString(metaString)); + } if (loreWithoutColors != null) { for (int i = 0; i < loreWithoutColors.size(); i++) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 60e0681..0545739 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -3,6 +3,7 @@ Config: data_save_time: 5 debug_actions: true experimental: + serialize_item_meta: true variable_replacement: false register_commands: - "hello" From 044ea6108902b0b8f5c058a9ae6e1d8180e39dac Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 22:58:10 +0300 Subject: [PATCH 6/9] chore: refactor debug manager --- .../java/ce/ajneb97/ConditionalEvents.java | 2 +- src/main/java/ce/ajneb97/MainCommand.java | 3 +- .../ce/ajneb97/managers/DebugManager.java | 197 ++++++++---------- .../ajneb97/model/internal/DebugSender.java | 39 ---- .../ce/ajneb97/model/internal/Debugger.java | 16 ++ 5 files changed, 106 insertions(+), 151 deletions(-) delete mode 100644 src/main/java/ce/ajneb97/model/internal/DebugSender.java create mode 100644 src/main/java/ce/ajneb97/model/internal/Debugger.java diff --git a/src/main/java/ce/ajneb97/ConditionalEvents.java b/src/main/java/ce/ajneb97/ConditionalEvents.java index 2e37160..0556553 100644 --- a/src/main/java/ce/ajneb97/ConditionalEvents.java +++ b/src/main/java/ce/ajneb97/ConditionalEvents.java @@ -55,7 +55,7 @@ public void onEnable(){ this.eventsManager = new EventsManager(this); this.dependencyManager = new DependencyManager(this); this.bungeeMessagingManager = new BungeeMessagingManager(this); - this.debugManager = new DebugManager(this); + this.debugManager = new DebugManager(); this.playerManager = new PlayerManager(this); this.savedItemsManager = new SavedItemsManager(this); this.apiManager = new APIManager(this); diff --git a/src/main/java/ce/ajneb97/MainCommand.java b/src/main/java/ce/ajneb97/MainCommand.java index bab79b7..e7ca712 100644 --- a/src/main/java/ce/ajneb97/MainCommand.java +++ b/src/main/java/ce/ajneb97/MainCommand.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.UUID; public class MainCommand implements CommandExecutor, TabCompleter { @@ -196,7 +195,7 @@ public void debug(String[] args,CommandSender sender,FileConfiguration config,Me playerName = args[2]; } - boolean result = plugin.getDebugManager().setDebugSender(sender,eventName,playerName); + boolean result = plugin.getDebugManager().addDebugger(sender,eventName,playerName); if(result){ if(playerName != null){ msgManager.sendMessage(sender,config.getString("Messages.debugEnabledPlayer") diff --git a/src/main/java/ce/ajneb97/managers/DebugManager.java b/src/main/java/ce/ajneb97/managers/DebugManager.java index 878d3af..7d3ceff 100644 --- a/src/main/java/ce/ajneb97/managers/DebugManager.java +++ b/src/main/java/ce/ajneb97/managers/DebugManager.java @@ -1,158 +1,137 @@ package ce.ajneb97.managers; -import ce.ajneb97.ConditionalEvents; 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.Bukkit; +import ce.ajneb97.model.internal.Debugger; +import lombok.val; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; public class DebugManager { - private ConditionalEvents plugin; - private ArrayList debugSenders; - public DebugManager(ConditionalEvents plugin){ - this.plugin = plugin; - this.debugSenders = new ArrayList(); - } + private static final Map debuggers = new HashMap<>(); + + public boolean addDebugger(@Nonnull final CommandSender sender, + @Nonnull final String event, + @Nullable final String playerName) { - public boolean setDebugSender(CommandSender sender,String event,String playerName){ - DebugSender debugSender = getDebugSender(sender); - if(debugSender == null){ - this.debugSenders.add(new DebugSender(sender,event,playerName)); + val debugger = debuggers.get(sender.getName()); + + if (debugger != null) { + if (Objects.equals(debugger.getEvent(), event)) { + removeDebugger(sender); + return false; + } else { + debugger.setEvent(event); + } + + if (!Objects.equals(debugger.getPlayerName(), playerName)) { + debugger.setPlayerName(playerName); + } return true; } - if(debugSender.getEvent().equals(event)){ - //If the same, then remove it - removeDebugSender(sender); - return false; - } - //If not the same, update it - debugSender.setEvent(event); + + debuggers.put(sender.getName(), new Debugger(sender, event, playerName)); return true; } - public DebugSender getDebugSender(CommandSender sender){ - for(DebugSender debugSender : debugSenders){ - if(debugSender.getSender().equals(sender)){ - return debugSender; - } - } - return null; + public void removeDebugger(@Nonnull final CommandSender sender) { + debuggers.remove(sender.getName()); } - public void removeDebugSender(CommandSender sender){ - for(int i=0;i Date: Wed, 2 Oct 2024 23:09:50 +0300 Subject: [PATCH 7/9] perf: dont collect debug data if debuggers empty --- .../java/ce/ajneb97/managers/EventsManager.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/ce/ajneb97/managers/EventsManager.java b/src/main/java/ce/ajneb97/managers/EventsManager.java index 35023c8..f1d7861 100644 --- a/src/main/java/ce/ajneb97/managers/EventsManager.java +++ b/src/main/java/ce/ajneb97/managers/EventsManager.java @@ -215,12 +215,14 @@ private CheckConditionsResult checkConditions(ConditionEvent conditionEvent, boo arg1 = VariablesUtils.replaceAllVariablesInLine(arg1,variablesProperties,false); arg2 = VariablesUtils.replaceAllVariablesInLine(arg2,variablesProperties,false); - conditionLineWithReplacements = conditionLineWithReplacements+"'"+arg1+"'"+textToFind+"'"+arg2+"'"; - if(c != separatedConditions.length-1){ - if(separatorType.equals(SeparatorType.OR)){ - conditionLineWithReplacements = conditionLineWithReplacements+" or "; - }else if(separatorType.equals(SeparatorType.AND)){ - conditionLineWithReplacements = conditionLineWithReplacements+" and "; + if (debugManager.hasDebuggers()) { + conditionLineWithReplacements = conditionLineWithReplacements+"'"+arg1+"'"+textToFind+"'"+arg2+"'"; + if(c != separatedConditions.length-1){ + if(separatorType.equals(SeparatorType.OR)){ + conditionLineWithReplacements = conditionLineWithReplacements+" or "; + }else if(separatorType.equals(SeparatorType.AND)){ + conditionLineWithReplacements = conditionLineWithReplacements+" and "; + } } } From 0628600c1a9d3aeac1bd4d18c4cb48a7ff84c51d Mon Sep 17 00:00:00 2001 From: Prototype <17ruslan1997@gmail.com> Date: Wed, 2 Oct 2024 23:10:01 +0300 Subject: [PATCH 8/9] perf: cache ConditionalType#values() --- src/main/java/ce/ajneb97/managers/EventsManager.java | 4 ++-- src/main/java/ce/ajneb97/model/ConditionalType.java | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/ce/ajneb97/managers/EventsManager.java b/src/main/java/ce/ajneb97/managers/EventsManager.java index f1d7861..4414519 100644 --- a/src/main/java/ce/ajneb97/managers/EventsManager.java +++ b/src/main/java/ce/ajneb97/managers/EventsManager.java @@ -202,7 +202,7 @@ private CheckConditionsResult checkConditions(ConditionEvent conditionEvent, boo for(int c=0;c conditionGroup, Player player for(int c=0;c String.format("%s:%d", entry.getKey().getName(), entry.getValue())) + .collect(Collectors.joining(",")); + addStoredVariable(String.format("%sitem_enchants", otherItemTag), enchants); + } + if (OtherUtils.isNew() && meta.hasCustomModelData()) { customModelData = meta.getCustomModelData(); } } } - //Example: %offhand:% - if (otherItemTag == null) { - otherItemTag = "%"; - } else { - otherItemTag = "%" + otherItemTag + ":"; - } - addStoredVariable(String.format("%sitem", otherItemTag), nullToEmptyString(material)); addStoredVariable(String.format("%sitem_name", otherItemTag), nullToEmptyString(name)); addStoredVariable(String.format("%sitem_color_format_name", otherItemTag), nullToEmptyString(colorFormatName));