further improvement of logging messages

This commit is contained in:
xGinko 2024-02-09 01:12:43 +01:00
parent 01fed3258d
commit 3f8e651346
8 changed files with 36 additions and 45 deletions

View File

@ -8,7 +8,6 @@ import me.xginko.villageroptimizer.config.Config;
import me.xginko.villageroptimizer.utils.CommonUtil; import me.xginko.villageroptimizer.utils.CommonUtil;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -158,11 +157,9 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener {
scheduler.runAtEntity(villager, kill -> { scheduler.runAtEntity(villager, kill -> {
villager.remove(); villager.remove();
if (log_enabled) { if (log_enabled) {
final Location location = villager.getLocation();
VillagerOptimizer.getLog().info(Component.text( VillagerOptimizer.getLog().info(Component.text(
"Removed unoptimized villager with profession '" + villager.getProfession().name() + "' at " + "Removed unoptimized villager with profession '" + villager.getProfession().name() + "' at " +
"x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color()));
" in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
}); });
} }
@ -183,11 +180,9 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener {
villager.remove(); villager.remove();
if (log_enabled) { if (log_enabled) {
final Location location = villager.getLocation(); VillagerOptimizer.getLog().info(Component.text("Removed optimized villager with profession '" +
VillagerOptimizer.getLog().info(Component.text( villager.getProfession().name() + "' at " +
"Removed optimized villager with profession '" + villager.getProfession().name() + "' at " + CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color()));
"x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() +
" in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
}); });
} }

View File

@ -5,8 +5,9 @@ import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.config.Config;
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule; import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
import me.xginko.villageroptimizer.utils.CommonUtil;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import org.bukkit.Location; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -79,14 +80,13 @@ public class EnableLeashingVillagers implements VillagerOptimizerModule, Listene
scheduler.runAtEntity(villager, leash -> { scheduler.runAtEntity(villager, leash -> {
// Legitimate to not use entities from the event object since they are final in PlayerLeashEntityEvent // Legitimate to not use entities from the event object since they are final in PlayerLeashEntityEvent
if (villager.setLeashHolder(player)) { if (!villager.setLeashHolder(player)) return;
handItem.subtract(1); if (player.getGameMode().equals(GameMode.SURVIVAL))
if (log_enabled) { handItem.subtract(1); // Manually consume for survival players
final Location location = villager.getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + " leashed a villager at " + if (log_enabled) {
"x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + VillagerOptimizer.getLog().info(Component.text(player.getName() + " leashed a villager at " +
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style)); CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.plugin_style.color()));
}
} }
}); });
} }

View File

@ -19,6 +19,7 @@ import org.bukkit.event.inventory.InventoryType;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.time.Duration;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class LevelOptimizedProfession implements VillagerOptimizerModule, Listener { public class LevelOptimizedProfession implements VillagerOptimizerModule, Listener {
@ -86,7 +87,7 @@ public class LevelOptimizedProfession implements VillagerOptimizerModule, Listen
Player player = (Player) event.getPlayer(); Player player = (Player) event.getPlayer();
final TextReplacementConfig timeLeft = TextReplacementConfig.builder() final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
.matchLiteral("%time%") .matchLiteral("%time%")
.replacement(CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown_millis))) .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis))))
.build(); .build();
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line.replaceText(timeLeft)));
} }

View File

@ -19,6 +19,8 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent;
import java.time.Duration;
public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener { public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener {
private final VillagerCache villagerCache; private final VillagerCache villagerCache;
@ -71,7 +73,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener
if (notify_player && !player_bypassing) { if (notify_player && !player_bypassing) {
final TextReplacementConfig timeLeft = TextReplacementConfig.builder() final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
.matchLiteral("%time%") .matchLiteral("%time%")
.replacement(CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis))) .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis))))
.build(); .build();
VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line.replaceText(timeLeft)));
} }

View File

@ -27,6 +27,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import java.time.Duration;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -144,17 +145,15 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
} }
if (log_enabled) { if (log_enabled) {
final Location location = closestOptimizableVillager.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by block at " + VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by block at " +
"x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + CommonUtil.formatLocation(closestOptimizableVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
" in world " + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
} else { } else {
CommonUtil.shakeHead(closestOptimizableVillager.villager()); CommonUtil.shakeHead(closestOptimizableVillager.villager());
if (notify_player) { if (notify_player) {
final TextReplacementConfig timeLeft = TextReplacementConfig.builder() final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
.matchLiteral("%time%") .matchLiteral("%time%")
.replacement(CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis))) .replacement(CommonUtil.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis))))
.build(); .build();
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); 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) { if (log_enabled) {
final Location location = closestOptimizedVillager.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by block at " + VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by block at " +
"x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
} }
} }

View File

