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]);
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);

View File

@ -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) {

View File

@ -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)));
}
}
}

View File

@ -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());

View File

@ -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)

View File

@ -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 {

View File

@ -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)