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, """
|
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
|
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;
|
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.");
|
"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.");
|
"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."));
|
"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.VillagerOptimizer;
|
||||||
import me.xginko.villageroptimizer.WrappedVillager;
|
import me.xginko.villageroptimizer.WrappedVillager;
|
||||||
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
||||||
|
import me.xginko.villageroptimizer.config.Config;
|
||||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||||
import me.xginko.villageroptimizer.enums.Permissions;
|
import me.xginko.villageroptimizer.enums.Permissions;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
import net.kyori.adventure.text.format.TextDecoration;
|
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.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabCompleter;
|
import org.bukkit.command.TabCompleter;
|
||||||
@ -26,10 +29,15 @@ import java.util.List;
|
|||||||
public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabCompleter {
|
public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabCompleter {
|
||||||
|
|
||||||
private final List<String> tabCompletes = List.of("5", "10", "25", "50");
|
private final List<String> tabCompletes = List.of("5", "10", "25", "50");
|
||||||
|
private final String optimizeName;
|
||||||
private final int maxRadius;
|
private final int maxRadius;
|
||||||
|
private final boolean shouldRename;
|
||||||
|
|
||||||
public UnOptVillagersRadius() {
|
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
|
@Override
|
||||||
@ -81,6 +89,14 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand, TabComple
|
|||||||
|
|
||||||
if (wVillager.isOptimized()) {
|
if (wVillager.isOptimized()) {
|
||||||
wVillager.setOptimization(OptimizationType.NONE);
|
wVillager.setOptimization(OptimizationType.NONE);
|
||||||
|
|
||||||
|
if (shouldRename) {
|
||||||
|
Component vilName = villager.customName();
|
||||||
|
if (vilName != null && PlainTextComponentSerializer.plainText().serialize(vilName).equalsIgnoreCase(optimizeName)) {
|
||||||
|
villager.customName(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
successCount++;
|
successCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import me.xginko.villageroptimizer.utils.LogUtil;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
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.");
|
"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,
|
this.overwrite_name = config.getBoolean("optimization-methods.block-optimization.rename-optimized-villagers.overwrite-previous-name", false,
|
||||||
"Whether to overwrite the previous name or not.");
|
"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."));
|
"The MiniMessage formatted name to give optimized villagers."));
|
||||||
this.shouldLog = config.getBoolean("optimization-methods.block-optimization.log", false);
|
this.shouldLog = config.getBoolean("optimization-methods.block-optimization.log", false);
|
||||||
}
|
}
|
||||||
@ -189,10 +190,20 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
|||||||
if (closestOptimizedVillager == null) return;
|
if (closestOptimizedVillager == null) return;
|
||||||
|
|
||||||
closestOptimizedVillager.setOptimization(OptimizationType.NONE);
|
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) {
|
if (shouldNotifyPlayer) {
|
||||||
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
||||||
.matchLiteral("%vil_profession%")
|
.matchLiteral("%vil_profession%")
|
||||||
.replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase())
|
.replacement(villager.getProfession().toString().toLowerCase())
|
||||||
.build();
|
.build();
|
||||||
final TextReplacementConfig brokenMaterial = TextReplacementConfig.builder()
|
final TextReplacementConfig brokenMaterial = TextReplacementConfig.builder()
|
||||||
.matchLiteral("%blocktype%")
|
.matchLiteral("%blocktype%")
|
||||||
@ -206,4 +217,4 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
|||||||
if (shouldLog)
|
if (shouldLog)
|
||||||
VillagerOptimizer.getLog().info("Villager unoptimized because nearby optimization block broken at: "+closestOptimizedVillager.villager().getLocation());
|
VillagerOptimizer.getLog().info("Villager unoptimized because nearby optimization block broken at: "+closestOptimizedVillager.villager().getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,7 @@ import me.xginko.villageroptimizer.utils.CommonUtil;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.TextReplacementConfig;
|
import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
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.");
|
"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,
|
this.overwrite_name = config.getBoolean("optimization-methods.workstation-optimization.rename-optimized-villagers.overwrite-previous-name", false,
|
||||||
"Whether to overwrite the previous name or not.");
|
"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."));
|
"The MiniMessage formatted name to give optimized villagers."));
|
||||||
this.shouldLog = config.getBoolean("optimization-methods.workstation-optimization.log", false);
|
this.shouldLog = config.getBoolean("optimization-methods.workstation-optimization.log", false);
|
||||||
}
|
}
|
||||||
@ -177,10 +178,20 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
|||||||
if (closestOptimizedVillager == null) return;
|
if (closestOptimizedVillager == null) return;
|
||||||
|
|
||||||
closestOptimizedVillager.setOptimization(OptimizationType.NONE);
|
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) {
|
if (shouldNotifyPlayer) {
|
||||||
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
final TextReplacementConfig vilProfession = TextReplacementConfig.builder()
|
||||||
.matchLiteral("%vil_profession%")
|
.matchLiteral("%vil_profession%")
|
||||||
.replacement(closestOptimizedVillager.villager().getProfession().toString().toLowerCase())
|
.replacement(villager.getProfession().toString().toLowerCase())
|
||||||
.build();
|
.build();
|
||||||
final TextReplacementConfig brokenWorkstation = TextReplacementConfig.builder()
|
final TextReplacementConfig brokenWorkstation = TextReplacementConfig.builder()
|
||||||
.matchLiteral("%workstation%")
|
.matchLiteral("%workstation%")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user