@ -4,8 +4,8 @@ import me.xginko.villageroptimizer.VillagerCache;
import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.WrappedVillager; import me.xginko.villageroptimizer.WrappedVillager;
import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.config.Config;
import me.xginko.villageroptimizer.enums.permissions.Bypass;
import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.enums.OptimizationType;
import me.xginko.villageroptimizer.enums.permissions.Bypass;
import me.xginko.villageroptimizer.enums.permissions.Optimize; import me.xginko.villageroptimizer.enums.permissions.Optimize;
import me.xginko.villageroptimizer.events.VillagerOptimizeEvent; import me.xginko.villageroptimizer.events.VillagerOptimizeEvent;
import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent; 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.Component;
import net.kyori.adventure.text.TextReplacementConfig; import net.kyori.adventure.text.TextReplacementConfig;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -27,6 +26,7 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.time.Duration;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -111,11 +111,9 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
} }
if (log_enabled) { if (log_enabled) {
final Location location = wVillager.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + VillagerOptimizer.getLog().info(Component.text(player.getName() +
" optimized villager by nametag '" + name + "' at " + " optimized villager by nametag '" + name + "' at " +
"x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
} else { } else {
event.setCancelled(true); event.setCancelled(true);
@ -123,7 +121,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
if (notify_player) { if (notify_player) {
final TextReplacementConfig timeLeft = TextReplacementConfig.builder() final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
.matchLiteral("%time%") .matchLiteral("%time%")
.replacement(CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown))) .replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown))))
.build(); .build();
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); 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) { if (log_enabled) {
final Location location = wVillager.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + VillagerOptimizer.getLog().info(Component.text(player.getName() +
" unoptimized villager by nametag '" + name + "' at " + " unoptimized villager by nametag '" + name + "' at " +
"x=" + location.getX() + ", y=" + location.getY() + ", z=" + location.getZ() + CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
} }
} }

View File

@ -130,7 +130,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
if (notify_player) { if (notify_player) {
final TextReplacementConfig timeLeft = TextReplacementConfig.builder() final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
.matchLiteral("%time%") .matchLiteral("%time%")
.replacement(CommonUtil.formatTime(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis))) .replacement(CommonUtil.formatDuration(Duration.ofMillis(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis))))
.build(); .build();
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line
.replaceText(timeLeft) .replaceText(timeLeft)
@ -161,11 +161,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
} }
if (log_enabled) { if (log_enabled) {
final Location location = finalToOptimize.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + VillagerOptimizer.getLog().info(Component.text(player.getName() +
" optimized villager by workstation (" + placed.getType().toString().toLowerCase() + ") at " + " optimized villager by workstation (" + placed.getType().toString().toLowerCase() + ") at " +
"x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + CommonUtil.formatLocation(finalToOptimize.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
}, toOptimize.canLooseProfession() ? resettable_delay_millis : delay_millis, TimeUnit.MILLISECONDS)); }, toOptimize.canLooseProfession() ? resettable_delay_millis : delay_millis, TimeUnit.MILLISECONDS));
} }
@ -224,11 +222,9 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
} }
if (log_enabled) { if (log_enabled) {
final Location location = closestOptimizedVillager.villager().getLocation();
VillagerOptimizer.getLog().info(Component.text(player.getName() + VillagerOptimizer.getLog().info(Component.text(player.getName() +
" unoptimized villager by workstation (" + broken.getType().toString().toLowerCase() + ") at " + " unoptimized villager by workstation (" + broken.getType().toString().toLowerCase() + ") at " +
"x=" + location.getBlockX() + ", y=" + location.getBlockY() + ", z=" + location.getBlockZ() + CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.plugin_style.color()));
", world=" + location.getWorld().getName()).style(VillagerOptimizer.plugin_style));
} }
} }
} }

View File

@ -1,6 +1,7 @@
package me.xginko.villageroptimizer.utils; package me.xginko.villageroptimizer.utils;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Villager; import org.bukkit.entity.Villager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -8,8 +9,7 @@ import org.jetbrains.annotations.NotNull;
import java.time.Duration; import java.time.Duration;
public class CommonUtil { public class CommonUtil {
public static @NotNull String formatTime(final long millis) { public static @NotNull String formatDuration(Duration duration) {
Duration duration = Duration.ofMillis(millis);
final int seconds = duration.toSecondsPart(); final int seconds = duration.toSecondsPart();
final int minutes = duration.toMinutesPart(); final int minutes = duration.toMinutesPart();
final int hours = duration.toHoursPart(); 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; private static boolean specificChunkLoadedMethodAvailable = true;
public static boolean isEntitiesLoaded(@NotNull Chunk chunk) { public static boolean isEntitiesLoaded(@NotNull Chunk chunk) {
if (!specificChunkLoadedMethodAvailable) { if (!specificChunkLoadedMethodAvailable) {