improve messaging

This commit is contained in:
xGinko 2023-09-29 12:48:31 +02:00
parent 38639979d6
commit 20b5b724c5
7 changed files with 115 additions and 67 deletions

View File

@ -66,10 +66,11 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
int specifiedRadius = Integer.parseInt(args[0]); int specifiedRadius = Integer.parseInt(args[0]);
if (specifiedRadius > maxRadius) { if (specifiedRadius > maxRadius) {
final String maxRadiusStr = Integer.toString(maxRadius); final TextReplacementConfig limit = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line .matchLiteral("%distance%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%distance%").replacement(maxRadiusStr).build()) .replacement(Integer.toString(maxRadius))
)); .build();
VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line.replaceText(limit)));
return true; return true;
} }
@ -95,26 +96,34 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
} }
if (successCount <= 0 && failCount <= 0) { if (successCount <= 0 && failCount <= 0) {
final String radius = Integer.toString(specifiedRadius); final TextReplacementConfig radius = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line .matchLiteral("%radius%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) .replacement(Integer.toString(specifiedRadius))
)); .build();
VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line.replaceText(radius)));
return true; return true;
} }
if (successCount > 0) { if (successCount > 0) {
final String success = Integer.toString(successCount); final TextReplacementConfig success_amount = TextReplacementConfig.builder()
final String radius = Integer.toString(specifiedRadius); .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 VillagerOptimizer.getLang(player.locale()).command_optimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(success).build()) .replaceText(success_amount)
.replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) .replaceText(radius)
)); ));
} }
if (failCount > 0) { if (failCount > 0) {
final String alreadyOptimized = Integer.toString(failCount); final TextReplacementConfig alreadyOptimized = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).command_optimize_fail.forEach(line -> player.sendMessage(line .matchLiteral("%amount%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(alreadyOptimized).build()) .replacement(Integer.toString(failCount))
)); .build();
VillagerOptimizer.getLang(player.locale()).command_optimize_fail.forEach(line -> player.sendMessage(line.replaceText(alreadyOptimized)));
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
VillagerOptimizer.getLang(player.locale()).command_radius_invalid.forEach(player::sendMessage); VillagerOptimizer.getLang(player.locale()).command_radius_invalid.forEach(player::sendMessage);

View File

@ -60,10 +60,11 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
int specifiedRadius = Integer.parseInt(args[0]); int specifiedRadius = Integer.parseInt(args[0]);
if (specifiedRadius > maxRadius) { if (specifiedRadius > maxRadius) {
final String maxRadiusStr = Integer.toString(maxRadius); final TextReplacementConfig limit = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line .matchLiteral("%distance%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%distance%").replacement(maxRadiusStr).build()) .replacement(Integer.toString(maxRadius))
)); .build();
VillagerOptimizer.getLang(player.locale()).command_radius_limit_exceed.forEach(line -> player.sendMessage(line.replaceText(limit)));
return true; return true;
} }
@ -85,16 +86,23 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
} }
if (successCount <= 0) { if (successCount <= 0) {
final String radius = Integer.toString(specifiedRadius); final TextReplacementConfig radius = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line .matchLiteral("%radius%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) .replacement(Integer.toString(specifiedRadius))
)); .build();
VillagerOptimizer.getLang(player.locale()).command_no_villagers_nearby.forEach(line -> player.sendMessage(line.replaceText(radius)));
} else { } else {
final String successfullyUnoptimized = Integer.toString(successCount); final TextReplacementConfig success_amount = TextReplacementConfig.builder()
final String radius = Integer.toString(specifiedRadius); .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 VillagerOptimizer.getLang(player.locale()).command_unoptimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(successfullyUnoptimized).build()) .replaceText(success_amount)
.replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) .replaceText(radius)
)); ));
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {

View File

@ -79,10 +79,11 @@ public class LevelVillagers implements VillagerOptimizerModule, Listener {
} else { } else {
if (shouldNotify) { if (shouldNotify) {
Player player = (Player) event.getPlayer(); Player player = (Player) event.getPlayer();
final String timeLeft = CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown)); final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line .matchLiteral("%time%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()) .replacement(CommonUtil.formatTime(wVillager.getLevelCooldownMillis(cooldown)))
)); .build();
VillagerOptimizer.getLang(player.locale()).villager_leveling_up.forEach(line -> player.sendMessage(line.replaceText(timeLeft)));
} }
} }
} }

View File

