From 3f8e6513467f1ab2fb51078a81bbe7f3626b7898 Mon Sep 17 00:00:00 2001 From: xGinko Date: Fri, 9 Feb 2024 01:12:43 +0100 Subject: [PATCH] further improvement of logging messages --- .../modules/VillagerChunkLimit.java | 13 ++++--------- .../gameplay/EnableLeashingVillagers.java | 18 +++++++++--------- .../gameplay/LevelOptimizedProfession.java | 3 ++- .../gameplay/RestockOptimizedTrades.java | 4 +++- .../modules/optimization/OptimizeByBlock.java | 11 ++++------- .../optimization/OptimizeByNametag.java | 14 +++++--------- .../optimization/OptimizeByWorkstation.java | 10 +++------- .../villageroptimizer/utils/CommonUtil.java | 8 ++++++-- 8 files changed, 36 insertions(+), 45 deletions(-) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java index 58e6825..6da2114 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/VillagerChunkLimit.java @@ -8,7 +8,6 @@ import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.utils.CommonUtil; import net.kyori.adventure.text.Component; import org.bukkit.Chunk; -import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.entity.Entity; @@ -158,11 +157,9 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { scheduler.runAtEntity(villager, kill -> { villager.remove(); if (log_enabled) { - final Location location = villager.getLocation(); VillagerOptimizer.getLog().info(Component.text( "Removed unoptimized villager with profession '" + villager.getProfession().name() + "' at " + - "x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + - " in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color())); } }); } @@ -183,11 +180,9 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener { villager.remove(); if (log_enabled) { - final Location location = villager.getLocation(); - VillagerOptimizer.getLog().info(Component.text( - "Removed optimized villager with profession '" + villager.getProfession().name() + "' at " + - "x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + - " in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + VillagerOptimizer.getLog().info(Component.text("Removed optimized villager with profession '" + + villager.getProfession().name() + "' at " + + CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color())); } }); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java index 864ef96..0e95b07 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/EnableLeashingVillagers.java @@ -5,8 +5,9 @@ import me.xginko.villageroptimizer.VillagerCache; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; +import me.xginko.villageroptimizer.utils.CommonUtil; import net.kyori.adventure.text.Component; -import org.bukkit.Location; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -79,14 +80,13 @@ public class EnableLeashingVillagers implements VillagerOptimizerModule, Listene scheduler.runAtEntity(villager, leash -> { // Legitimate to not use entities from the event object since they are final in PlayerLeashEntityEvent - if (villager.setLeashHolder(player)) { - handItem.subtract(1); - if (log_enabled) { - final Location location = villager.getLocation(); - VillagerOptimizer.getLog().info(Component.text(player.getName() + " leashed a villager at " + - "x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); - } + if (!villager.setLeashHolder(player)) return; + if (player.getGameMode().equals(GameMode.SURVIVAL)) + handItem.subtract(1); // Manually consume for survival players + + if (log_enabled) { + VillagerOptimizer.getLog().info(Component.text(player.getName() + " leashed a villager at " + + CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color())); } }); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java index 7091ef0..d3c43a5 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/LevelOptimizedProfession.java @@ -19,6 +19,7 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import java.time.Duration; import java.util.concurrent.TimeUnit; public class LevelOptimizedProfession implements VillagerOptimizerModule, Listener { @@ -86,7 +87,7 @@ public class LevelOptimizedProfession implements VillagerOptimizerModule, Listen Player player = (Player) event.getPlayer(); final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown_millis))) + .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java index 951e61c..979e25d 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/gameplay/RestockOptimizedTrades.java @@ -19,6 +19,8 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEntityEvent; +import java.time.Duration; + public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener { private final VillagerCache villagerCache; @@ -71,7 +73,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener if (notify_player && !player_bypassing) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis))) + .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java index 00591b9..c8536e3 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByBlock.java @@ -27,6 +27,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -144,17 +145,15 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { } if (log_enabled) { - final Location location = closestOptimizableVillager.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by block at " + - "x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + - " in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(closestOptimizableVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } } else { CommonUtil.shakeHead(closestOptimizableVillager.villager()); if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis))) + .replacement(CommonUtil.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } @@ -209,10 +208,8 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { } if (log_enabled) { - final Location location = closestOptimizedVillager.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by block at " + - "x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } } } \ No newline at end of file diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java index ce1b977..c25531b 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByNametag.java @@ -4,8 +4,8 @@ import me.xginko.villageroptimizer.VillagerCache; import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.config.Config; -import me.xginko.villageroptimizer.enums.permissions.Bypass; import me.xginko.villageroptimizer.enums.OptimizationType; +import me.xginko.villageroptimizer.enums.permissions.Bypass; import me.xginko.villageroptimizer.enums.permissions.Optimize; import me.xginko.villageroptimizer.events.VillagerOptimizeEvent; import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent; @@ -14,7 +14,6 @@ import me.xginko.villageroptimizer.utils.CommonUtil; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -27,6 +26,7 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -111,11 +111,9 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { } if (log_enabled) { - final Location location = wVillager.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by nametag '" + name + "' at " + - "x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } } else { event.setCancelled(true); @@ -123,7 +121,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown))) + .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown)))) .build(); VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } @@ -140,11 +138,9 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { } if (log_enabled) { - final Location location = wVillager.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by nametag '" + name + "' at " + - "x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } } } diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java index 20e0a94..2541e40 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimization/OptimizeByWorkstation.java @@ -130,7 +130,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener if (notify_player) { final TextReplacementConfig timeLeft = TextReplacementConfig.builder() .matchLiteral("%time%") - .replacement(CommonUtil.formatTime(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis))) + .replacement(CommonUtil.formatDuration(Duration.ofMillis(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis)))) .build(); VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line .replaceText(timeLeft) @@ -161,11 +161,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener } if (log_enabled) { - final Location location = finalToOptimize.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by workstation (" + placed.getType().toString().toLowerCase() + ") at " + - "x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(finalToOptimize.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } }, toOptimize.canLooseProfession() ? resettable_delay_millis : delay_millis, TimeUnit.MILLISECONDS)); } @@ -224,11 +222,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener } if (log_enabled) { - final Location location = closestOptimizedVillager.villager().getLocation(); VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by workstation (" + broken.getType().toString().toLowerCase() + ") at " + - "x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + - ", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); + CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color())); } } } \ No newline at end of file diff --git a/src/main/java/me/xginko/villageroptimizer/utils/CommonUtil.java b/src/main/java/me/xginko/villageroptimizer/utils/CommonUtil.java index 4192796..8f84542 100644 --- a/src/main/java/me/xginko/villageroptimizer/utils/CommonUtil.java +++ b/src/main/java/me/xginko/villageroptimizer/utils/CommonUtil.java @@ -1,6 +1,7 @@ package me.xginko.villageroptimizer.utils; import org.bukkit.Chunk; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Villager; import org.jetbrains.annotations.NotNull; @@ -8,8 +9,7 @@ import org.jetbrains.annotations.NotNull; import java.time.Duration; public class CommonUtil { - public static @NotNull String formatTime(final long millis) { - Duration duration = Duration.ofMillis(millis); + public static @NotNull String formatDuration(Duration duration) { final int seconds = duration.toSecondsPart(); final int minutes = duration.toMinutesPart(); final int hours = duration.toHoursPart(); @@ -23,6 +23,10 @@ public class CommonUtil { } } + public static String formatLocation(@NotNull Location location) { + return "[" + location.getWorld().getName() + "] x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ(); + } + private static boolean specificChunkLoadedMethodAvailable = true; public static boolean isEntitiesLoaded(@NotNull Chunk chunk) { if (!specificChunkLoadedMethodAvailable) {