From 20b5b724c5c1ceb4ea44161e6424439b1e922cf8 Mon Sep 17 00:00:00 2001 From: xGinko Date: Fri, 29 Sep 2023 12:48:31 +0200 Subject: [PATCH] improve messaging --- .../optimizevillagers/OptVillagersRadius.java | 41 +++++++++++-------- .../UnOptVillagersRadius.java | 32 +++++++++------ .../modules/mechanics/LevelVillagers.java | 9 ++-- .../modules/mechanics/RestockTrades.java | 19 ++++----- .../optimizations/OptimizeByBlock.java | 36 +++++++++++----- .../optimizations/OptimizeByNametag.java | 10 +++-- .../optimizations/OptimizeByWorkstation.java | 35 +++++++++++----- 7 files changed, 115 insertions(+), 67 deletions(-) diff --git a/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java b/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java index 0e08c12..3cbcacb 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/optimizevillagers/OptVillagersRadius.java @@ -66,10 +66,11 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete int specifiedRadius = Integer.parseInt(args[0]); if (specifiedRadius > maxRadius) { - final String maxRadiusStr = Integer.toString(maxRadius); - VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%distance%").replacement(maxRadiusStr).build()) - )); + final TextReplacementConfig limit = TextReplacementConfig.builder() + .matchLiteral("%distance%") + .replacement(Integer.toString(maxRadius)) + .build(); + VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line.replaceText(limit))); return true; } @@ -95,26 +96,34 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete } if (successCount <= 0 && failCount <= 0) { - final String radius = Integer.toString(specifiedRadius); - VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) - )); + final TextReplacementConfig radius = TextReplacementConfig.builder() + .matchLiteral("%radius%") + .replacement(Integer.toString(specifiedRadius)) + .build(); + VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line.replaceText(radius))); return true; } if (successCount > 0) { - final String success = Integer.toString(successCount); - final String radius = Integer.toString(specifiedRadius); + final TextReplacementConfig success_amount = TextReplacementConfig.builder() + .matchLiteral("%amount%") + .replacement(Integer.toString(successCount)) + .build(); + final TextReplacementConfig radius = TextReplacementConfig.builder() + .matchLiteral("%radius%") + .replacement(Integer.toString(specifiedRadius)) + .build(); VillagerOptimizer.getLang(player.locale()).command_optimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(success).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) + .replaceText(success_amount) + .replaceText(radius) )); } if (failCount > 0) { - final String alreadyOptimized = Integer.toString(failCount); - VillagerOptimizer.getLang(player.locale()).command_optimize_fail.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(alreadyOptimized).build()) - )); + final TextReplacementConfig alreadyOptimized = TextReplacementConfig.builder() + .matchLiteral("%amount%") + .replacement(Integer.toString(failCount)) + .build(); + VillagerOptimizer.getLang(player.locale()).command_optimize_fail.forEach(line -> player.sendMessage(line.replaceText(alreadyOptimized))); } } catch (NumberFormatException e) { VillagerOptimizer.getLang(player.locale()).command_radius_invalid.forEach(player::sendMessage); diff --git a/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java b/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java index e2bd6e3..4896f0e 100644 --- a/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java +++ b/src/main/java/me/xginko/villageroptimizer/commands/unoptimizevillagers/UnOptVillagersRadius.java @@ -60,10 +60,11 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple int specifiedRadius = Integer.parseInt(args[0]); if (specifiedRadius > maxRadius) { - final String maxRadiusStr = Integer.toString(maxRadius); - VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%distance%").replacement(maxRadiusStr).build()) - )); + final TextReplacementConfig limit = TextReplacementConfig.builder() + .matchLiteral("%distance%") + .replacement(Integer.toString(maxRadius)) + .build(); + VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line.replaceText(limit))); return true; } @@ -85,16 +86,23 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple } if (successCount <= 0) { - final String radius = Integer.toString(specifiedRadius); - VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) - )); + final TextReplacementConfig radius = TextReplacementConfig.builder() + .matchLiteral("%radius%") + .replacement(Integer.toString(specifiedRadius)) + .build(); + VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line.replaceText(radius))); } else { - final String successfullyUnoptimized = Integer.toString(successCount); - final String radius = Integer.toString(specifiedRadius); + final TextReplacementConfig success_amount = TextReplacementConfig.builder() + .matchLiteral("%amount%") + .replacement(Integer.toString(successCount)) + .build(); + final TextReplacementConfig radius = TextReplacementConfig.builder() + .matchLiteral("%radius%") + .replacement(Integer.toString(specifiedRadius)) + .build(); VillagerOptimizer.getLang(player.locale()).command_unoptimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(successfullyUnoptimized).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) + .replaceText(success_amount) + .replaceText(radius) )); } } catch (NumberFormatException e) { diff --git a/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java b/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java index 65c913b..28fda83 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/mechanics/LevelVillagers.java @@ -79,10 +79,11 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener { } else { if (shouldNotify) { Player player = (Player) event.getPlayer(); - final String timeLeft = CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown)); - VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()) - )); + final TextReplacementConfig timeLeft = TextReplacementConfig.builder() + .matchLiteral("%time%") + .replacement(CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown))) + .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/mechanics/RestockTrades.java b/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java index d2d700d..594db8f 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/mechanics/RestockTrades.java @@ -19,10 +19,6 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; public class RestockTrades implements VillagerOptimizerModule, Listener { - /* - * TODO: Disable notify message for cooldown bypassers - * */ - private final VillagerCache villagerCache; private final long restock_delay_millis; private final boolean shouldLog, notifyPlayer; @@ -65,14 +61,17 @@ public class RestockTrades implements VillagerOptimizerModule, Listener { if (!wVillager.isOptimized()) return; Player player = event.getPlayer(); - if (wVillager.canRestock(restock_delay_millis) || player.hasPermission(Permissions.Bypass.RESTOCK_COOLDOWN.get())) { + final boolean player_bypassing = player.hasPermission(Permissions.Bypass.RESTOCK_COOLDOWN.get()); + + if (wVillager.canRestock(restock_delay_millis) || player_bypassing) { wVillager.restock(); wVillager.saveRestockTime(); - if (notifyPlayer) { - final String timeLeft = CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis)); - VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())) - ); + if (notifyPlayer && !player_bypassing) { + final TextReplacementConfig timeLeft = TextReplacementConfig.builder() + .matchLiteral("%time%") + .replacement(CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis))) + .build(); + VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } if (shouldLog) VillagerOptimizer.getLog().info("Restocked optimized villager at "+ wVillager.villager().getLocation()); diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java index 3123efc..2a827e3 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByBlock.java @@ -115,11 +115,17 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { closestOptimizableVillager.setOptimization(OptimizationType.BLOCK); closestOptimizableVillager.saveOptimizeTime(); if (shouldNotifyPlayer) { - final String vilProfession = closestOptimizableVillager.villager().getProfession().toString().toLowerCase(); - final String placedType = placed.getType().toString().toLowerCase(); + final TextReplacementConfig vilProfession = TextReplacementConfig.builder() + .matchLiteral("%vil_profession%") + .replacement(closestOptimizableVillager.villager().getProfession().toString().toLowerCase()) + .build(); + final TextReplacementConfig placedMaterial = TextReplacementConfig.builder() + .matchLiteral("%blocktype%") + .replacement(placed.getType().toString().toLowerCase()) + .build(); VillagerOptimizer.getLang(player.locale()).block_optimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(placedType).build()) + .replaceText(vilProfession) + .replaceText(placedMaterial) )); } if (shouldLog) @@ -127,9 +133,11 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { } else { closestOptimizableVillager.villager().shakeHead(); if (shouldNotifyPlayer) { - final String timeLeft = CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown)); - VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()))); + final TextReplacementConfig timeLeft = TextReplacementConfig.builder() + .matchLiteral("%time%") + .replacement(CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown))) + .build(); + VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } } } @@ -163,11 +171,17 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener { closestOptimizedVillager.setOptimization(OptimizationType.NONE); if (shouldNotifyPlayer) { - final String vilProfession = closestOptimizedVillager.villager().getProfession().toString().toLowerCase(); - final String brokenType = broken.getType().toString().toLowerCase(); + final TextReplacementConfig vilProfession = TextReplacementConfig.builder() + .matchLiteral("%vil_profession%") + .replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase()) + .build(); + final TextReplacementConfig brokenMaterial = TextReplacementConfig.builder() + .matchLiteral("%blocktype%") + .replacement(broken.getType().toString().toLowerCase()) + .build(); VillagerOptimizer.getLang(player.locale()).block_unoptimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(brokenType).build()) + .replaceText(vilProfession) + .replaceText(brokenMaterial) )); } if (shouldLog) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java index 0f6f556..61369f2 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByNametag.java @@ -69,7 +69,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - private void onPlayerNameEntity(PlayerInteractEntityEvent event) { + private void onPlayerInteractEntity(PlayerInteractEntityEvent event) { if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return; Player player = event.getPlayer(); if (!player.hasPermission(Permissions.Optimize.NAMETAG.get())) return; @@ -105,9 +105,11 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener { event.setCancelled(true); villager.shakeHead(); if (shouldNotifyPlayer) { - final String time = CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown)); - VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(time).build()))); + final TextReplacementConfig timeLeft = TextReplacementConfig.builder() + .matchLiteral("%time%") + .replacement(CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown))) + .build(); + VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft))); } } } else { diff --git a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java index 242ab37..42f30cc 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/optimizations/OptimizeByWorkstation.java @@ -99,11 +99,17 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener closestOptimizableVillager.setOptimization(OptimizationType.WORKSTATION); closestOptimizableVillager.saveOptimizeTime(); if (shouldNotifyPlayer) { - final String vilProfession = closestOptimizableVillager.villager().getProfession().toString().toLowerCase(); - final String workstation = placed.getType().toString().toLowerCase(); + final TextReplacementConfig vilProfession = TextReplacementConfig.builder() + .matchLiteral("%vil_profession%") + .replacement(closestOptimizableVillager.villager().getProfession().toString().toLowerCase()) + .build(); + final TextReplacementConfig placedWorkstation = TextReplacementConfig.builder() + .matchLiteral("%workstation%") + .replacement(placed.getType().toString().toLowerCase()) + .build(); VillagerOptimizer.getLang(player.locale()).workstation_optimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) + .replaceText(vilProfession) + .replaceText(placedWorkstation) )); } if (shouldLog) @@ -111,9 +117,12 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener } else { closestOptimizableVillager.villager().shakeHead(); if (shouldNotifyPlayer) { - final String timeLeft = CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown)); + final TextReplacementConfig timeLeft = TextReplacementConfig.builder() + .matchLiteral("%time%") + .replacement(CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown))) + .build(); VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()) + .replaceText(timeLeft) )); } } @@ -150,11 +159,17 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener closestOptimizedVillager.setOptimization(OptimizationType.NONE); if (shouldNotifyPlayer) { - final String vilProfession = closestOptimizedVillager.villager().getProfession().toString().toLowerCase(); - final String workstation = broken.getType().toString().toLowerCase(); + final TextReplacementConfig vilProfession = TextReplacementConfig.builder() + .matchLiteral("%vil_profession%") + .replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase()) + .build(); + final TextReplacementConfig brokenWorkstation = TextReplacementConfig.builder() + .matchLiteral("%workstation%") + .replacement(broken.getType().toString().toLowerCase()) + .build(); VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) + .replaceText(vilProfession) + .replaceText(brokenWorkstation) )); } if (shouldLog)