@ -19,10 +19,6 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
public class RestockTrades implements VillagerOptimizerModule, Listener { public class RestockTrades implements VillagerOptimizerModule, Listener {
/*
* TODO: Disable notify message for cooldown bypassers
* */
private final VillagerCache villagerCache; private final VillagerCache villagerCache;
private final long restock_delay_millis; private final long restock_delay_millis;
private final boolean shouldLog, notifyPlayer; private final boolean shouldLog, notifyPlayer;
@ -65,14 +61,17 @@ public class RestockTrades implements VillagerOptimizerModule, Listener {
if (!wVillager.isOptimized()) return; if (!wVillager.isOptimized()) return;
Player player = event.getPlayer(); 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.restock();
wVillager.saveRestockTime(); wVillager.saveRestockTime();
if (notifyPlayer) { if (notifyPlayer && !player_bypassing) {
final String timeLeft = CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis)); final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line .matchLiteral("%time%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build())) .replacement(CommonUtil.formatTime(wVillager.getRestockCooldownMillis(restock_delay_millis)))
); .build();
VillagerOptimizer.getLang(player.locale()).trades_restocked.forEach(line -> player.sendMessage(line.replaceText(timeLeft)));
} }
if (shouldLog) if (shouldLog)
VillagerOptimizer.getLog().info("Restocked optimized villager at "+ wVillager.villager().getLocation()); VillagerOptimizer.getLog().info("Restocked optimized villager at "+ wVillager.villager().getLocation());

View File

@ -115,11 +115,17 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
closestOptimizableVillager.setOptimization(OptimizationType.BLOCK); closestOptimizableVillager.setOptimization(OptimizationType.BLOCK);
closestOptimizableVillager.saveOptimizeTime(); closestOptimizableVillager.saveOptimizeTime();
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String vilProfession = closestOptimizableVillager.villager().getProfession().toString().toLowerCase(); final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
final String placedType = placed.getType().toString().toLowerCase(); .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 VillagerOptimizer.getLang(player.locale()).block_optimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) .replaceText(vilProfession)
.replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(placedType).build()) .replaceText(placedMaterial)
)); ));
} }
if (shouldLog) if (shouldLog)
@ -127,9 +133,11 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
} else { } else {
closestOptimizableVillager.villager().shakeHead(); closestOptimizableVillager.villager().shakeHead();
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String timeLeft = CommonUtil.formatTime(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown)); final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line .matchLiteral("%time%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(timeLeft).build()))); .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); closestOptimizedVillager.setOptimization(OptimizationType.NONE);
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String vilProfession = closestOptimizedVillager.villager().getProfession().toString().toLowerCase(); final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
final String brokenType = broken.getType().toString().toLowerCase(); .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 VillagerOptimizer.getLang(player.locale()).block_unoptimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) .replaceText(vilProfession)
.replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(brokenType).build()) .replaceText(brokenMaterial)
)); ));
} }
if (shouldLog) if (shouldLog)

View File

@ -69,7 +69,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
} }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
private void onPlayerNameEntity(PlayerInteractEntityEvent event) { private void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return; if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
Player player = event.getPlayer(); Player player = event.getPlayer();
if (!player.hasPermission(Permissions.Optimize.NAMETAG.get())) return; if (!player.hasPermission(Permissions.Optimize.NAMETAG.get())) return;
@ -105,9 +105,11 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
event.setCancelled(true); event.setCancelled(true);
villager.shakeHead(); villager.shakeHead();
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String time = CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown)); final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line .matchLiteral("%time%")
.replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(time).build()))); .replacement(CommonUtil.formatTime(wVillager.getOptimizeCooldownMillis(cooldown)))
.build();
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line.replaceText(timeLeft)));
} }
} }
} else { } else {

View File

@ -99,11 +99,17 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
closestOptimizableVillager.setOptimization(OptimizationType.WORKSTATION); closestOptimizableVillager.setOptimization(OptimizationType.WORKSTATION);
closestOptimizableVillager.saveOptimizeTime(); closestOptimizableVillager.saveOptimizeTime();
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String vilProfession = closestOptimizableVillager.villager().getProfession().toString().toLowerCase(); final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
final String workstation = placed.getType().toString().toLowerCase(); .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 VillagerOptimizer.getLang(player.locale()).workstation_optimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) .replaceText(vilProfession)
.replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) .replaceText(placedWorkstation)
)); ));
} }
if (shouldLog) if (shouldLog)
@ -111,9 +117,12 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
} else { } else {
closestOptimizableVillager.villager().shakeHead(); closestOptimizableVillager.villager().shakeHead();
if (shouldNotifyPlayer) { 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 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); closestOptimizedVillager.setOptimization(OptimizationType.NONE);
if (shouldNotifyPlayer) { if (shouldNotifyPlayer) {
final String vilProfession = closestOptimizedVillager.villager().getProfession().toString().toLowerCase(); final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
final String workstation = broken.getType().toString().toLowerCase(); .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 VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success.forEach(line -> player.sendMessage(line
.replaceText(TextReplacementConfig.builder().matchLiteral("%vil_profession%").replacement(vilProfession).build()) .replaceText(vilProfession)
.replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) .replaceText(brokenWorkstation)
)); ));
} }
if (shouldLog) if (shouldLog)