diff --git a/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java b/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java index f337e9d..e980597 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/BlockOptimization.java @@ -120,16 +120,18 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { final Location entityLegs = interacted.getLocation(); if ( - config.blocks_that_disable.contains(entityLegs.getBlock().getType()) // for slabs and sink in blocks + config.blocks_that_disable.contains(entityLegs.getBlock().getType()) // check for blocks inside the entity's legs because of slabs and sink-in blocks || config.blocks_that_disable.contains(entityLegs.clone().subtract(0,1,0).getBlock().getType()) ) { if (!wVillager.isOptimized()) { if (wVillager.setOptimization(OptimizationType.BLOCK)) { if (shouldNotifyPlayer) { Player player = event.getPlayer(); + final String vilType = wVillager.villager().getProfession().toString().toLowerCase(); + final String blockType = entityLegs.getBlock().getType().toString().toLowerCase(); VillagerOptimizer.getLang(player.locale()).block_optimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(wVillager.villager().getProfession().toString().toLowerCase()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(entityLegs.getBlock().getType().toString().toLowerCase()).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(vilType).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(blockType).build()) )); } if (shouldLog) @@ -137,8 +139,10 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { } else { if (shouldNotifyPlayer) { Player player = event.getPlayer(); + final long optimizeCoolDown = wVillager.getOptimizeCooldown(); VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(wVillager.getOptimizeCooldown())).build()))); + .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(optimizeCoolDown)).build())) + ); } } } @@ -147,9 +151,11 @@ public class BlockOptimization implements VillagerOptimizerModule, Listener { wVillager.setOptimization(OptimizationType.OFF); if (shouldNotifyPlayer) { Player player = event.getPlayer(); + final String vilType = wVillager.villager().getProfession().toString().toLowerCase(); + final String blockType = entityLegs.getBlock().getType().toString().toLowerCase(); VillagerOptimizer.getLang(player.locale()).block_unoptimize_success.forEach(line -> player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(wVillager.villager().getProfession().toString().toLowerCase()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(entityLegs.getBlock().getType().toString().toLowerCase()).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(vilType).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%blocktype%").replacement(blockType).build()) )); } if (shouldLog) diff --git a/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java b/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java index 7e44892..735b5b5 100644 --- a/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java +++ b/src/main/java/me/xginko/villageroptimizer/modules/WorkstationOptimization.java @@ -6,7 +6,6 @@ import me.xginko.villageroptimizer.config.Config; import me.xginko.villageroptimizer.enums.OptimizationType; import me.xginko.villageroptimizer.models.WrappedVillager; import me.xginko.villageroptimizer.utils.CommonUtils; -import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextReplacementConfig; import org.bukkit.Location; import org.bukkit.block.Block; @@ -85,18 +84,22 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene if (closest.setOptimization(OptimizationType.WORKSTATION)) { if (shouldNotifyPlayer) { Player player = event.getPlayer(); - for (Component line : VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success) player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(closest.villager().getProfession().toString().toLowerCase()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(placed.getType().toString().toLowerCase()).build()) - ); + final String vilType = closest.villager().getProfession().toString().toLowerCase(); + final String workstation = placed.getType().toString().toLowerCase(); + VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success.forEach(line -> player.sendMessage(line + .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(vilType).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) + )); } if (shouldLog) VillagerOptimizer.getLog().info(event.getPlayer().getName() + " optimized a villager using workstation: '" + placed.getType().toString().toLowerCase() + "'"); } else { if (shouldNotifyPlayer) { Player player = event.getPlayer(); - for (Component line : VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown) player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(closest.getOptimizeCooldown())).build())); + final long optimizeCoolDown = closest.getOptimizeCooldown(); + VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown.forEach(line -> player.sendMessage(line + .replaceText(TextReplacementConfig.builder().matchLiteral("%time%").replacement(CommonUtils.formatTime(optimizeCoolDown)).build()) + )); } } } @@ -125,10 +128,12 @@ public class WorkstationOptimization implements VillagerOptimizerModule, Listene if (closest != null && closest.getOptimizationType().equals(OptimizationType.WORKSTATION)) { if (shouldNotifyPlayer) { Player player = event.getPlayer(); - for (Component line : VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success) player.sendMessage(line - .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(closest.villager().getProfession().toString().toLowerCase()).build()) - .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(placed.getType().toString().toLowerCase()).build()) - ); + final String vilType = closest.villager().getProfession().toString().toLowerCase(); + final String workstation = placed.getType().toString().toLowerCase(); + VillagerOptimizer.getLang(player.locale()).workstation_unoptimize_success.forEach(line -> player.sendMessage(line + .replaceText(TextReplacementConfig.builder().matchLiteral("%villagertype%").replacement(vilType).build()) + .replaceText(TextReplacementConfig.builder().matchLiteral("%workstation%").replacement(workstation).build()) + )); } if (shouldLog) VillagerOptimizer.getLog().info(event.getPlayer().getName() + " unoptimized a villager by breaking workstation: '" + placed.getType().toString().toLowerCase() + "'");