more command progress

This commit is contained in:
xGinko 2023-09-10 23:36:58 +02:00
parent 0e4c801617
commit 2299ca675b
2 changed files with 55 additions and 3 deletions

View File

@ -24,6 +24,11 @@ import java.util.List;
public class OptVillagersRadius implements VillagerOptimizerCommand, TabCompleter { public class OptVillagersRadius implements VillagerOptimizerCommand, TabCompleter {
/*
* TODO: Radius limit, Cooldown, Compatibility with other types
*
* */
@Override @Override
public String label() { public String label() {
return "optimizevillagers"; return "optimizevillagers";
@ -50,9 +55,10 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
try { try {
int specifiedRadius = Integer.parseInt(args[0]) / 2; int specifiedRadius = Integer.parseInt(args[0]) / 2;
VillagerManager villagerManager = VillagerOptimizer.getVillagerManager();
int successCount = 0; int successCount = 0;
int failCount = 0; int failCount = 0;
VillagerManager villagerManager = VillagerOptimizer.getVillagerManager();
for (Entity entity : player.getNearbyEntities(specifiedRadius, specifiedRadius, specifiedRadius)) { for (Entity entity : player.getNearbyEntities(specifiedRadius, specifiedRadius, specifiedRadius)) {
if (!entity.getType().equals(EntityType.VILLAGER)) continue; if (!entity.getType().equals(EntityType.VILLAGER)) continue;
@ -66,6 +72,8 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
wVillager.setOptimization(OptimizationType.COMMAND); wVillager.setOptimization(OptimizationType.COMMAND);
wVillager.saveOptimizeTime(); wVillager.saveOptimizeTime();
successCount++; successCount++;
} else {
failCount++;
} }
} }
@ -75,6 +83,10 @@ public class OptVillagersRadius implements VillagerOptimizerCommand, TabComplete
.replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(success).build()) .replaceText(TextReplacementConfig.builder().matchLiteral("%amount%").replacement(success).build())
.replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build()) .replaceText(TextReplacementConfig.builder().matchLiteral("%radius%").replacement(radius).build())
)); ));
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())
));
} 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

@ -1,18 +1,30 @@
package me.xginko.villageroptimizer.commands.unoptimizevillagers; package me.xginko.villageroptimizer.commands.unoptimizevillagers;
import me.xginko.villageroptimizer.VillagerOptimizer; import me.xginko.villageroptimizer.VillagerOptimizer;
import me.xginko.villageroptimizer.cache.VillagerManager;
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand; import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
import me.xginko.villageroptimizer.enums.OptimizationType;
import me.xginko.villageroptimizer.enums.Permissions; import me.xginko.villageroptimizer.enums.Permissions;
import me.xginko.villageroptimizer.models.WrappedVillager;
import net.kyori.adventure.text.Component; 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.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class UnOptVillagersRadius implements VillagerOptimizerCommand { public class UnOptVillagersRadius implements VillagerOptimizerCommand {
/*
* TODO: Radius limit, Cooldown, Compatibility with other types
*
* */
@Override @Override
public String label() { public String label() {
return "unoptimizevillagers"; return "unoptimizevillagers";
@ -27,12 +39,40 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand {
return true; return true;
} }
if (args.length < 1) { if (args.length != 1) {
VillagerOptimizer.getLang(player.locale()).command_specify_radius.forEach(player::sendMessage);
return true; return true;
} }
try {
int specifiedRadius = Integer.parseInt(args[0]) / 2;
VillagerManager villagerManager = VillagerOptimizer.getVillagerManager();
int successCount = 0;
for (Entity entity : player.getNearbyEntities(specifiedRadius, specifiedRadius, specifiedRadius)) {
if (!entity.getType().equals(EntityType.VILLAGER)) continue;
Villager villager = (Villager) entity;
Villager.Profession profession = villager.getProfession();
if (profession.equals(Villager.Profession.NITWIT) || profession.equals(Villager.Profession.NONE)) continue;
WrappedVillager wVillager = villagerManager.getOrAdd(villager);
if (wVillager.isOptimized()) {
wVillager.setOptimization(OptimizationType.OFF);
successCount++;
}
}
final String successfullyUnoptimized = Integer.toString(successCount);
final String radius = Integer.toString(specifiedRadius);
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())
));
} catch (NumberFormatException e) {
VillagerOptimizer.getLang(player.locale()).command_radius_invalid.forEach(player::sendMessage);
}
} else { } else {
sender.sendMessage(VillagerOptimizer.getLang(sender).no_permission); sender.sendMessage(VillagerOptimizer.getLang(sender).no_permission);
} }