From 97c711ea29fe56735d01f10d6f69d478453c8840 Mon Sep 17 00:00:00 2001 From: akastijn Date: Fri, 27 Jun 2025 20:39:21 +0200 Subject: [PATCH] Updated VillagerShopUI to 1.21.6 (using Cosmos) --- build.gradle.kts | 15 ++--- settings.gradle.kts | 13 +++- .../java/com/alttd/GUI/windows/BuyGUI.java | 10 +-- .../java/com/alttd/GUI/windows/SellGUI.java | 8 +-- .../java/com/alttd/GUI/windows/TradeGUI.java | 12 ++-- .../com/alttd/commands/CommandManager.java | 8 +-- .../commands/subcommands/CommandBuy.java | 12 ++-- .../subcommands/CommandCreateVillager.java | 22 +++---- .../commands/subcommands/CommandHelp.java | 4 +- .../commands/subcommands/CommandPoints.java | 62 ++++++++++--------- .../commands/subcommands/CommandReload.java | 2 +- .../subcommands/CommandRemoveVillager.java | 4 +- .../commands/subcommands/CommandSell.java | 12 ++-- .../java/com/alttd/config/VillagerConfig.java | 11 ++-- .../alttd/config/VillagerMessagesConfig.java | 7 ++- .../java/com/alttd/events/VillagerEvents.java | 9 +-- .../com/alttd/mappers/VillagerTypeMapper.java | 20 ++++++ src/main/java/com/alttd/objects/EconUser.java | 2 +- .../alttd/objects/VillagerTypeManager.java | 5 +- 19 files changed, 140 insertions(+), 98 deletions(-) create mode 100644 src/main/java/com/alttd/mappers/VillagerTypeMapper.java diff --git a/build.gradle.kts b/build.gradle.kts index 070a606..52f8394 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,3 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation - plugins { id("java") id("com.github.johnrengelman.shadow") version "7.1.1" @@ -27,9 +25,12 @@ publishing { repositories{ maven { - name = "alttd" - url = uri("https://repo.destro.xyz/snapshots") - credentials(PasswordCredentials::class) + name = "nexus" + url = uri("https://repo.alttd.com/repository/alttd-snapshot/") + credentials { + username = project.property("alttdSnapshotUsername") as String + password = project.property("alttdSnapshotPassword") as String + } } } } @@ -57,11 +58,11 @@ tasks { } dependencies { - compileOnly("com.alttd:Galaxy-API:1.21-R0.1-SNAPSHOT") { + compileOnly("com.alttd.cosmos:cosmos-api:1.21.6-R0.1-SNAPSHOT") { isChanging = true } compileOnly("com.github.milkbowl:VaultAPI:1.7") { exclude("org.bukkit","bukkit") } compileOnly("com.alttd.datalock:api:1.1.0-SNAPSHOT") -} \ No newline at end of file +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c50dfd9..f0ec809 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,10 +1,21 @@ rootProject.name = "VillagerShopUI" +val nexusUser = providers.gradleProperty("alttdSnapshotUsername").get() +val nexusPass = providers.gradleProperty("alttdSnapshotPassword").get() + dependencyResolutionManagement { repositories { mavenLocal() mavenCentral() - maven("https://repo.destro.xyz/snapshots") // Altitude - Galaxy + maven { + name = "nexus" + url = uri("https://repo.alttd.com/repository/alttd-snapshot/") + credentials { + username = nexusUser + password = nexusPass + } + } + maven("https://repo.destro.xyz/snapshots") // Cosmos maven("https://jitpack.io") { // Vault content { includeGroup("com.github.milkbowl") } } diff --git a/src/main/java/com/alttd/GUI/windows/BuyGUI.java b/src/main/java/com/alttd/GUI/windows/BuyGUI.java index 474e8a4..be0f927 100644 --- a/src/main/java/com/alttd/GUI/windows/BuyGUI.java +++ b/src/main/java/com/alttd/GUI/windows/BuyGUI.java @@ -64,7 +64,7 @@ public class BuyGUI extends GUIMerchant { int transPts = itemPts * amount; EconUser econUser = EconUser.getUser(player.getUniqueId()); if (econUser == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return; } int oldPoints = econUser.getPointsMap().getOrDefault(villagerType.getName(), 0); @@ -87,14 +87,14 @@ public class BuyGUI extends GUIMerchant { if ((newTime - 120) > lastClicked) lastClicked = newTime; else { - player.sendMiniMessage(Config.CLICKING_TOO_FAST, null); + player.sendRichMessage(Config.CLICKING_TOO_FAST); return; } Economy econ = VillagerUI.getInstance().getEconomy(); double balance = econ.getBalance(player); if (balance < purchase.price()) { - player.sendMiniMessage(Config.NOT_ENOUGH_MONEY, TagResolver.resolver( + player.sendRichMessage(Config.NOT_ENOUGH_MONEY, TagResolver.resolver( Placeholder.unparsed("money", String.valueOf(Utilities.round(balance, 2))), Placeholder.unparsed("price", String.format("%,.2f", purchase.price())) )); @@ -113,7 +113,7 @@ public class BuyGUI extends GUIMerchant { ref.space += itemStack.getMaxStackSize() - itemStack.getAmount(); }); if (ref.space < purchase.amount()) { - player.sendMiniMessage(Config.NOT_ENOUGH_SPACE, TagResolver.resolver( + player.sendRichMessage(Config.NOT_ENOUGH_SPACE, TagResolver.resolver( Placeholder.unparsed("space", String.valueOf(ref.space)), Placeholder.unparsed("amount", String.valueOf(purchase.amount())) )); @@ -125,7 +125,7 @@ public class BuyGUI extends GUIMerchant { player.getInventory().addItem(new ItemStack(purchase.material(), purchase.amount())); int newPoints = econUser.getPointsMap().get(villagerType.getName()); - player.sendMiniMessage(Config.PURCHASED_ITEM, TagResolver.resolver( + player.sendRichMessage(Config.PURCHASED_ITEM, TagResolver.resolver( Placeholder.unparsed("amount", String.valueOf(purchase.amount())), Placeholder.unparsed("item", Utilities.capitalize(purchase.material().name() .toLowerCase().replaceAll("_", " "))), diff --git a/src/main/java/com/alttd/GUI/windows/SellGUI.java b/src/main/java/com/alttd/GUI/windows/SellGUI.java index c904cd8..163c243 100644 --- a/src/main/java/com/alttd/GUI/windows/SellGUI.java +++ b/src/main/java/com/alttd/GUI/windows/SellGUI.java @@ -94,7 +94,7 @@ public class SellGUI extends GUIMerchant { private void sell(VillagerType villagerType, Player player, Material material, int amount, Price price, boolean bulk) { EconUser econUser = EconUser.getUser(player.getUniqueId()); if (econUser == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return; } @@ -120,12 +120,12 @@ public class SellGUI extends GUIMerchant { if ((newTime - 120) > lastClicked) lastClicked = newTime; else { - player.sendMiniMessage(Config.CLICKING_TOO_FAST, null); + player.sendRichMessage(Config.CLICKING_TOO_FAST); return; } PlayerInventory inventory = player.getInventory(); if (countTotalBlocksInInventory(inventory, purchase.material()) < purchase.amount()) { - player.sendMiniMessage(Config.NOT_ENOUGH_ITEMS, TagResolver.resolver( + player.sendRichMessage(Config.NOT_ENOUGH_ITEMS, TagResolver.resolver( Placeholder.unparsed("type", purchase.material().name()), Placeholder.unparsed("amount", String.valueOf(purchase.amount())))); return; @@ -153,7 +153,7 @@ public class SellGUI extends GUIMerchant { int newPoints = econUser.getPointsMap().get(villagerType.getName()); - player.sendMiniMessage(Config.SOLD_ITEM, TagResolver.resolver( + player.sendRichMessage(Config.SOLD_ITEM, TagResolver.resolver( Placeholder.unparsed("amount", String.valueOf(purchase.amount())), Placeholder.unparsed("item", Utilities.capitalize(purchase.material().name() .toLowerCase().replaceAll("_", " "))), diff --git a/src/main/java/com/alttd/GUI/windows/TradeGUI.java b/src/main/java/com/alttd/GUI/windows/TradeGUI.java index 7c07ce7..96d73aa 100644 --- a/src/main/java/com/alttd/GUI/windows/TradeGUI.java +++ b/src/main/java/com/alttd/GUI/windows/TradeGUI.java @@ -66,7 +66,7 @@ public class TradeGUI extends GUIMerchant { private void trade(BlackMarketVillagerType villagerType, Player player, Material material, int amount, Double price) { EconUser econUser = EconUser.getUser(player.getUniqueId()); if (econUser == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return; } @@ -99,13 +99,13 @@ public class TradeGUI extends GUIMerchant { if ((newTime - 120) > lastClicked) lastClicked = newTime; else { - player.sendMiniMessage(Config.CLICKING_TOO_FAST, null); + player.sendRichMessage(Config.CLICKING_TOO_FAST); return; } UUID uuid = player.getUniqueId(); if (villagerType.getRemainingTrades(uuid) <= 0) { - player.sendMiniMessage(Config.NO_TRADES_REMAINING, null); + player.sendRichMessage(Config.NO_TRADES_REMAINING); return; } @@ -113,7 +113,7 @@ public class TradeGUI extends GUIMerchant { double balance = econ.getBalance(player); if (balance < price) { - player.sendMiniMessage(Config.NOT_ENOUGH_MONEY, TagResolver.resolver( + player.sendRichMessage(Config.NOT_ENOUGH_MONEY, TagResolver.resolver( Placeholder.unparsed("money", String.valueOf(Utilities.round(balance, 2))), Placeholder.unparsed("price", String.format("%,.2f", price)) )); @@ -130,7 +130,7 @@ public class TradeGUI extends GUIMerchant { atomicInteger.addAndGet(itemStack.getMaxStackSize() - itemStack.getAmount()); }); if (atomicInteger.get() < amount) { - player.sendMiniMessage(Config.NOT_ENOUGH_SPACE, TagResolver.resolver( + player.sendRichMessage(Config.NOT_ENOUGH_SPACE, TagResolver.resolver( Placeholder.unparsed("space", String.valueOf(atomicInteger.get())), Placeholder.unparsed("amount", String.valueOf(amount)) )); @@ -142,7 +142,7 @@ public class TradeGUI extends GUIMerchant { randomizeMetaIfNeeded(material, itemStack); player.getInventory().addItem(itemStack); - player.sendMiniMessage(Config.TRADED_ITEM, TagResolver.resolver( + player.sendRichMessage(Config.TRADED_ITEM, TagResolver.resolver( Placeholder.parsed("amount", String.valueOf(amount)), Placeholder.parsed("item", Utilities.capitalize(material.name() .toLowerCase().replaceAll("_", " "))), diff --git a/src/main/java/com/alttd/commands/CommandManager.java b/src/main/java/com/alttd/commands/CommandManager.java index 1ac87ff..1d158ff 100644 --- a/src/main/java/com/alttd/commands/CommandManager.java +++ b/src/main/java/com/alttd/commands/CommandManager.java @@ -45,17 +45,17 @@ public class CommandManager implements CommandExecutor, TabExecutor { @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String cmd, @NotNull String[] args) { if (args.length == 0) { - commandSender.sendMiniMessage(Config.HELP_MESSAGE_WRAPPER.replaceAll("", subCommands.stream() + commandSender.sendRichMessage(Config.HELP_MESSAGE_WRAPPER.replaceAll("", subCommands.stream() .filter(subCommand -> commandSender.hasPermission(subCommand.getPermission())) .map(SubCommand::getHelpMessage) - .collect(Collectors.joining("\n"))), null); + .collect(Collectors.joining("\n")))); return true; } SubCommand subCommand = getSubCommand(args[0]); if (!commandSender.hasPermission(subCommand.getPermission())) { - commandSender.sendMiniMessage(Config.NO_PERMISSION, null); + commandSender.sendRichMessage(Config.NO_PERMISSION); return true; } @@ -93,4 +93,4 @@ public class CommandManager implements CommandExecutor, TabExecutor { .findFirst() .orElse(null); } -} \ No newline at end of file +} diff --git a/src/main/java/com/alttd/commands/subcommands/CommandBuy.java b/src/main/java/com/alttd/commands/subcommands/CommandBuy.java index 2ca9934..ab471a6 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandBuy.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandBuy.java @@ -26,21 +26,21 @@ public class CommandBuy extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (!(commandSender instanceof Player player)) { - commandSender.sendMiniMessage(Config.NO_CONSOLE, null); + commandSender.sendRichMessage(Config.NO_CONSOLE); return true; } if (args.length == 1) { //TODO open gui - player.sendMiniMessage(getHelpMessage(), null); //TODO remove later + player.sendRichMessage(getHelpMessage()); //TODO remove later return true; } if (args.length != 2) { - player.sendMiniMessage(getHelpMessage(), null); + player.sendRichMessage(getHelpMessage()); return true; } EconUser user = EconUser.getUser(player.getUniqueId()); if (user == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return true; } Material item = Material.valueOf(args[1].toUpperCase()); @@ -50,7 +50,7 @@ public class CommandBuy extends SubCommand { .anyMatch(material -> material.equals(item))) .findFirst(); if (optionalVillagerType.isEmpty()) { - player.sendMiniMessage(Config.NO_BUY_AT_SPAWN, TagResolver.resolver(Placeholder.unparsed("material", item.name()))); + player.sendRichMessage(Config.NO_BUY_AT_SPAWN, TagResolver.resolver(Placeholder.unparsed("material", item.name()))); return true; } VillagerType villagerType = optionalVillagerType.get(); @@ -61,7 +61,7 @@ public class CommandBuy extends SubCommand { } Integer curPoints = user.getPointsMap().getOrDefault(villagerType.getName(), 0); double cost = price.calculatePriceThing(curPoints, price.getPoints(), true, price.getPoints()); - player.sendMiniMessage(Config.BUY_ITEM_MESSAGE, TagResolver.resolver( + player.sendRichMessage(Config.BUY_ITEM_MESSAGE, TagResolver.resolver( Placeholder.unparsed("material", item.name()), Placeholder.unparsed("price", String.valueOf(cost)), Placeholder.unparsed("points", String.valueOf(price.getPoints())), diff --git a/src/main/java/com/alttd/commands/subcommands/CommandCreateVillager.java b/src/main/java/com/alttd/commands/subcommands/CommandCreateVillager.java index b1a249b..809a614 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandCreateVillager.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandCreateVillager.java @@ -3,6 +3,7 @@ package com.alttd.commands.subcommands; import com.alttd.commands.SubCommand; import com.alttd.config.Config; import com.alttd.config.VillagerConfig; +import com.alttd.mappers.VillagerTypeMapper; import com.alttd.objects.LoadedVillagers; import com.alttd.objects.VillagerType; import com.alttd.objects.VillagerTypeManager; @@ -19,40 +20,39 @@ import org.bukkit.entity.Villager; import org.bukkit.event.entity.CreatureSpawnEvent; import java.util.*; -import java.util.stream.Collectors; public class CommandCreateVillager extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (args.length != 9) { - commandSender.sendMiniMessage(getHelpMessage(), null); + commandSender.sendRichMessage(getHelpMessage()); return true; } - Optional first = VillagerTypeManager.getVillagerTypes().stream().filter(villagerType -> villagerType.getName().equalsIgnoreCase(args[1])).findFirst(); + Optional first = VillagerTypeManager.getVillagerType(args[1]); if (first.isEmpty()) { - commandSender.sendMiniMessage(getHelpMessage(), null); + commandSender.sendRichMessage(getHelpMessage()); return true; } VillagerType villagerType = first.get(); - Villager.Type type = Villager.Type.valueOf(args[2].toUpperCase()); - if (type == null) { //TODO test if this might need a try catch? - commandSender.sendMiniMessage(getHelpMessage(), null); + Optional optionalVillagerType = VillagerTypeMapper.map(args[2]); + if (optionalVillagerType.isEmpty()) { + commandSender.sendRichMessage(getHelpMessage()); return true; } World world = Bukkit.getServer().getWorld(args[8]); if (world == null) { - commandSender.sendMiniMessage(getHelpMessage(), null); + commandSender.sendRichMessage(getHelpMessage()); return true; } Location location = new Location(world, Double.parseDouble(args[3]), Double.parseDouble(args[4]), Double.parseDouble(args[5]), Float.parseFloat(args[6]), Float.parseFloat(args[7])); Villager villager = (Villager) world.spawnEntity(location, EntityType.VILLAGER, CreatureSpawnEvent.SpawnReason.CUSTOM); villager.setPersistent(true); villager.setInvulnerable(true); - villager.setVillagerType(type); + villager.setVillagerType(optionalVillagerType.get()); villager.setProfession(villagerType.getProfession()); villager.setRemoveWhenFarAway(false); villager.setCollidable(false); @@ -80,10 +80,10 @@ public class CommandCreateVillager extends SubCommand { switch (args.length) { case 2 -> res.addAll(VillagerTypeManager.getVillagerTypes().stream() .map(VillagerType::getName) - .collect(Collectors.toList())); + .toList()); case 3 -> res.addAll(Arrays.stream(Villager.Type.values()) .map(something -> something.name()) - .collect(Collectors.toList())); + .toList()); case 4 -> { if (commandSender instanceof Player player) { res.add(String.valueOf(Utilities.round(player.getLocation().getX(), 2))); diff --git a/src/main/java/com/alttd/commands/subcommands/CommandHelp.java b/src/main/java/com/alttd/commands/subcommands/CommandHelp.java index d10c72b..11ce69e 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandHelp.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandHelp.java @@ -20,11 +20,11 @@ public class CommandHelp extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { - commandSender.sendMiniMessage(Config.HELP_MESSAGE_WRAPPER.replaceAll("", commandManager + commandSender.sendRichMessage(Config.HELP_MESSAGE_WRAPPER.replaceAll("", commandManager .getSubCommands().stream() .filter(subCommand -> commandSender.hasPermission(subCommand.getPermission())) .map(SubCommand::getHelpMessage) - .collect(Collectors.joining("\n"))), null); + .collect(Collectors.joining("\n")))); return true; } diff --git a/src/main/java/com/alttd/commands/subcommands/CommandPoints.java b/src/main/java/com/alttd/commands/subcommands/CommandPoints.java index 2c0d6ca..50d9ca9 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandPoints.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandPoints.java @@ -9,6 +9,7 @@ import com.alttd.objects.VillagerTypeManager; import com.alttd.util.Logger; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; @@ -17,6 +18,7 @@ import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; @@ -27,12 +29,12 @@ public class CommandPoints extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (!(commandSender instanceof Player player)) { - commandSender.sendMiniMessage(Config.NO_CONSOLE, null); + commandSender.sendRichMessage(Config.NO_CONSOLE); return true; } EconUser user = EconUser.getUser(player.getUniqueId()); if (user == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return true; } var ref = new Object() { @@ -45,20 +47,18 @@ public class CommandPoints extends SubCommand { Object2ObjectOpenHashMap pointsMap = user.getPointsMap(); pointsMap.keySet().forEach(key -> { - VillagerType villagerType = VillagerTypeManager.getVillagerType(key); - if (villagerType == null) { + Optional optionalVillagerType = VillagerTypeManager.getVillagerType(key); + if (optionalVillagerType.isEmpty()) { Logger.warning("Player % has unused villager type % in their point list.", player.getName(), key); return; } + VillagerType villagerType = optionalVillagerType.get(); int currentPoints = pointsMap.getOrDefault(key, 0); - if (currentPoints == 0) return; + if (currentPoints == 0) { + return; + } allPointsAreZero.set(false); - ref.message = ref.message.append(miniMessage.deserialize("\n", TagResolver.resolver())); - ref.message = ref.message.append(miniMessage.deserialize(Config.POINTS_CONTENT, TagResolver.resolver( - Placeholder.unparsed("villager_type", VillagerTypeManager.getVillagerType(key).getDisplayName()), - Placeholder.unparsed("points", String.valueOf(currentPoints)), - Placeholder.unparsed("buy_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, true))), - Placeholder.unparsed("sell_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, false)))))); + ref.message = ref.message.append(getPointContentComponent(villagerType, currentPoints)); }); if (allPointsAreZero.get()) { ref.message = miniMessage.deserialize(Config.NO_VILLAGER_POINTS); @@ -70,36 +70,41 @@ public class CommandPoints extends SubCommand { Object2ObjectOpenHashMap pointsMap = user.getPointsMap(); int currentPoints = pointsMap.getOrDefault(villagerType.getName(), 0); - ref.message = ref.message.append(miniMessage.deserialize("\n", TagResolver.resolver())); - ref.message = ref.message.append(miniMessage.deserialize(Config.POINTS_CONTENT, TagResolver.resolver( - Placeholder.unparsed("villager_type", villagerType.getDisplayName()), - Placeholder.unparsed("points", String.valueOf(currentPoints)), - Placeholder.unparsed("buy_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, true))), - Placeholder.unparsed("sell_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, false))) - ))); + ref.message = ref.message.append(getPointContentComponent(villagerType, currentPoints)); } } else { - VillagerType villagerType = VillagerTypeManager.getVillagerType(args[1].toLowerCase()); + Optional optionalVillagerType = VillagerTypeManager.getVillagerType(args[1].toLowerCase()); Object2ObjectOpenHashMap pointsMap = user.getPointsMap(); - if (villagerType == null) { - player.sendMiniMessage(Config.NOT_A_VILLAGER, TagResolver.resolver(Placeholder.unparsed("villager_type", args[1]))); + if (optionalVillagerType.isEmpty()) { + player.sendRichMessage(Config.NOT_A_VILLAGER, TagResolver.resolver(Placeholder.unparsed("villager_type", args[1]))); return true; } + VillagerType villagerType = optionalVillagerType.get(); int currentPoints = pointsMap.getOrDefault(villagerType.getName(), 0); ref.message = ref.message.append(miniMessage.deserialize(Config.POINTS_CONTENT, TagResolver.resolver( Placeholder.unparsed("villager_type", villagerType.getDisplayName()), Placeholder.unparsed("points", String.valueOf(currentPoints)), Placeholder.unparsed("buy_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, true))), Placeholder.unparsed("sell_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, false))) - ))); + ))); } - } else - player.sendMiniMessage(getHelpMessage(), null); + } else { + player.sendRichMessage(getHelpMessage()); + } - player.sendMessage(ref.message); + player.sendMessage((ComponentLike) ref.message); return true; } + private Component getPointContentComponent(VillagerType villagerType, int currentPoints) { + return miniMessage.deserialize("\n", TagResolver.resolver()) + .append(miniMessage.deserialize(Config.POINTS_CONTENT, TagResolver.resolver( + Placeholder.unparsed("villager_type", villagerType.getDisplayName()), + Placeholder.unparsed("points", String.valueOf(currentPoints)), + Placeholder.unparsed("buy_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, true))), + Placeholder.unparsed("sell_multiplier", String.valueOf(Price.getCurrentMultiplier(currentPoints, false)))))); + } + @Override public String getName() { return "points"; @@ -108,10 +113,11 @@ public class CommandPoints extends SubCommand { @Override public List getTabComplete(CommandSender commandSender, String[] args) { List res = new ArrayList<>(); - if (args.length == 2) + if (args.length == 2) { res.addAll(VillagerTypeManager.getVillagerTypes().stream() - .map(VillagerType::getName) - .collect(Collectors.toList())); + .map(VillagerType::getName) + .collect(Collectors.toList())); + } res.add("all"); return res; } diff --git a/src/main/java/com/alttd/commands/subcommands/CommandReload.java b/src/main/java/com/alttd/commands/subcommands/CommandReload.java index 26fdd2a..10cb7ac 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandReload.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandReload.java @@ -16,7 +16,7 @@ public class CommandReload extends SubCommand { Config.reload(); VillagerConfig.reload(); WorthConfig.reload(); - commandSender.sendMiniMessage("Reloaded VillagerShopUI config.", null); + commandSender.sendRichMessage("Reloaded VillagerShopUI config."); return true; } diff --git a/src/main/java/com/alttd/commands/subcommands/CommandRemoveVillager.java b/src/main/java/com/alttd/commands/subcommands/CommandRemoveVillager.java index ae9fe99..b1994ba 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandRemoveVillager.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandRemoveVillager.java @@ -20,7 +20,7 @@ public class CommandRemoveVillager extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (!(commandSender instanceof Player player)) { - commandSender.sendMiniMessage(Config.NO_CONSOLE, null); + commandSender.sendRichMessage(Config.NO_CONSOLE); return true; } @@ -33,7 +33,7 @@ public class CommandRemoveVillager extends SubCommand { LoadedVillagers.removeLoadedVillager(uuid); VillagerConfig.removeVillager(uuid); entity.remove(); - player.sendMiniMessage(Config.REMOVED_VILLAGER, TagResolver.resolver( + player.sendRichMessage(Config.REMOVED_VILLAGER, TagResolver.resolver( Placeholder.unparsed("uuid", uuid.toString()))); } return true; diff --git a/src/main/java/com/alttd/commands/subcommands/CommandSell.java b/src/main/java/com/alttd/commands/subcommands/CommandSell.java index 2b1c773..7395ed6 100644 --- a/src/main/java/com/alttd/commands/subcommands/CommandSell.java +++ b/src/main/java/com/alttd/commands/subcommands/CommandSell.java @@ -26,21 +26,21 @@ public class CommandSell extends SubCommand { @Override public boolean onCommand(CommandSender commandSender, String[] args) { if (!(commandSender instanceof Player player)) { - commandSender.sendMiniMessage(Config.NO_CONSOLE, null); + commandSender.sendRichMessage(Config.NO_CONSOLE); return true; } if (args.length == 1) { //TODO open gui - player.sendMiniMessage(getHelpMessage(), null); //TODO remove later + player.sendRichMessage(getHelpMessage()); //TODO remove later return true; } if (args.length != 2) { - player.sendMiniMessage(getHelpMessage(), null); + player.sendRichMessage(getHelpMessage()); return true; } EconUser user = EconUser.getUser(player.getUniqueId()); if (user == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return true; } Material item = Material.valueOf(args[1].toUpperCase()); @@ -50,7 +50,7 @@ public class CommandSell extends SubCommand { .anyMatch(material -> material.equals(item))) .findFirst(); if (optionalVillagerType.isEmpty()) { - player.sendMiniMessage(Config.NO_SELL_AT_SPAWN, TagResolver.resolver(Placeholder.unparsed("material", item.name()))); + player.sendRichMessage(Config.NO_SELL_AT_SPAWN, TagResolver.resolver(Placeholder.unparsed("material", item.name()))); return true; } VillagerType villagerType = optionalVillagerType.get(); @@ -61,7 +61,7 @@ public class CommandSell extends SubCommand { } Integer curPoints = user.getPointsMap().getOrDefault(villagerType.getName(), 0); double cost = price.calculatePriceThing(curPoints, price.getPoints(), false, price.getPoints()); - player.sendMiniMessage(Config.SELL_ITEM_MESSAGE, TagResolver.resolver( + player.sendRichMessage(Config.SELL_ITEM_MESSAGE, TagResolver.resolver( Placeholder.unparsed("material", item.name()), Placeholder.unparsed("price", String.valueOf(cost)), Placeholder.unparsed("points", String.valueOf(price.getPoints())), diff --git a/src/main/java/com/alttd/config/VillagerConfig.java b/src/main/java/com/alttd/config/VillagerConfig.java index ef48e02..9e97074 100644 --- a/src/main/java/com/alttd/config/VillagerConfig.java +++ b/src/main/java/com/alttd/config/VillagerConfig.java @@ -4,6 +4,8 @@ import com.alttd.objects.LoadedVillagers; import com.alttd.objects.VillagerType; import com.alttd.objects.VillagerTypeManager; import com.alttd.util.Logger; + +import java.util.Optional; import java.util.UUID; public class VillagerConfig extends AbstractConfig { @@ -27,11 +29,10 @@ public class VillagerConfig extends AbstractConfig { private static void loadVillagers() { LoadedVillagers.clearLoadedVillagers(); config.getConfigurationSection("").getKeys(false).forEach(key -> { - VillagerType villagerType = VillagerTypeManager.getVillagerType(config.getString(key, "")); - if (villagerType != null) - LoadedVillagers.addLoadedVillager(UUID.fromString(key), villagerType); - else - Logger.warning("Invalid config entry %.", key); + Optional optionalVillagerType = VillagerTypeManager.getVillagerType(config.getString(key, "")); + optionalVillagerType + .ifPresentOrElse(present -> LoadedVillagers.addLoadedVillager(UUID.fromString(key), present), + () -> Logger.warning("Invalid config entry %.", key)); }); } diff --git a/src/main/java/com/alttd/config/VillagerMessagesConfig.java b/src/main/java/com/alttd/config/VillagerMessagesConfig.java index 0eba349..6922acd 100644 --- a/src/main/java/com/alttd/config/VillagerMessagesConfig.java +++ b/src/main/java/com/alttd/config/VillagerMessagesConfig.java @@ -7,6 +7,7 @@ import org.bukkit.configuration.ConfigurationSection; import java.io.File; import java.util.List; +import java.util.Optional; import java.util.Set; public class VillagerMessagesConfig extends AbstractConfig { @@ -41,12 +42,12 @@ public class VillagerMessagesConfig extends AbstractConfig { } keys.forEach(key -> { - VillagerType villagerType = VillagerTypeManager.getVillagerType(key); - if (villagerType == null) { + Optional optionalVillagerType = VillagerTypeManager.getVillagerType(key); + if (optionalVillagerType.isEmpty()) { Logger.info("Unknown villager type: " + key); return; } - villagerType.setMessages(configurationSection.getStringList(key)); + optionalVillagerType.get().setMessages(configurationSection.getStringList(key)); }); } } diff --git a/src/main/java/com/alttd/events/VillagerEvents.java b/src/main/java/com/alttd/events/VillagerEvents.java index 414fb10..d89cbda 100644 --- a/src/main/java/com/alttd/events/VillagerEvents.java +++ b/src/main/java/com/alttd/events/VillagerEvents.java @@ -5,8 +5,9 @@ import com.alttd.GUI.windows.TradeGUI; import com.alttd.VillagerUI; import com.alttd.config.Config; import com.alttd.config.VillagerConfig; -import com.alttd.galaxy.event.player.PlayerInteractOnEntityEvent; +import com.alttd.cosmos.event.player.PlayerInteractOnEntityEvent; import com.alttd.objects.*; +import net.kyori.adventure.text.ComponentLike; import org.bukkit.Sound; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -35,12 +36,12 @@ public class VillagerEvents implements Listener { Player player = event.getPlayer(); event.setCancelled(true); if (!player.hasPermission(loadedVillager.getPermission())) { - player.sendMiniMessage(Config.NO_PERMISSION, null); //TODO more specific message? + player.sendRichMessage(Config.NO_PERMISSION); //TODO more specific message? return; } EconUser user = EconUser.getUser(player.getUniqueId()); if (user == null) { - player.sendMiniMessage(Config.LOADING_ECON_DATA, null); + player.sendRichMessage(Config.LOADING_ECON_DATA); return; } new BukkitRunnable() { @@ -80,7 +81,7 @@ public class VillagerEvents implements Listener { return; } - loadedVillager.getRandomMessage().ifPresent(player::sendMessage); + loadedVillager.getRandomMessage().ifPresent(component -> player.sendMessage((ComponentLike) component)); if (loadedVillager instanceof BlackMarketVillagerType) { player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_HURT, 1.0F, 1.0F); } else if (loadedVillager instanceof ShopVillagerType) { diff --git a/src/main/java/com/alttd/mappers/VillagerTypeMapper.java b/src/main/java/com/alttd/mappers/VillagerTypeMapper.java new file mode 100644 index 0000000..019e250 --- /dev/null +++ b/src/main/java/com/alttd/mappers/VillagerTypeMapper.java @@ -0,0 +1,20 @@ +package com.alttd.mappers; + +import org.bukkit.entity.Villager; + +import java.util.Optional; + +public class VillagerTypeMapper { + public static Optional map(String villagerType) { + return switch (villagerType.toUpperCase()) { + case "DESERT" -> Optional.of(Villager.Type.DESERT); + case "JUNGLE" -> Optional.of(Villager.Type.JUNGLE); + case "PLAINS" -> Optional.of(Villager.Type.PLAINS); + case "SAVANNA" -> Optional.of(Villager.Type.SAVANNA); + case "SNOW" -> Optional.of(Villager.Type.SNOW); + case "SWAMP" -> Optional.of(Villager.Type.SWAMP); + case "TAIGA" -> Optional.of(Villager.Type.TAIGA); + default -> Optional.empty(); + }; + } +} diff --git a/src/main/java/com/alttd/objects/EconUser.java b/src/main/java/com/alttd/objects/EconUser.java index 0065552..a26a17e 100644 --- a/src/main/java/com/alttd/objects/EconUser.java +++ b/src/main/java/com/alttd/objects/EconUser.java @@ -132,7 +132,7 @@ public class EconUser { public void notifyPlayer(UUID uuid, String villagerType) { Player player = Bukkit.getPlayer(uuid); if (player != null && player.isOnline()) - player.sendMiniMessage(Config.NOTIFY_POINTS_RESET, Placeholder.unparsed("villager_type", villagerType)); + player.sendRichMessage(Config.NOTIFY_POINTS_RESET, Placeholder.unparsed("villager_type", villagerType)); } public static void tryLoadUser(UUID uuid) { diff --git a/src/main/java/com/alttd/objects/VillagerTypeManager.java b/src/main/java/com/alttd/objects/VillagerTypeManager.java index 3370cb4..ec472cc 100644 --- a/src/main/java/com/alttd/objects/VillagerTypeManager.java +++ b/src/main/java/com/alttd/objects/VillagerTypeManager.java @@ -1,6 +1,7 @@ package com.alttd.objects; import java.util.HashSet; +import java.util.Optional; import java.util.Set; public class VillagerTypeManager { @@ -10,8 +11,8 @@ public class VillagerTypeManager { return villagerTypes; } - public static VillagerType getVillagerType(String name) { - return villagerTypes.stream().filter(villagerType -> villagerType.getName().equals(name)).findFirst().orElse(null); + public static Optional getVillagerType(String name) { + return villagerTypes.stream().filter(villagerType -> villagerType.getName().equals(name)).findFirst(); } public static void addVillagerType(VillagerType villagerType) {