improve renaming logic
This commit is contained in:
parent
b3ce2b2dbd
commit
8d1f339729
@ -39,11 +39,11 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
|
||||
this.cooldown = config.getInt("optimization-methods.commands.optimizevillagers.cooldown-seconds", 600, """
|
||||
Cooldown in seconds until a villager can be optimized again using the command.\s
|
||||
Here for configuration freedom. Recommended to leave as is to not enable any exploitable behavior.""") * 1000L;
|
||||
this.shouldRename = config.getBoolean("optimization-methods.commands.optimizevillagers.rename-optimized-villagers.enable", true,
|
||||
this.shouldRename = config.getBoolean("optimization-methods.commands.rename-optimized-villagers.enable", true,
|
||||
"Renames villagers to what you configure below when they're optimized.");
|
||||
this.overwrite_name = config.getBoolean("optimization-methods.commands.optimizevillagers.rename-optimized-villagers.overwrite-previous-name", false,
|
||||
this.overwrite_name = config.getBoolean("optimization-methods.commands.rename-optimized-villagers.overwrite-previous-name", false,
|
||||
"Whether to overwrite the previous name or not.");
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.commands.optimizevillagers.name-villager.name", "<gray>Optimize",
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.commands.name-villager.name", "<green>Optimized",
|
||||
"The MiniMessage formatted name to give optimized villagers."));
|
||||
}
|
||||
|
||||
|
@ -4,12 +4,15 @@ import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
@ -26,10 +29,15 @@ import java.util.List;
|
||||
public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabCompleter {
|
||||
|
||||
private final List<String> tabCompletes = List.of("5", "10", "25", "50");
|
||||
private final String optimizeName;
|
||||
private final int maxRadius;
|
||||
private final boolean shouldRename;
|
||||
|
||||
public UnOptVillagersRadius() {
|
||||
this.maxRadius = VillagerOptimizer.getConfiguration().getInt("optimization-methods.commands.unoptimizevillagers.max-block-radius", 100);
|
||||
Config config = VillagerOptimizer.getConfiguration();
|
||||
this.maxRadius = config.getInt("optimization-methods.commands.unoptimizevillagers.max-block-radius", 100);
|
||||
this.shouldRename = config.getBoolean("optimization-methods.commands.rename-optimized-villagers.enable", true);
|
||||
this.optimizeName = MiniMessage.miniMessage().stripTags(config.getString("optimization-methods.commands.name-villager.name", "<green>Optimized"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -81,6 +89,14 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
|
||||
|
||||
if (wVillager.isOptimized()) {
|
||||
wVillager.setOptimization(OptimizationType.NONE);
|
||||
|
||||
if (shouldRename) {
|
||||
Component vilName = villager.customName();
|
||||
if (vilName != null && PlainTextComponentSerializer.plainText().serialize(vilName).equalsIgnoreCase(optimizeName)) {
|
||||
villager.customName(null);
|
||||
}
|
||||
}
|
||||
|
||||
successCount++;
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import me.xginko.villageroptimizer.utils.LogUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -70,7 +71,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
"Renames villagers to what you configure below when they're optimized.");
|
||||
this.overwrite_name = config.getBoolean("optimization-methods.block-optimization.rename-optimized-villagers.overwrite-previous-name", false,
|
||||
"Whether to overwrite the previous name or not.");
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.block-optimization.name-villager.name", "<gray>Optimize",
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.block-optimization.name-villager.name", "<green>Block Optimized",
|
||||
"The MiniMessage formatted name to give optimized villagers."));
|
||||
this.shouldLog = config.getBoolean("optimization-methods.block-optimization.log", false);
|
||||
}
|
||||
@ -189,10 +190,20 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
if (closestOptimizedVillager == null) return;
|
||||
|
||||
closestOptimizedVillager.setOptimization(OptimizationType.NONE);
|
||||
|
||||
Villager villager = closestOptimizedVillager.villager();
|
||||
|
||||
if (shouldRename) {
|
||||
Component vilName = villager.customName();
|
||||
if (vilName != null && PlainTextComponentSerializer.plainText().serialize(vilName).equalsIgnoreCase(PlainTextComponentSerializer.plainText().serialize(optimizeName))) {
|
||||
villager.customName(null);
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldNotifyPlayer) {
|
||||
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
||||
.matchLiteral("%vil_profession%")
|
||||
.replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase())
|
||||
.replacement(villager.getProfession().toString().toLowerCase())
|
||||
.build();
|
||||
final TextReplacementConfig brokenMaterial = TextReplacementConfig.builder()
|
||||
.matchLiteral("%blocktype%")
|
||||
|
@ -11,6 +11,7 @@ import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@ -54,7 +55,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
"Renames villagers to what you configure below when they're optimized.");
|
||||
this.overwrite_name = config.getBoolean("optimization-methods.workstation-optimization.rename-optimized-villagers.overwrite-previous-name", false,
|
||||
"Whether to overwrite the previous name or not.");
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.workstation-optimization.name-villager.name", "<gray>Optimize",
|
||||
this.optimizeName = MiniMessage.miniMessage().deserialize(config.getString("optimization-methods.workstation-optimization.name-villager.name", "<green>Workstation Optimized",
|
||||
"The MiniMessage formatted name to give optimized villagers."));
|
||||
this.shouldLog = config.getBoolean("optimization-methods.workstation-optimization.log", false);
|
||||
}
|
||||
@ -177,10 +178,20 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
if (closestOptimizedVillager == null) return;
|
||||
|
||||
closestOptimizedVillager.setOptimization(OptimizationType.NONE);
|
||||
|
||||
Villager villager = closestOptimizedVillager.villager();
|
||||
|
||||
if (shouldRename) {
|
||||
Component vilName = villager.customName();
|
||||
if (vilName != null && PlainTextComponentSerializer.plainText().serialize(vilName).equalsIgnoreCase(PlainTextComponentSerializer.plainText().serialize(optimizeName))) {
|
||||
villager.customName(null);
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldNotifyPlayer) {
|
||||
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
||||
.matchLiteral("%vil_profession%")
|
||||
.replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase())
|
||||
.replacement(villager.getProfession().toString().toLowerCase())
|
||||
.build();
|
||||
final TextReplacementConfig brokenWorkstation = TextReplacementConfig.builder()
|
||||
.matchLiteral("%workstation%")
|
||||
|
Loading…
x
Reference in New Issue
Block a user