cleanup some classes
This commit is contained in:
parent
42a4ac9455
commit
cb9e5e9553
3
pom.xml
3
pom.xml
@ -66,8 +66,9 @@
|
||||
<filter>
|
||||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>module-info.class</exclude>
|
||||
<exclude>META-INF/MANIFEST.MF</exclude>
|
||||
<exclude>META-INF/LICENSE</exclude>
|
||||
<exclude>META-INF/LICENSE.txt</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
</filters>
|
||||
|
@ -5,11 +5,10 @@ import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.config.LanguageCache;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
@ -29,8 +28,6 @@ import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
|
||||
public final class VillagerOptimizer extends JavaPlugin {
|
||||
public static final TextColor COLOR = TextColor.color(102,255,230);
|
||||
public static final Style STYLE = Style.style(COLOR, TextDecoration.BOLD);
|
||||
|
||||
private static VillagerOptimizer instance;
|
||||
private static VillagerCache villagerCache;
|
||||
@ -39,49 +36,49 @@ public final class VillagerOptimizer extends JavaPlugin {
|
||||
private static Config config;
|
||||
private static BukkitAudiences audiences;
|
||||
private static ComponentLogger logger;
|
||||
private Metrics metrics;
|
||||
private static Metrics bStats;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
foliaLib = new FoliaLib(this);
|
||||
audiences = BukkitAudiences.create(this);
|
||||
logger = ComponentLogger.logger(this.getName());
|
||||
metrics = new Metrics(this, 19954);
|
||||
logger = ComponentLogger.logger(getLogger().getName());
|
||||
bStats = new Metrics(this, 19954);
|
||||
|
||||
logger.info(Component.text("╭────────────────────────────────────────────────────────────╮").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("│ _ __ _ __ __ │").style(STYLE));
|
||||
logger.info(Component.text("│ | | / /(_)/ // /___ _ ___ _ ___ ____ │").style(STYLE));
|
||||
logger.info(Component.text("│ | |/ // // // // _ `// _ `// -_)/ __/ │").style(STYLE));
|
||||
logger.info(Component.text("│ |___//_//_//_/ \\_,_/ \\_, / \\__//_/ │").style(STYLE));
|
||||
logger.info(Component.text("│ ____ __ _ /___/_ │").style(STYLE));
|
||||
logger.info(Component.text("│ / __ \\ ___ / /_ (_)__ _ (_)___ ___ ____ │").style(STYLE));
|
||||
logger.info(Component.text("│ / /_/ // _ \\/ __// // ' \\ / //_ // -_)/ __/ │").style(STYLE));
|
||||
logger.info(Component.text("│ \\____// .__/\\__//_//_/_/_//_/ /__/\\__//_/ │").style(STYLE));
|
||||
logger.info(Component.text("│ /_/ by xGinko │").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("╭────────────────────────────────────────────────────────────╮").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ _ __ _ __ __ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ | | / /(_)/ // /___ _ ___ _ ___ ____ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ | |/ // // // // _ `// _ `// -_)/ __/ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ |___//_//_//_/ \\_,_/ \\_, / \\__//_/ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ ____ __ _ /___/_ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ / __ \\ ___ / /_ (_)__ _ (_)___ ___ ____ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ / /_/ // _ \\/ __// // ' \\ / //_ // -_)/ __/ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ \\____// .__/\\__//_//_/_/_//_/ /__/\\__//_/ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ /_/ by xGinko │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ ")
|
||||
.style(STYLE).append(Component.text("https://github.com/xGinko/VillagerOptimizer")
|
||||
.color(NamedTextColor.GRAY)).append(Component.text(" │").style(STYLE)));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
.style(GenericUtil.STYLE).append(Component.text("https://github.com/xGinko/VillagerOptimizer")
|
||||
.color(NamedTextColor.GRAY)).append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ ")
|
||||
.style(STYLE).append(Component.text(" ➤ Loading Translations...").style(STYLE))
|
||||
.append(Component.text(" │").style(STYLE)));
|
||||
.style(GenericUtil.STYLE).append(Component.text(" ➤ Loading Translations...").style(GenericUtil.STYLE))
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
reloadLang(true);
|
||||
logger.info(Component.text("│ ")
|
||||
.style(STYLE).append(Component.text(" ➤ Loading Config...").style(STYLE))
|
||||
.append(Component.text(" │").style(STYLE)));
|
||||
.style(GenericUtil.STYLE).append(Component.text(" ➤ Loading Config...").style(GenericUtil.STYLE))
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
reloadConfiguration();
|
||||
logger.info(Component.text("│ ")
|
||||
.style(STYLE).append(Component.text(" ✓ Done.").color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
||||
.append(Component.text(" │").style(STYLE)));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("│ │").style(STYLE));
|
||||
logger.info(Component.text("╰────────────────────────────────────────────────────────────╯").style(STYLE));
|
||||
.style(GenericUtil.STYLE).append(Component.text(" ✓ Done.").color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("│ │").style(GenericUtil.STYLE));
|
||||
logger.info(Component.text("╰────────────────────────────────────────────────────────────╯").style(GenericUtil.STYLE));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -100,9 +97,9 @@ public final class VillagerOptimizer extends JavaPlugin {
|
||||
audiences.close();
|
||||
audiences = null;
|
||||
}
|
||||
if (metrics != null) {
|
||||
metrics.shutdown();
|
||||
metrics = null;
|
||||
if (bStats != null) {
|
||||
bStats.shutdown();
|
||||
bStats = null;
|
||||
}
|
||||
config = null;
|
||||
languageCacheMap = null;
|
||||
@ -164,9 +161,9 @@ public final class VillagerOptimizer extends JavaPlugin {
|
||||
for (String fileName : getDefaultLanguageFiles()) {
|
||||
final String localeString = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.lastIndexOf('.'));
|
||||
if (startup) logger.info(
|
||||
Component.text("│ ").style(STYLE)
|
||||
Component.text("│ ").style(GenericUtil.STYLE)
|
||||
.append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
||||
.append(Component.text(" │").style(STYLE)));
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
else logger.info(String.format("Found language file for %s", localeString));
|
||||
languageCacheMap.put(localeString, new LanguageCache(localeString));
|
||||
}
|
||||
@ -177,9 +174,9 @@ public final class VillagerOptimizer extends JavaPlugin {
|
||||
String localeString = langMatcher.group(1).toLowerCase();
|
||||
if (!languageCacheMap.containsKey(localeString)) { // make sure it wasn't a default file that we already loaded
|
||||
if (startup) logger.info(
|
||||
Component.text("│ ").style(STYLE)
|
||||
Component.text("│ ").style(GenericUtil.STYLE)
|
||||
.append(Component.text(" "+localeString).color(NamedTextColor.WHITE).decorate(TextDecoration.BOLD))
|
||||
.append(Component.text(" │").style(STYLE)));
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)));
|
||||
else logger.info(String.format("Found language file for %s", localeString));
|
||||
languageCacheMap.put(localeString, new LanguageCache(localeString));
|
||||
}
|
||||
@ -187,9 +184,9 @@ public final class VillagerOptimizer extends JavaPlugin {
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (startup) logger.error(
|
||||
Component.text("│ ").style(STYLE)
|
||||
Component.text("│ ").style(GenericUtil.STYLE)
|
||||
.append(Component.text("LANG ERROR").color(NamedTextColor.RED).decorate(TextDecoration.BOLD))
|
||||
.append(Component.text(" │").style(STYLE)), e);
|
||||
.append(Component.text(" │").style(GenericUtil.STYLE)), e);
|
||||
else logger.error("Error loading language files!", e);
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,7 @@ 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.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.events.VillagerOptimizeEvent;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@ -50,7 +49,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
||||
if (!sender.hasPermission(Commands.OPTIMIZE_RADIUS.get())) {
|
||||
if (!sender.hasPermission(Permissions.Commands.OPTIMIZE_RADIUS.get())) {
|
||||
KyoriUtil.sendMessage(sender, VillagerOptimizer.getLang(sender).no_permission);
|
||||
return true;
|
||||
}
|
||||
@ -93,7 +92,7 @@ public class OptVillagersRadius implements VillagerOptimizerCommand {
|
||||
VillagerCache villagerCache = VillagerOptimizer.getCache();
|
||||
int successCount = 0;
|
||||
int failCount = 0;
|
||||
final boolean player_has_cooldown_bypass = player.hasPermission(Bypass.COMMAND_COOLDOWN.get());
|
||||
final boolean player_has_cooldown_bypass = player.hasPermission(Permissions.Bypass.COMMAND_COOLDOWN.get());
|
||||
|
||||
for (Entity entity : player.getNearbyEntities(safeRadius, safeRadius, safeRadius)) {
|
||||
if (!entity.getType().equals(EntityType.VILLAGER)) continue;
|
||||
|
@ -5,7 +5,7 @@ import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
@ -44,7 +44,7 @@ public class UnOptVillagersRadius implements VillagerOptimizerCommand {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
||||
if (!sender.hasPermission(Commands.UNOPTIMIZE_RADIUS.get())) {
|
||||
if (!sender.hasPermission(Permissions.Commands.UNOPTIMIZE_RADIUS.get())) {
|
||||
KyoriUtil.sendMessage(sender, VillagerOptimizer.getLang(sender).no_permission);
|
||||
return true;
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
package me.xginko.villageroptimizer.commands.villageroptimizer;
|
||||
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.commands.SubCommand;
|
||||
import me.xginko.villageroptimizer.commands.VillagerOptimizerCommand;
|
||||
import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.DisableSubCmd;
|
||||
import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.ReloadSubCmd;
|
||||
import me.xginko.villageroptimizer.commands.villageroptimizer.subcommands.VersionSubCmd;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
@ -57,19 +57,19 @@ public class VillagerOptimizerCmd implements VillagerOptimizerCommand {
|
||||
}
|
||||
|
||||
private void sendCommandOverview(CommandSender sender) {
|
||||
if (!sender.hasPermission(Commands.RELOAD.get()) && !sender.hasPermission(Commands.VERSION.get())) return;
|
||||
if (!sender.hasPermission(Permissions.Commands.RELOAD.get()) && !sender.hasPermission(Permissions.Commands.VERSION.get())) return;
|
||||
KyoriUtil.sendMessage(sender, Component.text("-----------------------------------------------------").color(NamedTextColor.GRAY));
|
||||
KyoriUtil.sendMessage(sender, Component.text("VillagerOptimizer Commands").color(VillagerOptimizer.COLOR));
|
||||
KyoriUtil.sendMessage(sender, Component.text("VillagerOptimizer Commands").color(GenericUtil.COLOR));
|
||||
KyoriUtil.sendMessage(sender, Component.text("-----------------------------------------------------").color(NamedTextColor.GRAY));
|
||||
subCommands.forEach(subCommand -> KyoriUtil.sendMessage(sender,
|
||||
subCommand.getSyntax().append(Component.text(" - ").color(NamedTextColor.DARK_GRAY)).append(subCommand.getDescription())));
|
||||
KyoriUtil.sendMessage(sender,
|
||||
Component.text("/optimizevillagers <blockradius>").color(VillagerOptimizer.COLOR)
|
||||
Component.text("/optimizevillagers <blockradius>").color(GenericUtil.COLOR)
|
||||
.append(Component.text(" - ").color(NamedTextColor.DARK_GRAY))
|
||||
.append(Component.text("Optimize villagers in a radius").color(NamedTextColor.GRAY))
|
||||
);
|
||||
KyoriUtil.sendMessage(sender,
|
||||
Component.text("/unoptmizevillagers <blockradius>").color(VillagerOptimizer.COLOR)
|
||||
Component.text("/unoptmizevillagers <blockradius>").color(GenericUtil.COLOR)
|
||||
.append(Component.text(" - ").color(NamedTextColor.DARK_GRAY))
|
||||
.append(Component.text("Unoptimize villagers in a radius").color(NamedTextColor.GRAY))
|
||||
);
|
||||
|
@ -2,8 +2,9 @@ package me.xginko.villageroptimizer.commands.villageroptimizer.subcommands;
|
||||
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.commands.SubCommand;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
@ -24,12 +25,12 @@ public class DisableSubCmd extends SubCommand {
|
||||
|
||||
@Override
|
||||
public TextComponent getSyntax() {
|
||||
return Component.text("/villageroptimizer disable").color(VillagerOptimizer.COLOR);
|
||||
return Component.text("/villageroptimizer disable").color(GenericUtil.COLOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(CommandSender sender, String[] args) {
|
||||
if (!sender.hasPermission(Commands.DISABLE.get())) {
|
||||
if (!sender.hasPermission(Permissions.Commands.DISABLE.get())) {
|
||||
KyoriUtil.sendMessage(sender, VillagerOptimizer.getLang(sender).no_permission);
|
||||
return;
|
||||
}
|
||||
|
@ -2,7 +2,8 @@ package me.xginko.villageroptimizer.commands.villageroptimizer.subcommands;
|
||||
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.commands.SubCommand;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
@ -23,12 +24,12 @@ public class ReloadSubCmd extends SubCommand {
|
||||
|
||||
@Override
|
||||
public TextComponent getSyntax() {
|
||||
return Component.text("/villageroptimizer reload").color(VillagerOptimizer.COLOR);
|
||||
return Component.text("/villageroptimizer reload").color(GenericUtil.COLOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void perform(CommandSender sender, String[] args) {
|
||||
if (!sender.hasPermission(Commands.RELOAD.get())) {
|
||||
if (!sender.hasPermission(Permissions.Commands.RELOAD.get())) {
|
||||
KyoriUtil.sendMessage(sender, VillagerOptimizer.getLang(sender).no_permission);
|
||||
return;
|
||||
}
|
||||
|
@ -3,7 +3,8 @@ package me.xginko.villageroptimizer.commands.villageroptimizer.subcommands;
|
||||
import io.papermc.paper.plugin.configuration.PluginMeta;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.commands.SubCommand;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Commands;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
@ -26,13 +27,13 @@ public class VersionSubCmd extends SubCommand {
|
||||
|
||||
@Override
|
||||
public TextComponent getSyntax() {
|
||||
return Component.text("/villageroptimizer version").color(VillagerOptimizer.COLOR);
|
||||
return Component.text("/villageroptimizer version").color(GenericUtil.COLOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings({"deprecation", "UnstableApiUsage"})
|
||||
public void perform(CommandSender sender, String[] args) {
|
||||
if (!sender.hasPermission(Commands.VERSION.get())) {
|
||||
if (!sender.hasPermission(Permissions.Commands.VERSION.get())) {
|
||||
KyoriUtil.sendMessage(sender, VillagerOptimizer.getLang(sender).no_permission);
|
||||
return;
|
||||
}
|
||||
@ -56,7 +57,7 @@ public class VersionSubCmd extends SubCommand {
|
||||
KyoriUtil.sendMessage(sender, Component.newline()
|
||||
.append(
|
||||
Component.text(name + " " + version)
|
||||
.style(VillagerOptimizer.STYLE)
|
||||
.style(GenericUtil.STYLE)
|
||||
.clickEvent(ClickEvent.openUrl(website))
|
||||
)
|
||||
.append(Component.text(" by ").color(NamedTextColor.GRAY))
|
||||
|
@ -2,6 +2,7 @@ package me.xginko.villageroptimizer.config;
|
||||
|
||||
import io.github.thatsmusic99.configurationmaster.api.ConfigFile;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -91,11 +92,11 @@ public class LanguageCache {
|
||||
|
||||
public @NotNull Component getTranslation(@NotNull String path, @NotNull String defaultTranslation) {
|
||||
this.lang.addDefault(path, defaultTranslation);
|
||||
return MiniMessage.miniMessage().deserialize(this.lang.getString(path, defaultTranslation));
|
||||
return MiniMessage.miniMessage().deserialize(KyoriUtil.translateChatColor(this.lang.getString(path, defaultTranslation)));
|
||||
}
|
||||
|
||||
public @NotNull List<Component> getListTranslation(@NotNull String path, @NotNull String... defaultTranslation) {
|
||||
this.lang.addDefault(path, Arrays.asList(defaultTranslation));
|
||||
return this.lang.getStringList(path).stream().map(MiniMessage.miniMessage()::deserialize).collect(Collectors.toList());
|
||||
return this.lang.getStringList(path).stream().map(KyoriUtil::translateChatColor).map(MiniMessage.miniMessage()::deserialize).collect(Collectors.toList());
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class Keyring {
|
||||
public final class Keyring {
|
||||
|
||||
public enum Spaces implements Namespaced {
|
||||
|
||||
@ -52,8 +52,7 @@ public class Keyring {
|
||||
OPTIMIZATION_TYPE("optimization-type"),
|
||||
LAST_OPTIMIZE("last-optimize"),
|
||||
LAST_LEVELUP("last-levelup"),
|
||||
LAST_RESTOCK("last-restock"),
|
||||
LAST_OPTIMIZE_NAME("last-optimize-name");
|
||||
LAST_RESTOCK("last-restock");
|
||||
|
||||
private final @NotNull NamespacedKey key;
|
||||
|
||||
|
@ -0,0 +1,74 @@
|
||||
package me.xginko.villageroptimizer.enums;
|
||||
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
|
||||
public final class Permissions {
|
||||
|
||||
public enum Bypass {
|
||||
TRADE_PREVENTION(new Permission("villageroptimizer.bypass.tradeprevention",
|
||||
"Permission to bypass unoptimized trade prevention", PermissionDefault.FALSE)),
|
||||
RESTOCK_COOLDOWN(new Permission("villageroptimizer.bypass.restockcooldown",
|
||||
"Permission to bypass restock cooldown on optimized villagers", PermissionDefault.FALSE)),
|
||||
NAMETAG_COOLDOWN(new Permission("villageroptimizer.bypass.nametagcooldown",
|
||||
"Permission to bypass Nametag optimization cooldown", PermissionDefault.FALSE)),
|
||||
BLOCK_COOLDOWN(new Permission("villageroptimizer.bypass.blockcooldown",
|
||||
"Permission to bypass Block optimization cooldown", PermissionDefault.FALSE)),
|
||||
WORKSTATION_COOLDOWN(new Permission("villageroptimizer.bypass.workstationcooldown",
|
||||
"Permission to bypass Workstation optimization cooldown", PermissionDefault.FALSE)),
|
||||
COMMAND_COOLDOWN(new Permission("villageroptimizer.bypass.commandcooldown",
|
||||
"Permission to bypass command optimization cooldown", PermissionDefault.FALSE));
|
||||
|
||||
private final Permission permission;
|
||||
|
||||
Bypass(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
||||
|
||||
public enum Commands {
|
||||
VERSION(new Permission("villageroptimizer.cmd.version",
|
||||
"Permission get the plugin version", PermissionDefault.OP)),
|
||||
RELOAD(new Permission("villageroptimizer.cmd.reload",
|
||||
"Permission to reload the plugin config", PermissionDefault.OP)),
|
||||
DISABLE(new Permission("villageroptimizer.cmd.disable",
|
||||
"Permission to disable the plugin", PermissionDefault.OP)),
|
||||
OPTIMIZE_RADIUS(new Permission("villageroptimizer.cmd.optimize",
|
||||
"Permission to optimize villagers in a radius", PermissionDefault.TRUE)),
|
||||
UNOPTIMIZE_RADIUS(new Permission("villageroptimizer.cmd.unoptimize",
|
||||
"Permission to unoptimize villagers in a radius", PermissionDefault.TRUE));
|
||||
|
||||
private final Permission permission;
|
||||
|
||||
Commands(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
||||
|
||||
public enum Optimize {
|
||||
NAMETAG(new Permission("villageroptimizer.optimize.nametag",
|
||||
"Permission to optimize / unoptimize using Nametags", PermissionDefault.TRUE)),
|
||||
BLOCK(new Permission("villageroptimizer.optimize.block",
|
||||
"Permission to optimize / unoptimize using Blocks", PermissionDefault.TRUE)),
|
||||
WORKSTATION(new Permission("villageroptimizer.optimize.workstation",
|
||||
"Permission to optimize / unoptimize using Workstations", PermissionDefault.TRUE));
|
||||
|
||||
private final Permission permission;
|
||||
|
||||
Optimize(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
package me.xginko.villageroptimizer.enums.permissions;
|
||||
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
|
||||
public enum Bypass {
|
||||
TRADE_PREVENTION(new Permission("villageroptimizer.bypass.tradeprevention",
|
||||
"Permission to bypass unoptimized trade prevention", PermissionDefault.FALSE)),
|
||||
RESTOCK_COOLDOWN(new Permission("villageroptimizer.bypass.restockcooldown",
|
||||
"Permission to bypass restock cooldown on optimized villagers", PermissionDefault.FALSE)),
|
||||
NAMETAG_COOLDOWN(new Permission("villageroptimizer.bypass.nametagcooldown",
|
||||
"Permission to bypass Nametag optimization cooldown", PermissionDefault.FALSE)),
|
||||
BLOCK_COOLDOWN(new Permission("villageroptimizer.bypass.blockcooldown",
|
||||
"Permission to bypass Block optimization cooldown", PermissionDefault.FALSE)),
|
||||
WORKSTATION_COOLDOWN(new Permission("villageroptimizer.bypass.workstationcooldown",
|
||||
"Permission to bypass Workstation optimization cooldown", PermissionDefault.FALSE)),
|
||||
COMMAND_COOLDOWN(new Permission("villageroptimizer.bypass.commandcooldown",
|
||||
"Permission to bypass command optimization cooldown", PermissionDefault.FALSE));
|
||||
|
||||
private final Permission permission;
|
||||
Bypass(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
package me.xginko.villageroptimizer.enums.permissions;
|
||||
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
|
||||
public enum Commands {
|
||||
VERSION(new Permission("villageroptimizer.cmd.version",
|
||||
"Permission get the plugin version", PermissionDefault.OP)),
|
||||
RELOAD(new Permission("villageroptimizer.cmd.reload",
|
||||
"Permission to reload the plugin config", PermissionDefault.OP)),
|
||||
DISABLE(new Permission("villageroptimizer.cmd.disable",
|
||||
"Permission to disable the plugin", PermissionDefault.OP)),
|
||||
OPTIMIZE_RADIUS(new Permission("villageroptimizer.cmd.optimize",
|
||||
"Permission to optimize villagers in a radius", PermissionDefault.TRUE)),
|
||||
UNOPTIMIZE_RADIUS(new Permission("villageroptimizer.cmd.unoptimize",
|
||||
"Permission to unoptimize villagers in a radius", PermissionDefault.TRUE));
|
||||
|
||||
private final Permission permission;
|
||||
Commands(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
package me.xginko.villageroptimizer.enums.permissions;
|
||||
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
|
||||
public enum Optimize {
|
||||
NAMETAG(new Permission("villageroptimizer.optimize.nametag",
|
||||
"Permission to optimize / unoptimize using Nametags", PermissionDefault.TRUE)),
|
||||
BLOCK(new Permission("villageroptimizer.optimize.block",
|
||||
"Permission to optimize / unoptimize using Blocks", PermissionDefault.TRUE)),
|
||||
WORKSTATION(new Permission("villageroptimizer.optimize.workstation",
|
||||
"Permission to optimize / unoptimize using Workstations", PermissionDefault.TRUE));
|
||||
|
||||
private final Permission permission;
|
||||
Optimize(Permission permission) {
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
public Permission get() {
|
||||
return permission;
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ import com.tcoded.folialib.wrapper.task.WrappedTask;
|
||||
import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Server;
|
||||
@ -92,7 +92,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener {
|
||||
this.periodic_chunk_check = scheduler.runTimer(() -> {
|
||||
for (World world : server.getWorlds()) {
|
||||
for (Chunk chunk : world.getLoadedChunks()) {
|
||||
if (!skip_unloaded_entity_chunks || CommonUtil.isEntitiesLoaded(chunk)) {
|
||||
if (!skip_unloaded_entity_chunks || GenericUtil.isEntitiesLoaded(chunk)) {
|
||||
this.manageVillagerCount(chunk);
|
||||
}
|
||||
}
|
||||
@ -157,7 +157,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener {
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(
|
||||
"Removed unoptimized villager with profession '" + villager.getProfession().name() + "' at " +
|
||||
CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(villager.getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -180,7 +180,7 @@ public class VillagerChunkLimit implements VillagerOptimizerModule, Listener {
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text("Removed optimized villager with profession '" +
|
||||
villager.getProfession().name() + "' at " +
|
||||
CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(villager.getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
@ -87,7 +87,7 @@ public class EnableLeashingVillagers implements VillagerOptimizerModule, Listene
|
||||
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() + " leashed a villager at " +
|
||||
CommonUtil.formatLocation(villager.getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(villager.getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -88,7 +88,7 @@ public class LevelOptimizedProfession implements VillagerOptimizerModule, Listen
|
||||
Player player = (Player) event.getPlayer();
|
||||
final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
|
||||
.matchLiteral("%time%")
|
||||
.replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis))))
|
||||
.replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getLevelCooldownMillis(cooldown_millis))))
|
||||
.build();
|
||||
VillagerOptimizer.getLang(player.locale()).villager_leveling_up
|
||||
.forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft)));
|
||||
|
@ -3,7 +3,7 @@ package me.xginko.villageroptimizer.modules.gameplay;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -52,7 +52,7 @@ public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Liste
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
private void onTradeOpen(TradeSelectEvent event) {
|
||||
if (!event.getInventory().getType().equals(InventoryType.MERCHANT)) return;
|
||||
if (event.getWhoClicked().hasPermission(Bypass.TRADE_PREVENTION.get())) return;
|
||||
if (event.getWhoClicked().hasPermission(Permissions.Bypass.TRADE_PREVENTION.get())) return;
|
||||
if (!(event.getInventory().getHolder() instanceof Villager)) return;
|
||||
if (villagerCache.getOrAdd((Villager) event.getInventory().getHolder()).isOptimized()) return;
|
||||
|
||||
@ -68,7 +68,7 @@ public class PreventUnoptimizedTrading implements VillagerOptimizerModule, Liste
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
private void onInventoryClick(InventoryClickEvent event) {
|
||||
if (!event.getInventory().getType().equals(InventoryType.MERCHANT)) return;
|
||||
if (event.getWhoClicked().hasPermission(Bypass.TRADE_PREVENTION.get())) return;
|
||||
if (event.getWhoClicked().hasPermission(Permissions.Bypass.TRADE_PREVENTION.get())) return;
|
||||
if (!(event.getInventory().getHolder() instanceof Villager)) return;
|
||||
if (villagerCache.getOrAdd((Villager) event.getInventory().getHolder()).isOptimized()) return;
|
||||
|
||||
|
@ -4,9 +4,9 @@ import me.xginko.villageroptimizer.VillagerCache;
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
@ -65,7 +65,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener
|
||||
if (!wVillager.isOptimized()) return;
|
||||
|
||||
final Player player = event.getPlayer();
|
||||
final boolean player_bypassing = player.hasPermission(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();
|
||||
@ -74,7 +74,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener
|
||||
if (notify_player && !player_bypassing) {
|
||||
final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
|
||||
.matchLiteral("%time%")
|
||||
.replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis))))
|
||||
.replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getRestockCooldownMillis(restock_delay_millis))))
|
||||
.build();
|
||||
VillagerOptimizer.getLang(player.locale()).trades_restocked
|
||||
.forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft)));
|
||||
@ -82,7 +82,7 @@ public class RestockOptimizedTrades implements VillagerOptimizerModule, Listener
|
||||
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text("Restocked optimized villager at " +
|
||||
CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(wVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,11 @@ import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Optimize;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.events.VillagerOptimizeEvent;
|
||||
import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
@ -97,7 +96,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
final Block placed = event.getBlock();
|
||||
if (!blocks_that_disable.contains(placed.getType())) return;
|
||||
final Player player = event.getPlayer();
|
||||
if (!player.hasPermission(Optimize.BLOCK.get())) return;
|
||||
if (!player.hasPermission(Permissions.Optimize.BLOCK.get())) return;
|
||||
if (only_while_sneaking && !player.isSneaking()) return;
|
||||
|
||||
final Location blockLoc = placed.getLocation().toCenterLocation();
|
||||
@ -119,7 +118,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
|
||||
if (closestOptimizableVillager == null) return;
|
||||
|
||||
if (closestOptimizableVillager.canOptimize(cooldown_millis) || player.hasPermission(Bypass.BLOCK_COOLDOWN.get())) {
|
||||
if (closestOptimizableVillager.canOptimize(cooldown_millis) || player.hasPermission(Permissions.Bypass.BLOCK_COOLDOWN.get())) {
|
||||
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(
|
||||
closestOptimizableVillager,
|
||||
OptimizationType.BLOCK,
|
||||
@ -146,14 +145,14 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() + " optimized villager by block at " +
|
||||
CommonUtil.formatLocation(closestOptimizableVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(closestOptimizableVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
} else {
|
||||
closestOptimizableVillager.sayNo();
|
||||
if (notify_player) {
|
||||
final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
|
||||
.matchLiteral("%time%")
|
||||
.replacement(CommonUtil.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis))))
|
||||
.replacement(GenericUtil.formatDuration(Duration.ofMillis(closestOptimizableVillager.getOptimizeCooldownMillis(cooldown_millis))))
|
||||
.build();
|
||||
VillagerOptimizer.getLang(player.locale()).block_on_optimize_cooldown
|
||||
.forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft)));
|
||||
@ -166,7 +165,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
final Block broken = event.getBlock();
|
||||
if (!blocks_that_disable.contains(broken.getType())) return;
|
||||
final Player player = event.getPlayer();
|
||||
if (!player.hasPermission(Optimize.BLOCK.get())) return;
|
||||
if (!player.hasPermission(Permissions.Optimize.BLOCK.get())) return;
|
||||
if (only_while_sneaking && !player.isSneaking()) return;
|
||||
|
||||
final Location blockLoc = broken.getLocation().toCenterLocation();
|
||||
@ -211,7 +210,7 @@ public class OptimizeByBlock implements VillagerOptimizerModule, Listener {
|
||||
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() + " unoptimized villager by block at " +
|
||||
CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
}
|
||||
}
|
@ -5,12 +5,11 @@ import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Optimize;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.events.VillagerOptimizeEvent;
|
||||
import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
@ -81,7 +80,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
|
||||
private void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||
if (!event.getRightClicked().getType().equals(EntityType.VILLAGER)) return;
|
||||
final Player player = event.getPlayer();
|
||||
if (!player.hasPermission(Optimize.NAMETAG.get())) return;
|
||||
if (!player.hasPermission(Permissions.Optimize.NAMETAG.get())) return;
|
||||
|
||||
final ItemStack usedItem = player.getInventory().getItem(event.getHand());
|
||||
if (usedItem != null && !usedItem.getType().equals(Material.NAME_TAG)) return;
|
||||
@ -92,12 +91,12 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
|
||||
// Get component name first, so we can manually name the villager when canceling the event to avoid item consumption.
|
||||
final Component newVillagerName = meta.displayName();
|
||||
assert newVillagerName != null; // Legitimate since we checked for hasDisplayName()
|
||||
final String nameTagPlainText = CommonUtil.plainTextSerializer.serialize(newVillagerName);
|
||||
final String nameTagPlainText = GenericUtil.plainTextSerializer.serialize(newVillagerName);
|
||||
final Villager villager = (Villager) event.getRightClicked();
|
||||
final WrappedVillager wVillager = villagerCache.getOrAdd(villager);
|
||||
|
||||
if (nametags.contains(nameTagPlainText.toLowerCase())) {
|
||||
if (wVillager.canOptimize(cooldown) || player.hasPermission(Bypass.NAMETAG_COOLDOWN.get())) {
|
||||
if (wVillager.canOptimize(cooldown) || player.hasPermission(Permissions.Bypass.NAMETAG_COOLDOWN.get())) {
|
||||
VillagerOptimizeEvent optimizeEvent = new VillagerOptimizeEvent(
|
||||
wVillager,
|
||||
OptimizationType.NAMETAG,
|
||||
@ -123,7 +122,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() +
|
||||
" optimized villager by nametag '" + nameTagPlainText + "' at " +
|
||||
CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(wVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
@ -131,7 +130,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
|
||||
if (notify_player) {
|
||||
final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
|
||||
.matchLiteral("%time%")
|
||||
.replacement(CommonUtil.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown))))
|
||||
.replacement(GenericUtil.formatDuration(Duration.ofMillis(wVillager.getOptimizeCooldownMillis(cooldown))))
|
||||
.build();
|
||||
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown
|
||||
.forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft)));
|
||||
@ -157,7 +156,7 @@ public class OptimizeByNametag implements VillagerOptimizerModule, Listener {
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() +
|
||||
" unoptimized villager by nametag '" + nameTagPlainText + "' at " +
|
||||
CommonUtil.formatLocation(wVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(wVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,12 +9,11 @@ import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import me.xginko.villageroptimizer.WrappedVillager;
|
||||
import me.xginko.villageroptimizer.config.Config;
|
||||
import me.xginko.villageroptimizer.enums.OptimizationType;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Bypass;
|
||||
import me.xginko.villageroptimizer.enums.permissions.Optimize;
|
||||
import me.xginko.villageroptimizer.enums.Permissions;
|
||||
import me.xginko.villageroptimizer.events.VillagerOptimizeEvent;
|
||||
import me.xginko.villageroptimizer.events.VillagerUnoptimizeEvent;
|
||||
import me.xginko.villageroptimizer.modules.VillagerOptimizerModule;
|
||||
import me.xginko.villageroptimizer.utils.CommonUtil;
|
||||
import me.xginko.villageroptimizer.utils.GenericUtil;
|
||||
import me.xginko.villageroptimizer.utils.KyoriUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
@ -111,10 +110,10 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
private void onBlockPlace(BlockPlaceEvent event) {
|
||||
final Block placed = event.getBlock();
|
||||
final Villager.Profession workstationProfession = CommonUtil.getWorkstationProfession(placed.getType());
|
||||
final Villager.Profession workstationProfession = GenericUtil.getWorkstationProfession(placed.getType());
|
||||
if (workstationProfession.equals(Villager.Profession.NONE)) return;
|
||||
final Player player = event.getPlayer();
|
||||
if (!player.hasPermission(Optimize.WORKSTATION.get())) return;
|
||||
if (!player.hasPermission(Permissions.Optimize.WORKSTATION.get())) return;
|
||||
if (only_while_sneaking && !player.isSneaking()) return;
|
||||
|
||||
final Location workstationLoc = placed.getLocation().toCenterLocation();
|
||||
@ -141,12 +140,12 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
WrappedVillager finalToOptimize = toOptimize;
|
||||
|
||||
pending_optimizations.put(placed.getLocation(), scheduler.runAtLocationLater(workstationLoc, () -> {
|
||||
if (!finalToOptimize.canOptimize(cooldown_millis) && !player.hasPermission(Bypass.WORKSTATION_COOLDOWN.get())) {
|
||||
if (!finalToOptimize.canOptimize(cooldown_millis) && !player.hasPermission(Permissions.Bypass.WORKSTATION_COOLDOWN.get())) {
|
||||
finalToOptimize.sayNo();
|
||||
if (notify_player) {
|
||||
final TextReplacementConfig timeLeft = TextReplacementConfig.builder()
|
||||
.matchLiteral("%time%")
|
||||
.replacement(CommonUtil.formatDuration(Duration.ofMillis(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis))))
|
||||
.replacement(GenericUtil.formatDuration(Duration.ofMillis(finalToOptimize.getOptimizeCooldownMillis(cooldown_millis))))
|
||||
.build();
|
||||
VillagerOptimizer.getLang(player.locale()).nametag_on_optimize_cooldown
|
||||
.forEach(line -> KyoriUtil.sendMessage(player, line.replaceText(timeLeft)));
|
||||
@ -182,7 +181,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() +
|
||||
" optimized villager by workstation (" + placed.getType().toString().toLowerCase() + ") at " +
|
||||
CommonUtil.formatLocation(finalToOptimize.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(finalToOptimize.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
}, toOptimize.canLooseProfession() ? resettable_delay_millis : delay_millis, TimeUnit.MILLISECONDS));
|
||||
}
|
||||
@ -194,10 +193,10 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
WrappedTask pendingOpt = pending_optimizations.getIfPresent(broken.getLocation());
|
||||
if (pendingOpt != null) pendingOpt.cancel();
|
||||
|
||||
final Villager.Profession workstationProfession = CommonUtil.getWorkstationProfession(broken.getType());
|
||||
final Villager.Profession workstationProfession = GenericUtil.getWorkstationProfession(broken.getType());
|
||||
if (workstationProfession.equals(Villager.Profession.NONE)) return;
|
||||
final Player player = event.getPlayer();
|
||||
if (!player.hasPermission(Optimize.WORKSTATION.get())) return;
|
||||
if (!player.hasPermission(Permissions.Optimize.WORKSTATION.get())) return;
|
||||
if (only_while_sneaking && !player.isSneaking()) return;
|
||||
|
||||
final Location workstationLoc = broken.getLocation();
|
||||
@ -247,7 +246,7 @@ public class OptimizeByWorkstation implements VillagerOptimizerModule, Listener
|
||||
if (log_enabled) {
|
||||
VillagerOptimizer.getLog().info(Component.text(player.getName() +
|
||||
" unoptimized villager by workstation (" + broken.getType().toString().toLowerCase() + ") at " +
|
||||
CommonUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(VillagerOptimizer.COLOR));
|
||||
GenericUtil.formatLocation(closestOptimizedVillager.villager().getLocation())).color(GenericUtil.COLOR));
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
package me.xginko.villageroptimizer.utils;
|
||||
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.kyori.adventure.text.format.TextColor;
|
||||
import net.kyori.adventure.text.format.TextDecoration;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Location;
|
||||
@ -9,7 +12,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
public class CommonUtil {
|
||||
public class GenericUtil {
|
||||
|
||||
public static final TextColor COLOR = TextColor.color(102,255,230);
|
||||
public static final Style STYLE = Style.style(COLOR, TextDecoration.BOLD);
|
||||
public static final PlainTextComponentSerializer plainTextSerializer = PlainTextComponentSerializer.plainText();
|
||||
|
||||
public static @NotNull String formatDuration(Duration duration) {
|
@ -2,8 +2,11 @@ package me.xginko.villageroptimizer.utils;
|
||||
|
||||
import me.xginko.villageroptimizer.VillagerOptimizer;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class KyoriUtil {
|
||||
|
||||
public static void sendMessage(CommandSender sender, Component message) {
|
||||
@ -13,4 +16,37 @@ public class KyoriUtil {
|
||||
public static void sendActionBar(CommandSender sender, Component message) {
|
||||
VillagerOptimizer.getAudiences().sender(sender).sendActionBar(message);
|
||||
}
|
||||
|
||||
public static Component toUpperCase(Component input, Locale locale) {
|
||||
return input.replaceText(TextReplacementConfig.builder()
|
||||
.match("(?s).*")
|
||||
.replacement((result, builder) -> builder.content(result.group(0).toUpperCase(locale)))
|
||||
.build());
|
||||
}
|
||||
|
||||
public static String translateChatColor(String string) {
|
||||
string = string.replace("&0", "<black>");
|
||||
string = string.replace("&1", "<dark_blue>");
|
||||
string = string.replace("&2", "<dark_green>");
|
||||
string = string.replace("&3", "<dark_aqua>");
|
||||
string = string.replace("&4", "<dark_red>");
|
||||
string = string.replace("&5", "<dark_purple>");
|
||||
string = string.replace("&6", "<gold>");
|
||||
string = string.replace("&7", "<gray>");
|
||||
string = string.replace("&8", "<dark_gray>");
|
||||
string = string.replace("&9", "<blue>");
|
||||
string = string.replace("&a", "<green>");
|
||||
string = string.replace("&b", "<aqua>");
|
||||
string = string.replace("&c", "<red>");
|
||||
string = string.replace("&d", "<light_purple>");
|
||||
string = string.replace("&e", "<yellow>");
|
||||
string = string.replace("&f", "<white>");
|
||||
string = string.replace("&k", "<obfuscated>");
|
||||
string = string.replace("&l", "<bold>");
|
||||
string = string.replace("&m", "<strikethrough>");
|
||||
string = string.replace("&n", "<underlined>");
|
||||
string = string.replace("&o", "<italic>");
|
||||
string = string.replace("&r", "<reset>");
|
||||
return string;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user