diff --git a/pom.xml b/pom.xml index 56b0b527..2e0b6e3d 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ 150+ Toggleable Tweaks & Features including Vanilla Tweaks as a plugin, and more! - 14 - UTF-8 + 21 + 21 https://twitter.com/TeakIvyYT @@ -22,13 +22,46 @@ TeaksTweaks - ${project.version} + + net.md-5 + specialsource-maven-plugin + 2.0.3 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:1.21-R0.1-SNAPSHOT:txt:maps-mojang + true + org.spigotmc:spigot:1.21-R0.1-SNAPSHOT:jar:remapped-mojang + true + remapped-obf + + + + package + + remap + + remap-spigot + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + org.spigotmc:minecraft-server:1.21-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.21-R0.1-SNAPSHOT:jar:remapped-obf + + + + org.apache.maven.plugins maven-compiler-plugin 3.8.1 - 16 - 16 + 21 + 21 @@ -47,25 +80,25 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - eclipse - ${java.version} - ${java.version} - - - - - - org.codehaus.plexus - plexus-compiler-eclipse - 2.8.8 - - - + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins maven-jar-plugin @@ -108,16 +141,38 @@ - io.papermc.paper - paper-api + org.spigotmc + spigot + remapped-mojang 1.21-R0.1-SNAPSHOT provided + + + + + + com.mojang authlib 1.5.25 provided + + net.kyori + adventure-text-minimessage + 4.17.0 + + + net.kyori + adventure-platform-bukkit + 4.3.3 + + + com.googlecode.json-simple + json-simple + 1.1.1 + diff --git a/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java b/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java index 40d32501..6a0bd6d0 100644 --- a/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java +++ b/src/main/java/me/teakivy/teakstweaks/TeaksTweaks.java @@ -9,6 +9,7 @@ import me.teakivy.teakstweaks.utils.metrics.Metrics; import me.teakivy.teakstweaks.utils.update.UpdateChecker; import me.teakivy.teakstweaks.utils.update.UpdateJoinAlert; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -25,14 +26,28 @@ public final class TeaksTweaks extends JavaPlugin implements Listener { private final ArrayList activePacks = new ArrayList<>(); private final ArrayList activeCraftingTweaks = new ArrayList<>(); + private BukkitAudiences adventure; private Register register; + + public BukkitAudiences adventure() { + if(this.adventure == null) { + throw new IllegalStateException("Tried to access Adventure when the plugin was disabled!"); + } + return this.adventure; + } + + public static BukkitAudiences getAdventure() { + return getInstance().adventure(); + } /** * Called when the plugin is enabled */ @Override public void onEnable() { + // Initialize an audiences instance for the plugin + this.adventure = BukkitAudiences.create(this); // Credits createCredits(); @@ -81,6 +96,10 @@ public void onEnable() { */ @Override public void onDisable() { + if(this.adventure != null) { + this.adventure.close(); + this.adventure = null; + } // Plugin shutdown logic Logger.info(Translatable.get("startup.plugin.shutting_down")); } diff --git a/src/main/java/me/teakivy/teakstweaks/commands/AltsCommand.java b/src/main/java/me/teakivy/teakstweaks/commands/AltsCommand.java index d6ed8729..2d134257 100644 --- a/src/main/java/me/teakivy/teakstweaks/commands/AltsCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/commands/AltsCommand.java @@ -25,7 +25,7 @@ public void playerCommand(PlayerCommandEvent event) { String action = event.getArg(0); if (event.hasArgs(2)) { - secondary = Bukkit.getPlayerUniqueId(event.getArg(1)); + secondary = getUUID(event.getArg(1)); if (secondary == null) { sendError(ErrorType.PLAYER_DNE); @@ -39,7 +39,7 @@ public void playerCommand(PlayerCommandEvent event) { return; } - main = Bukkit.getPlayerUniqueId(event.getArg(2)); + main = getUUID(event.getArg(2)); if (main == null) { sendError(ErrorType.PLAYER_DNE); @@ -159,4 +159,13 @@ public boolean canAddAlt(Player player) { if (getPackConfig().getInt("max-alts") == -1) return true; return SpectatorAlts.getAlts(player.getUniqueId()).size() < getPackConfig().getInt("max-alts"); } + + private UUID getUUID(String name) { + for (OfflinePlayer p : Bukkit.getOfflinePlayers()) { + if (p.getName().equalsIgnoreCase(name)) { + return p.getUniqueId(); + } + } + return null; + } } diff --git a/src/main/java/me/teakivy/teakstweaks/commands/TPACommand.java b/src/main/java/me/teakivy/teakstweaks/commands/TPACommand.java index 22a1bab6..4ac6a318 100644 --- a/src/main/java/me/teakivy/teakstweaks/commands/TPACommand.java +++ b/src/main/java/me/teakivy/teakstweaks/commands/TPACommand.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.packs.teleportation.back.Back; import me.teakivy.teakstweaks.utils.ErrorType; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.command.*; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -67,7 +68,7 @@ public void playerCommand(PlayerCommandEvent event) { TPARequest req = new TPARequest(player, to); requests.add(req); - to.sendMessage(message); + MM.player(to).sendMessage(message); sendMessage("request_sent", insert("player", to.getName())); Bukkit.getScheduler().scheduleSyncDelayedTask(TeaksTweaks.getInstance(), () -> { @@ -164,8 +165,8 @@ public void accept() { accepted = true; Back.backLoc.put(to.getUniqueId(), to.getLocation()); from.teleport(to.getLocation()); - to.sendMessage(getText("teleporting_to_you", insert("player", from.getName()))); - from.sendMessage(getText("teleporting", insert("player", to.getName()))); + MM.player(to).sendMessage(getText("teleporting_to_you", insert("player", from.getName()))); + MM.player(from).sendMessage(getText("teleporting", insert("player", to.getName()))); } } } diff --git a/src/main/java/me/teakivy/teakstweaks/commands/TagGameCommand.java b/src/main/java/me/teakivy/teakstweaks/commands/TagGameCommand.java index f6b2ce28..07fb48db 100644 --- a/src/main/java/me/teakivy/teakstweaks/commands/TagGameCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/commands/TagGameCommand.java @@ -8,6 +8,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -36,7 +37,7 @@ public void playerCommand(PlayerCommandEvent event) { if (team == null) { team = sb.registerNewTeam("TaggedTeam"); - team.color(NamedTextColor.RED); + team.setColor(ChatColor.RED); } team.addEntry(player.getName()); diff --git a/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java b/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java index b1e28d68..21778ddf 100644 --- a/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/commands/TeaksTweaksCommand.java @@ -12,11 +12,15 @@ public class TeaksTweaksCommand extends AbstractCommand { public TeaksTweaksCommand() { - super(CommandType.ALL, null, "teakstweaks", Arrays.asList("tweaks", "tt"), "teakstweakscommand", Arg.required("info", "version", "support", "update")); + super(CommandType.ALL, null, "teakstweaks", Arrays.asList("tweaks", "tt"), "teakstweakscommand", Arg.optional("info", "version", "support", "update")); } @Override public void command(CommandEvent event) { + if (!event.hasArgs()) { + sendInfoMessage(); + return; + } switch (event.getArg(0)) { case "info": sendInfoMessage(); diff --git a/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractCraftingTweak.java b/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractCraftingTweak.java index 5d830d97..3af9eeed 100644 --- a/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractCraftingTweak.java +++ b/src/main/java/me/teakivy/teakstweaks/craftingtweaks/AbstractCraftingTweak.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import me.teakivy.teakstweaks.utils.metrics.CustomMetrics; @@ -12,6 +13,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; @@ -66,14 +68,14 @@ public void init() { lore.add(PackType.CRAFTING_TWEAKS.getName()); - List components = new ArrayList<>(); + List components = new ArrayList<>(); for (String l : lore) { - components.add(MiniMessage.miniMessage().deserialize(l).decoration(TextDecoration.ITALIC, false)); + components.add(MM.toString(MiniMessage.miniMessage().deserialize(l).decoration(TextDecoration.ITALIC, false))); } - - item.lore(components); - - item.editMeta(meta -> meta.displayName(MiniMessage.miniMessage().deserialize(PackType.CRAFTING_TWEAKS.getColor() + name).decoration(TextDecoration.ITALIC, false))); + ItemMeta meta = item.getItemMeta(); + meta.setLore(components); + meta.setDisplayName(MM.toString(MiniMessage.miniMessage().deserialize(PackType.CRAFTING_TWEAKS.getColor() + name).decoration(TextDecoration.ITALIC, false))); + item.setItemMeta(meta); } /** diff --git a/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java b/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java index 0ede2f72..5c4567bc 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/BasePack.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import me.teakivy.teakstweaks.utils.metrics.CustomMetrics; @@ -17,6 +18,7 @@ import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.intellij.lang.annotations.Subst; import java.util.ArrayList; @@ -76,13 +78,15 @@ public BasePack(String path, PackType packType, Material material) { lore.add(packType.getColor() + packType.getName()); - List loreComponents = new ArrayList<>(); + List loreComponents = new ArrayList<>(); for (String line : lore) { - loreComponents.add(MiniMessage.miniMessage().deserialize("" + line).decoration(TextDecoration.ITALIC, false)); + loreComponents.add(MM.toString(MiniMessage.miniMessage().deserialize("" + line).decoration(TextDecoration.ITALIC, false))); } - item.lore(loreComponents); - item.editMeta(meta -> meta.displayName(MiniMessage.miniMessage().deserialize(packType.getColor() + name).decoration(TextDecoration.ITALIC, false))); + ItemMeta meta = item.getItemMeta(); + meta.setLore(loreComponents); + meta.setDisplayName(MM.toString(MiniMessage.miniMessage().deserialize(packType.getColor() + name).decoration(TextDecoration.ITALIC, false))); + item.setItemMeta(meta); CustomMetrics.addPackEnabled(name); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/experimental/confetticreepers/ConfettiCreeper.java b/src/main/java/me/teakivy/teakstweaks/packs/experimental/confetticreepers/ConfettiCreeper.java index 726017fa..c9f3362d 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/experimental/confetticreepers/ConfettiCreeper.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/experimental/confetticreepers/ConfettiCreeper.java @@ -54,7 +54,7 @@ public void onPrime(ExplosionPrimeEvent event) { Firework fw = (Firework) entity.getWorld().spawnEntity(entity.getLocation(), EntityType.FIREWORK_ROCKET); FireworkMeta fwMeta = fw.getFireworkMeta(); - fwMeta.displayName(Component.text("Confetti")); + fwMeta.setDisplayName("Confetti"); fwMeta.addEffect(fwEffect); fw.setFireworkMeta(fwMeta); fw.detonate(); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/experimental/elevators/Elevator.java b/src/main/java/me/teakivy/teakstweaks/packs/experimental/elevators/Elevator.java index a40a41d4..a634d7de 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/experimental/elevators/Elevator.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/experimental/elevators/Elevator.java @@ -1,6 +1,5 @@ package me.teakivy.teakstweaks.packs.experimental.elevators; -import com.destroystokyo.paper.event.player.PlayerJumpEvent; import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import org.bukkit.*; @@ -12,6 +11,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; @@ -84,8 +84,9 @@ public void onSneak(PlayerToggleSneakEvent event) { } @EventHandler - public void onJump(PlayerJumpEvent e) { + public void onJump(PlayerMoveEvent e) { Player player = e.getPlayer(); + if (e.getFrom().getY() < e.getTo().getY()) return; Location loc = player.getLocation(); Block standingBlock = loc.add(0, -1, 0).getBlock(); if (!isElevator(standingBlock)) return; diff --git a/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java b/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java index dbf02945..9cbe369e 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/experimental/xpmanagement/XPManagement.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; @@ -118,9 +119,9 @@ public void bottleXP(PlayerInteractEvent event) { ItemMeta xpMeta = xpBottle.getItemMeta(); if (getConfig().getBoolean("display-amount")) { - List lore = new ArrayList<>(); - lore.add(getText("bottle_contains", insert("amount", getConfig().getInt("take-xp-amount")))); - xpMeta.lore(lore); + List lore = new ArrayList<>(); + lore.add(MM.toString(getText("bottle_contains", insert("amount", getConfig().getInt("take-xp-amount"))))); + xpMeta.setLore(lore); } PersistentDataContainer data = xpMeta.getPersistentDataContainer(); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/tag/Tag.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/tag/Tag.java index 4e50a046..6c7060cf 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/tag/Tag.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/tag/Tag.java @@ -3,11 +3,13 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.packs.survival.afkdisplay.AFK; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -41,7 +43,7 @@ public void tagPlayer(EntityDamageByEntityEvent event) { if (AFK.afk.get(player.getUniqueId())) { if (!getConfig().getBoolean("allow-tagging-afk")) { - damager.sendMessage(getText("error.cant_tag_afk")); + MM.player(damager).sendMessage(getText("error.cant_tag_afk")); event.setCancelled(true); return; } @@ -55,7 +57,7 @@ public void tagPlayer(EntityDamageByEntityEvent event) { Scoreboard sb = Bukkit.getScoreboardManager().getMainScoreboard(); if (sb.getTeam("TaggedTeam") == null) { Team taggedTeam = sb.registerNewTeam("TaggedTeam"); - taggedTeam.color(NamedTextColor.RED); + taggedTeam.setColor(ChatColor.RED); } Team taggedTeam = sb.getTeam("TaggedTeam"); taggedTeam.removeEntry(damager.getName()); @@ -76,7 +78,7 @@ public void tagPlayer(EntityDamageByEntityEvent event) { } if (getConfig().getBoolean("display-when-tagged")) { for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - onlinePlayer.sendMessage(getText("tagged_message", + MM.player(onlinePlayer).sendMessage(getText("tagged_message", insert("tagged_name", player.getName()), insert("tagger_name", damager.getName()))); } @@ -105,7 +107,7 @@ public void onPickup(EntityPickupItemEvent event) { @EventHandler public void onDeath(PlayerDeathEvent event) { - if (!event.getPlayer().getScoreboardTags().contains("tag_it")) return; + if (!event.getEntity().getScoreboardTags().contains("tag_it")) return; event.getDrops().remove(getTagItem()); } @@ -132,7 +134,7 @@ private static Component getTagItemName() { public static ItemStack getTagItem() { ItemStack tag = new ItemStack(Material.NAME_TAG); ItemMeta tagMeta = tag.getItemMeta(); - tagMeta.displayName(getTagItemName()); + tagMeta.setDisplayName(MM.toString(getTagItemName())); tagMeta.setUnbreakable(true); tag.setItemMeta(tagMeta); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java index 91fbba5e..38556b3f 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/thundershrine/Shrine.java @@ -4,6 +4,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.*; @@ -88,7 +89,7 @@ public static void startThunder(Player player, Location loc) { if (!config.getBoolean("summoning.brodcast-message")) return; for (Player oPlayer : Bukkit.getOnlinePlayers()) { - oPlayer.sendMessage(Translatable.get("storm_initialize")); + MM.player(oPlayer).sendMessage(Translatable.get("storm_initialize")); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java index 4fc9cd7d..911923cc 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/hermitcraft/wanderingtrades/MiniBlockTrade.java @@ -2,6 +2,7 @@ import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -46,7 +47,7 @@ public ItemStack getSkull() { field.set(headMeta, profile); } catch (NoSuchFieldException | IllegalArgumentException | IllegalAccessException ignored) {} - headMeta.displayName(MiniMessage.miniMessage().deserialize("" + this.name).decoration(TextDecoration.ITALIC, false)); + headMeta.setDisplayName(MM.toString(MiniMessage.miniMessage().deserialize("" + this.name).decoration(TextDecoration.ITALIC, false))); head.setItemMeta(headMeta); return head; diff --git a/src/main/java/me/teakivy/teakstweaks/packs/items/armoredelytra/ArmoredElytras.java b/src/main/java/me/teakivy/teakstweaks/packs/items/armoredelytra/ArmoredElytras.java index e3b498d7..2903f3ec 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/items/armoredelytra/ArmoredElytras.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/items/armoredelytra/ArmoredElytras.java @@ -4,7 +4,9 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Base64Serializer; +import me.teakivy.teakstweaks.utils.ItemSerializer; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.Component; import org.bukkit.*; import org.bukkit.attribute.Attribute; @@ -29,6 +31,7 @@ import java.util.UUID; public class ArmoredElytras extends BasePack { + // TODO test this public ArmoredElytras() { super("armored-elytra", PackType.ITEMS, Material.ELYTRA); @@ -88,7 +91,7 @@ public void onElytraDrop(PlayerDropItemEvent event) { public void run() { if (event.getItemDrop().getLocation().add(0, -1, 0).getBlock().getType().equals(Material.GRINDSTONE)) { Item item = event.getItemDrop(); - item.remove(); +// item.remove(); item.getWorld().spawnParticle(Particle.FLAME, item.getLocation(), 100, 0, 0, 0, .5); event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.BLOCK_GRINDSTONE_USE, 1, 1); @@ -138,18 +141,18 @@ private ItemStack createArmoredElytra(ItemStack elytra, ItemStack chestplate) { HashMap enchantmentStorage = new HashMap<>(); - Component name = getText("item_name"); + String name = MM.toString(getText("item_name")); if (chestplate.hasItemMeta()) { if (chestplate.getItemMeta().hasDisplayName()) { - name = chestplate.getItemMeta().displayName(); + name = chestplate.getItemMeta().getDisplayName(); } } if (elytra.hasItemMeta()) { if (elytra.getItemMeta().hasDisplayName()) { - name = elytra.getItemMeta().displayName(); + name = elytra.getItemMeta().getDisplayName(); } } - meta.displayName(name); + meta.setDisplayName(name); NamespacedKey key = Key.get("armored_elytra"); meta.getPersistentDataContainer().set(key, PersistentDataType.STRING, "true"); @@ -158,10 +161,10 @@ private ItemStack createArmoredElytra(ItemStack elytra, ItemStack chestplate) { meta.getPersistentDataContainer().set(version_key, PersistentDataType.INTEGER, 2); NamespacedKey chestplate_storage_key = Key.get("chestplate_storage"); - meta.getPersistentDataContainer().set(chestplate_storage_key, PersistentDataType.BYTE_ARRAY, chestplate.serializeAsBytes()); + meta.getPersistentDataContainer().set(chestplate_storage_key, PersistentDataType.BYTE_ARRAY, ItemSerializer.toByteArray(chestplate)); NamespacedKey elytra_storage_key = Key.get("elytra_storage"); - meta.getPersistentDataContainer().set(elytra_storage_key, PersistentDataType.BYTE_ARRAY, elytra.serializeAsBytes()); + meta.getPersistentDataContainer().set(elytra_storage_key, PersistentDataType.BYTE_ARRAY, ItemSerializer.toByteArray(elytra)); chestplate.getEnchantments().forEach((enchantment, integer) -> { @@ -229,7 +232,7 @@ public static ItemStack getB64ChestplateFromArmoredElytra(ItemStack elytra) thro String chestplate = elytra.getItemMeta().getPersistentDataContainer().get(Key.get("chestplate_storage"), PersistentDataType.STRING); return deserializeItem(chestplate); } - return ItemStack.deserializeBytes(elytra.getItemMeta().getPersistentDataContainer().get(Key.get("chestplate_storage"), PersistentDataType.BYTE_ARRAY)); + return ItemSerializer.fromByteArray(elytra.getItemMeta().getPersistentDataContainer().get(Key.get("chestplate_storage"), PersistentDataType.BYTE_ARRAY)); } public static ItemStack getB64ElytraFromArmoredElytra(ItemStack elytra) throws IOException { @@ -239,7 +242,7 @@ public static ItemStack getB64ElytraFromArmoredElytra(ItemStack elytra) throws I String oldElytra = elytra.getItemMeta().getPersistentDataContainer().get(Key.get("elytra_storage"), PersistentDataType.STRING); return deserializeItem(oldElytra); } - return ItemStack.deserializeBytes(elytra.getItemMeta().getPersistentDataContainer().get(Key.get("elytra_storage"), PersistentDataType.BYTE_ARRAY)); + return ItemSerializer.fromByteArray(elytra.getItemMeta().getPersistentDataContainer().get(Key.get("elytra_storage"), PersistentDataType.BYTE_ARRAY)); } public static ItemStack deserializeItem(String serialized) throws IOException { diff --git a/src/main/java/me/teakivy/teakstweaks/packs/items/playerheaddrops/HeadDrop.java b/src/main/java/me/teakivy/teakstweaks/packs/items/playerheaddrops/HeadDrop.java index 3579b025..61a0d2cc 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/items/playerheaddrops/HeadDrop.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/items/playerheaddrops/HeadDrop.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.packs.mobs.moremobheads.MobHeads; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.Sound; @@ -23,7 +24,7 @@ public HeadDrop() { @EventHandler public void onDeath(PlayerDeathEvent event) { - if (!checkPermission(event.getPlayer())) return; + if (!checkPermission(event.getEntity())) return; Player player = event.getEntity(); if (!player.isDead()) return; @@ -39,10 +40,10 @@ public ItemStack getHead(Player player, String killer) { SkullMeta skull = (SkullMeta) item.getItemMeta(); skull.setNoteBlockSound(Sound.ENTITY_PLAYER_HURT.getKey()); - List lore = new ArrayList<>(); + List lore = new ArrayList<>(); if (getConfig().getBoolean("display-killer")) - lore.add(getText("lore", insert("player", killer))); - skull.lore(lore); + lore.add(MM.toString(getText("lore", insert("player", killer)))); + skull.setLore(lore); skull.setOwningPlayer(player); item.setItemMeta(skull); return item; diff --git a/src/main/java/me/teakivy/teakstweaks/packs/items/rotationwrench/Wrench.java b/src/main/java/me/teakivy/teakstweaks/packs/items/rotationwrench/Wrench.java index 9b0ebffd..478488c0 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/items/rotationwrench/Wrench.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/items/rotationwrench/Wrench.java @@ -4,6 +4,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -44,7 +45,7 @@ public void init() { meta.setUnbreakable(true); meta.setCustomModelData(4321); result.setDurability((short) 1); - meta.displayName(getText("item_name")); + meta.setDisplayName(MM.toString(getText("item_name"))); result.setItemMeta(meta); ShapedRecipe recipe = new ShapedRecipe(key, result); @@ -69,8 +70,9 @@ public void onUse(PlayerInteractEvent event) { ItemStack item = event.getItem(); if (item == null) return; if (!item.hasItemMeta()) return; - if (item.getItemMeta().displayName() == null) return; - if (!Objects.equals(Objects.requireNonNull(item.getItemMeta()).displayName(), getText("item_name"))) return; + if (item.getItemMeta() == null) return; + if (item.getItemMeta().getDisplayName() == null) return; + if (!Objects.equals(Objects.requireNonNull(item.getItemMeta()).getDisplayName(), getText("item_name"))) return; if (item.getType() != Material.CARROT_ON_A_STICK) return; if (!item.getItemMeta().isUnbreakable()) return; if (event.getPlayer().getVehicle() != null) event.setCancelled(true); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/countmobdeaths/CountDeaths.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/countmobdeaths/CountDeaths.java index a56b9b33..02c1f660 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/countmobdeaths/CountDeaths.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/countmobdeaths/CountDeaths.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Material; import org.bukkit.entity.EntityType; @@ -23,12 +24,12 @@ public CountDeaths() { @EventHandler public void onDeath(EntityDeathEvent event) { if (event.getEntity().getType() == EntityType.PLAYER) return; - if (event.getEntity().customName() == null) return; + if (event.getEntity().getCustomName() == null) return; if (objective == null) { Scoreboard board = Objects.requireNonNull(event.getEntity().getServer().getScoreboardManager()).getMainScoreboard(); if (board.getObjective("mobDeathCount") == null) { - board.registerNewObjective("mobDeathCount", "dummy", getText("objective_name")); + board.registerNewObjective("mobDeathCount", "dummy", MM.toString(getText("objective_name"))); } objective = board.getObjective("mobDeathCount"); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java index b41ea5e7..5043e530 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/BaseMobHead.java @@ -1,7 +1,10 @@ package me.teakivy.teakstweaks.packs.mobs.moremobheads; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; +import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import org.apache.commons.lang3.text.WordUtils; @@ -94,7 +97,8 @@ public ItemStack createHead(String name, String texture) { ItemStack head = new ItemStack(Material.PLAYER_HEAD); PlayerProfile profile = Bukkit.createPlayerProfile(UUID.fromString("fdb5599c-1b14-440e-82df-d69719703d21"), "MobHead"); SkullMeta meta = (SkullMeta)head.getItemMeta(); - meta.displayName(MiniMessage.miniMessage().deserialize("" + name.replace(" Head", "'s Head")).decoration(TextDecoration.ITALIC, false)); + Component c = MiniMessage.miniMessage().deserialize("" + name.replace(" Head", "'s Head")).decoration(TextDecoration.ITALIC, false); + meta.setDisplayName(MM.toString(c)); PlayerTextures textures = profile.getTextures(); try { diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/CatHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/CatHead.java index 6bc268c2..4ffca66d 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/CatHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/CatHead.java @@ -6,6 +6,8 @@ import org.bukkit.entity.EntityType; import org.bukkit.event.entity.EntityDeathEvent; +import java.util.Objects; + public class CatHead extends BaseMobHead { public CatHead() { @@ -28,7 +30,7 @@ public CatHead() { public String getTexture(EntityDeathEvent event) { Cat cat = (Cat) event.getEntity(); - String key = switch (cat.getCatType()) { + String key = switch (Objects.requireNonNull(CatType.fromType(cat.getCatType()))) { case CALICO -> "calico"; case JELLIE -> "jellie"; case SIAMESE -> "siamese"; @@ -51,7 +53,7 @@ public String getName(EntityDeathEvent event) { String name = ""; - switch (cat.getCatType()) { + switch (Objects.requireNonNull(CatType.fromType(cat.getCatType()))) { case CALICO -> name = "Calico"; case JELLIE -> name = "Jellie"; case SIAMESE -> name = "Siamese"; @@ -67,4 +69,35 @@ public String getName(EntityDeathEvent event) { return name + " Cat"; } + + protected enum CatType { + CALICO(Cat.Type.CALICO), + JELLIE(Cat.Type.JELLIE), + SIAMESE(Cat.Type.SIAMESE), + PERSIAN(Cat.Type.PERSIAN), + BRITISH_SHORTHAIR(Cat.Type.BRITISH_SHORTHAIR), + TABBY(Cat.Type.TABBY), + BLACK(Cat.Type.BLACK), + RED(Cat.Type.RED), + RAGDOLL(Cat.Type.RAGDOLL), + WHITE(Cat.Type.WHITE), + ALL_BLACK(Cat.Type.ALL_BLACK); + + private final Cat.Type type; + + CatType(Cat.Type type) { + this.type = type; + } + + public Cat.Type getType() { + return type; + } + + public static CatType fromType(Cat.Type type) { + for (CatType value : values()) { + if (value.type == type) return value; + } + return null; + } + } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/FrogHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/FrogHead.java index 78fe28de..18595af1 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/FrogHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/FrogHead.java @@ -6,6 +6,8 @@ import org.bukkit.entity.Frog; import org.bukkit.event.entity.EntityDeathEvent; +import java.util.Objects; + public class FrogHead extends BaseMobHead { public FrogHead() { @@ -20,7 +22,7 @@ public FrogHead() { public String getTexture(EntityDeathEvent event) { Frog frog = (Frog) event.getEntity(); - String key = switch (frog.getVariant()) { + String key = switch (Objects.requireNonNull(FrogVariant.fromVariant(frog.getVariant()))) { case WARM -> "warm"; case TEMPERATE -> "temperate"; case COLD -> "cold"; @@ -33,7 +35,7 @@ public String getTexture(EntityDeathEvent event) { public String getName(EntityDeathEvent event) { Frog frog = (Frog) event.getEntity(); - String key = switch (frog.getVariant()) { + String key = switch (Objects.requireNonNull(FrogVariant.fromVariant(frog.getVariant()))) { case WARM -> "Warm"; case TEMPERATE -> "Temperate"; case COLD -> "Cold"; @@ -41,4 +43,27 @@ public String getName(EntityDeathEvent event) { return key + " Frog"; } + + protected enum FrogVariant { + WARM(Frog.Variant.WARM), + TEMPERATE(Frog.Variant.TEMPERATE), + COLD(Frog.Variant.COLD); + + private final Frog.Variant variant; + + FrogVariant(Frog.Variant profession) { + this.variant = profession; + } + + public Frog.Variant getVariant() { + return variant; + } + + public static FrogVariant fromVariant(Frog.Variant variant) { + for (FrogVariant value : values()) { + if (value.variant == variant) return value; + } + return null; + } + } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/VillagerHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/VillagerHead.java index 95fa55a9..46018efd 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/VillagerHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/VillagerHead.java @@ -6,6 +6,8 @@ import org.bukkit.entity.Villager; import org.bukkit.event.entity.EntityDeathEvent; +import java.util.Objects; + public class VillagerHead extends BaseMobHead { public VillagerHead() { @@ -32,7 +34,7 @@ public VillagerHead() { public String getTexture(EntityDeathEvent event) { Villager villager = (Villager) event.getEntity(); - String key = switch (villager.getProfession()) { + String key = switch (Objects.requireNonNull(VillagerProfession.fromProfession(villager.getProfession()))) { case ARMORER -> "armorer"; case BUTCHER -> "butcher"; case CARTOGRAPHER -> "cartographer"; @@ -57,7 +59,8 @@ public String getTexture(EntityDeathEvent event) { public String getName(EntityDeathEvent event) { Villager villager = (Villager) event.getEntity(); - String name = switch (villager.getProfession()) { + + String name = switch (Objects.requireNonNull(VillagerProfession.fromProfession(villager.getProfession()))) { case ARMORER -> "Armorer"; case BUTCHER -> "Butcher"; case CARTOGRAPHER -> "Cartographer"; @@ -77,4 +80,39 @@ public String getName(EntityDeathEvent event) { return name + " Villager"; } + + protected enum VillagerProfession { + ARMORER(Villager.Profession.ARMORER), + BUTCHER(Villager.Profession.BUTCHER), + CARTOGRAPHER(Villager.Profession.CARTOGRAPHER), + CLERIC(Villager.Profession.CLERIC), + FARMER(Villager.Profession.FARMER), + FISHERMAN(Villager.Profession.FISHERMAN), + FLETCHER(Villager.Profession.FLETCHER), + LEATHERWORKER(Villager.Profession.LEATHERWORKER), + LIBRARIAN(Villager.Profession.LIBRARIAN), + MASON(Villager.Profession.MASON), + NITWIT(Villager.Profession.NITWIT), + SHEPHERD(Villager.Profession.SHEPHERD), + TOOLSMITH(Villager.Profession.TOOLSMITH), + WEAPONSMITH(Villager.Profession.WEAPONSMITH), + NONE(Villager.Profession.NONE); + + private final Villager.Profession profession; + + VillagerProfession(Villager.Profession profession) { + this.profession = profession; + } + + public Villager.Profession getProfession() { + return profession; + } + + public static VillagerProfession fromProfession(Villager.Profession profession) { + for (VillagerProfession value : values()) { + if (value.profession == profession) return value; + } + return null; + } + } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/ZombieVillagerHead.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/ZombieVillagerHead.java index a508180a..406ae25f 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/ZombieVillagerHead.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/moremobheads/mobs/ZombieVillagerHead.java @@ -37,7 +37,7 @@ public String getTexture(EntityDeathEvent event) { if (profession == null) { return textures.get("unemployed"); } - String key = switch (villager.getVillagerProfession()) { + String key = switch (VillagerProfession.fromProfession(villager.getVillagerProfession())) { case ARMORER -> "armorer"; case BUTCHER -> "butcher"; case CARTOGRAPHER -> "cartographer"; @@ -66,7 +66,7 @@ public String getName(EntityDeathEvent event) { if (profession == null) { return "Unemployed Zombie Villager"; } - String name = switch (villager.getVillagerProfession()) { + String name = switch (VillagerProfession.fromProfession(villager.getVillagerProfession())) { case ARMORER -> "Armorer"; case BUTCHER -> "Butcher"; case CARTOGRAPHER -> "Cartographer"; @@ -86,4 +86,39 @@ public String getName(EntityDeathEvent event) { return name + " Zombie Villager"; } + + protected enum VillagerProfession { + ARMORER(Villager.Profession.ARMORER), + BUTCHER(Villager.Profession.BUTCHER), + CARTOGRAPHER(Villager.Profession.CARTOGRAPHER), + CLERIC(Villager.Profession.CLERIC), + FARMER(Villager.Profession.FARMER), + FISHERMAN(Villager.Profession.FISHERMAN), + FLETCHER(Villager.Profession.FLETCHER), + LEATHERWORKER(Villager.Profession.LEATHERWORKER), + LIBRARIAN(Villager.Profession.LIBRARIAN), + MASON(Villager.Profession.MASON), + NITWIT(Villager.Profession.NITWIT), + SHEPHERD(Villager.Profession.SHEPHERD), + TOOLSMITH(Villager.Profession.TOOLSMITH), + WEAPONSMITH(Villager.Profession.WEAPONSMITH), + NONE(Villager.Profession.NONE); + + private final Villager.Profession profession; + + VillagerProfession(Villager.Profession profession) { + this.profession = profession; + } + + public Villager.Profession getProfession() { + return profession; + } + + public static VillagerProfession fromProfession(Villager.Profession profession) { + for (VillagerProfession value : values()) { + if (value.profession == profession) return value; + } + return null; + } + } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/silencemobs/Silencer.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/silencemobs/Silencer.java index 0f26bf53..3c74cea6 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/silencemobs/Silencer.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/silencemobs/Silencer.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -46,14 +47,14 @@ public void onSilence(PlayerInteractAtEntityEvent event) { ItemStack nametag = event.getPlayer().getInventory().getItem(event.getHand()); if (nametag.getType() != Material.NAME_TAG) return; if (!nametag.hasItemMeta()) return; - if (!MiniMessage.miniMessage().serialize(Objects.requireNonNull(nametag.getItemMeta()).displayName()) + if (!Objects.requireNonNull(nametag.getItemMeta()).getDisplayName() .replaceAll("_", " ") .replaceAll("-", " ") .trim() .equalsIgnoreCase(getString("activation_name"))) return; entity.setSilent(true); - entity.customName(getText("silenced_name")); + entity.setCustomName(MM.toString(getText("silenced_name"))); event.setCancelled(true); if (event.getPlayer().getGameMode() != GameMode.CREATIVE) { @@ -66,13 +67,13 @@ public void onSilence(PlayerInteractAtEntityEvent event) { Bukkit.getScheduler().scheduleSyncDelayedTask(TeaksTweaks.getInstance(), () -> { Entity entity1 = getEntityByUniqueId(entity.getUniqueId()); if (entity1 == null) return; - if (entity1.customName() == null) return; - if (MiniMessage.miniMessage().serialize(entity1.customName()).replaceAll("_", " ") + if (entity1.getCustomName() == null) return; + if (entity1.getCustomName().replaceAll("_", " ") .replaceAll("-", " ") .trim() .equalsIgnoreCase(getString("activation_name"))) { entity.setSilent(true); - entity.customName(getText("silenced_name")); + entity.setCustomName(MM.toString(getText("silenced_name"))); } }, 10L); } catch (NoClassDefFoundError ignored) { diff --git a/src/main/java/me/teakivy/teakstweaks/packs/mobs/villagerdeathmessages/VillagerDeath.java b/src/main/java/me/teakivy/teakstweaks/packs/mobs/villagerdeathmessages/VillagerDeath.java index 0295237e..6d06e053 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/mobs/villagerdeathmessages/VillagerDeath.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/mobs/villagerdeathmessages/VillagerDeath.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.Component; import org.bukkit.*; import org.bukkit.entity.EntityType; @@ -28,7 +29,7 @@ public void onMobDeath(EntityDeathEvent event) { if (getConfig().getBoolean("show-in-chat")) { for (Player player : Bukkit.getOnlinePlayers()) { - player.sendMessage(deathMessage); + player.sendMessage(MM.toString(deathMessage)); } return; } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java index 26685758..95e677be 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/afkdisplay/AFK.java @@ -4,11 +4,11 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -49,9 +49,9 @@ public void register() { kickAfter = getConfig().getInt("kick-after"); if (getConfig().getBoolean("display-badge")) { - afkTeam.prefix(newText(getConfig().getString("badge"))); + afkTeam.setPrefix(MM.toString(newText(getConfig().getString("badge")))); } else { - afkTeam.prefix(Component.empty()); + afkTeam.setPrefix(""); } for (Player player : Bukkit.getOnlinePlayers()) { @@ -78,11 +78,11 @@ public void register() { } else { if (player != null) { if (kickAfter == 0) { - player.kick(newText(getConfig().getString("kick-message"))); + player.kickPlayer(MM.toString(newText(getConfig().getString("kick-message")))); } if (kickAfter > 0) { if (lastMove.get(uuid) + (afkMinutes * 60 * 1000) + (kickAfter * 60 * 1000) < System.currentTimeMillis()) { - player.kick(newText(getConfig().getString("kick-message"))); + player.kickPlayer(MM.toString(newText(getConfig().getString("kick-message")))); } } } @@ -100,29 +100,29 @@ public static void registerTeam() { afkTeam = sb.getTeam("AFK"); return; } - afk.color(getColor(color)); + afk.setColor(getColor(color)); } afkTeam = sb.getTeam("AFK"); } - public static NamedTextColor getColor(String color) { + public static ChatColor getColor(String color) { return switch (color) { - case "black" -> NamedTextColor.BLACK; - case "dark_blue" -> NamedTextColor.DARK_BLUE; - case "dark_green" -> NamedTextColor.DARK_GREEN; - case "dark_aqua" -> NamedTextColor.DARK_AQUA; - case "dark_red" -> NamedTextColor.DARK_RED; - case "dark_purple" -> NamedTextColor.DARK_PURPLE; - case "gold" -> NamedTextColor.GOLD; - case "gray" -> NamedTextColor.GRAY; - case "dark_gray" -> NamedTextColor.DARK_GRAY; - case "blue" -> NamedTextColor.BLUE; - case "green" -> NamedTextColor.GREEN; - case "aqua" -> NamedTextColor.AQUA; - case "red" -> NamedTextColor.RED; - case "light_purple" -> NamedTextColor.LIGHT_PURPLE; - case "yellow" -> NamedTextColor.YELLOW; - default -> NamedTextColor.WHITE; + case "black" -> ChatColor.BLACK; + case "dark_blue" -> ChatColor.DARK_BLUE; + case "dark_green" -> ChatColor.DARK_GREEN; + case "dark_aqua" -> ChatColor.DARK_AQUA; + case "dark_red" -> ChatColor.DARK_RED; + case "dark_purple" -> ChatColor.DARK_PURPLE; + case "gold" -> ChatColor.GOLD; + case "gray" -> ChatColor.GRAY; + case "dark_gray" -> ChatColor.DARK_GRAY; + case "blue" -> ChatColor.BLUE; + case "green" -> ChatColor.GREEN; + case "aqua" -> ChatColor.AQUA; + case "red" -> ChatColor.RED; + case "light_purple" -> ChatColor.LIGHT_PURPLE; + case "yellow" -> ChatColor.YELLOW; + default -> ChatColor.WHITE; }; } @@ -162,12 +162,12 @@ public static void unAFK(Player player) { public static void displayAFKMessage(Player player, Boolean isAFK) { if (isAFK) { if (Config.getBoolean("packs.afk-display.message.display-to-self")) { - player.sendMessage(Translatable.get("afk_display.self_now_afk")); + MM.player(player).sendMessage(Translatable.get("afk_display.self_now_afk")); } if (Config.getBoolean("packs.afk-display.message.display-to-everyone")) { for (Player player1 : Bukkit.getOnlinePlayers()) { if (player1.getUniqueId() != player.getUniqueId()) { - player1.sendMessage(Translatable.get("afk_display.other_now_afk", insert("player", player.getName()))); + MM.player(player1).sendMessage(Translatable.get("afk_display.other_now_afk", insert("player", player.getName()))); } } } @@ -176,12 +176,12 @@ public static void displayAFKMessage(Player player, Boolean isAFK) { } } else { if (Config.getBoolean("packs.afk-display.message.display-to-self")) { - player.sendMessage(Translatable.get("afk_display.self_not_afk")); + MM.player(player).sendMessage(Translatable.get("afk_display.self_not_afk")); } if (Config.getBoolean("packs.afk-display.message.display-to-everyone")) { for (Player player1 : Bukkit.getOnlinePlayers()) { if (player1.getUniqueId() != player.getUniqueId()) { - player1.sendMessage(Translatable.get("afk_display.other_not_afk", insert("player", player.getName()))); + MM.player(player1).sendMessage(Translatable.get("afk_display.other_not_afk", insert("player", player.getName()))); } } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java index 4f61a50e..fbdaf2b1 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/coordshud/DisplayHud.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.packs.survival.coordshud; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -33,7 +34,7 @@ public static void showHud(Player player) { String directionAbbr = getDirectionAbbr(playerDirection); String worldTime = getWorldTime(); - player.sendActionBar(MiniMessage.miniMessage().deserialize( + MM.player(player).sendActionBar(MiniMessage.miniMessage().deserialize( hudMessage, Placeholder.parsed("x", loc.getBlockX() + ""), Placeholder.parsed("y", loc.getBlockY() + ""), diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java index 9afdb277..69088d32 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/durabilityping/DuraPing.java @@ -2,12 +2,11 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; import net.kyori.adventure.title.TitlePart; -import net.md_5.bungee.api.ChatMessageType; -import net.md_5.bungee.api.chat.ComponentBuilder; import org.apache.commons.lang3.text.WordUtils; import org.bukkit.Material; import org.bukkit.Sound; @@ -106,18 +105,18 @@ public static void pingPlayer(Player player, ItemStack item, float durability, S } if (style.equalsIgnoreCase("hidden")) return; if (style.equalsIgnoreCase("subtitle")) { - player.sendTitlePart(TitlePart.TITLE, getDurabilityMessage("ping.subtitle.title", item, durability, maxDurability)); - player.sendTitlePart(TitlePart.SUBTITLE, getDurabilityMessage("ping.subtitle.subtitle", item, durability, maxDurability)); + MM.player(player).sendTitlePart(TitlePart.TITLE, getDurabilityMessage("ping.subtitle.title", item, durability, maxDurability)); + MM.player(player).sendTitlePart(TitlePart.SUBTITLE, getDurabilityMessage("ping.subtitle.subtitle", item, durability, maxDurability)); } if (style.equalsIgnoreCase("title")) { - player.sendTitlePart(TitlePart.TITLE, getDurabilityMessage("ping.title.title", item, durability, maxDurability)); - player.sendTitlePart(TitlePart.SUBTITLE, getDurabilityMessage("ping.title.subtitle", item, durability, maxDurability)); + MM.player(player).sendTitlePart(TitlePart.TITLE, getDurabilityMessage("ping.title.title", item, durability, maxDurability)); + MM.player(player).sendTitlePart(TitlePart.SUBTITLE, getDurabilityMessage("ping.title.subtitle", item, durability, maxDurability)); } if (style.equalsIgnoreCase("chat")) { - player.sendMessage(getDurabilityMessage("ping.chat.message", item, durability, maxDurability)); + MM.player(player).sendMessage(getDurabilityMessage("ping.chat.message", item, durability, maxDurability)); } if (style.equalsIgnoreCase("actionbar")) { - player.sendActionBar(getDurabilityMessage("ping.actionbar.message", item, durability, maxDurability)); + MM.player(player).sendActionBar(getDurabilityMessage("ping.actionbar.message", item, durability, maxDurability)); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveEvents.java b/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveEvents.java index a723ff41..cbf955a1 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveEvents.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/survival/graves/GraveEvents.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.XPUtils; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; @@ -92,7 +93,7 @@ public void onInteract(PlayerInteractAtEntityEvent event) throws IOException { } return; } else { - event.getPlayer().sendMessage(getText("cant_rob_grave")); + MM.player(event.getPlayer()).sendMessage(getText("cant_rob_grave")); } } event.setCancelled(true); @@ -117,7 +118,7 @@ public void onPickUp(InventoryPickupItemEvent event) { @EventHandler public void onDeath(PlayerDeathEvent event) throws IOException { if (!getConfig().getBoolean("generate-in-lava")) { - if (event.getPlayer().getLocation().getBlock().getType() == Material.LAVA || event.getPlayer().getLocation().getBlock().getType() == Material.LAVA_CAULDRON) { + if (event.getEntity().getLocation().getBlock().getType() == Material.LAVA || event.getEntity().getLocation().getBlock().getType() == Material.LAVA_CAULDRON) { return; } } @@ -164,7 +165,7 @@ public void onDeath(PlayerDeathEvent event) throws IOException { insert("y", (int) Math.floor(loc.getY())), insert("z", (int) Math.floor(loc.getZ())), insert("world", loc.getWorld().getName())); - player.sendMessage(lastGrave); + MM.player(player).sendMessage(lastGrave); PersistentDataContainer playerData = player.getPersistentDataContainer(); playerData.set(Key.get("graves_last"), PersistentDataType.STRING, MiniMessage.miniMessage().serialize(lastGrave)); } @@ -192,12 +193,12 @@ public boolean holdingKey(Player player) { public static ItemStack getGraveKey() { ItemStack graveKey = new ItemStack(Material.TRIPWIRE_HOOK); ItemMeta keyMeta = graveKey.getItemMeta(); - keyMeta.displayName(Translatable.get("graves.key.item_name")); + keyMeta.setDisplayName(MM.toString(Translatable.get("graves.key.item_name"))); graveKey.addUnsafeEnchantment(Enchantment.CHANNELING, 1); keyMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS); - List lore = new ArrayList<>(); - lore.add(Translatable.get("graves.key.item_lore")); - keyMeta.lore(lore); + List lore = new ArrayList<>(); + lore.add(MM.toString(Translatable.get("graves.key.item_lore"))); + keyMeta.setLore(lore); graveKey.setItemMeta(keyMeta); return graveKey; } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/chatcolors/ChatColors.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/chatcolors/ChatColors.java index 93637f5f..7d89317f 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/chatcolors/ChatColors.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/chatcolors/ChatColors.java @@ -1,8 +1,8 @@ package me.teakivy.teakstweaks.packs.teakstweaks.chatcolors; -import io.papermc.paper.event.player.AsyncChatEvent; import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Material; @@ -10,6 +10,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.inventory.PrepareAnvilEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -20,11 +21,11 @@ public ChatColors() { } @EventHandler - public void onChat(AsyncChatEvent event) { + public void onChat(AsyncPlayerChatEvent event) { if (!getConfig().getBoolean("chat")) return; if (!checkPermission(event.getPlayer())) return; - event.message(legacyToMiniMessage(event.message())); + event.setMessage(MM.toString(legacyToMiniMessage(newText(event.getMessage())))); } @EventHandler @@ -39,7 +40,7 @@ private void onAnvil(PrepareAnvilEvent event) { if (meta == null) return; if (!meta.hasDisplayName()) return; - meta.displayName(legacyToMiniMessage(meta.displayName())); + meta.setDisplayName(MM.toString(legacyToMiniMessage(newText(meta.getDisplayName())))); result.setItemMeta(meta); event.setResult(result); } @@ -49,9 +50,9 @@ public void onSign(SignChangeEvent event) { if (!getConfig().getBoolean("signs")) return; if (!checkPermission(event.getPlayer())) return; - for (int i = 0; i < event.lines().size(); i++) { - if (event.line(i) == null) continue; - event.line(i, legacyToMiniMessage(event.line(i))); + for (int i = 0; i < event.getLines().length; i++) { + if (event.getLine(i) == null) continue; + event.setLine(i, MM.toString(legacyToMiniMessage(newText(event.getLine(i))))); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/keepsmall/KeepSmall.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/keepsmall/KeepSmall.java index 1fae6e77..864201d7 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/keepsmall/KeepSmall.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/keepsmall/KeepSmall.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -28,8 +29,8 @@ public void onSilence(PlayerInteractAtEntityEvent event) { Bukkit.getScheduler().scheduleSyncDelayedTask(TeaksTweaks.getInstance(), () -> { Entity entity1 = getEntityByUniqueId(entity.getUniqueId()); if (entity1 == null) return; - if (entity1.customName() == null) return; - if (MiniMessage.miniMessage().serialize(entity1.customName()).replaceAll("_", " ") + if (entity1.getCustomName() == null) return; + if (entity1.getCustomName().replaceAll("_", " ") .replaceAll("-", " ") .trim() .equalsIgnoreCase(getString("smallify.activation_name"))) { @@ -38,9 +39,9 @@ public void onSilence(PlayerInteractAtEntityEvent event) { Ageable ageable = (Ageable) entity1; ageable.setAge(-Integer.MAX_VALUE); } - entity.customName(getText("smallify.small_name")); + entity.setCustomName(MM.toString(getText("smallify.small_name"))); } - if (MiniMessage.miniMessage().serialize(entity1.customName()).replaceAll("_", " ") + if (entity1.getCustomName().replaceAll("_", " ") .replaceAll("-", " ") .trim() .equalsIgnoreCase(getString("grow.activation_name"))) { @@ -49,7 +50,7 @@ public void onSilence(PlayerInteractAtEntityEvent event) { Ageable ageable = (Ageable) entity1; ageable.setAge(1); } - entity.customName(getText("grow.grown_name")); + entity.setCustomName(MM.toString(getText("grow.grown_name"))); } }, 10L); } catch (NoClassDefFoundError ignored) {} diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/quickcommands/ReplyQuickCommand.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/quickcommands/ReplyQuickCommand.java index c293510b..45075b40 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/quickcommands/ReplyQuickCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/quickcommands/ReplyQuickCommand.java @@ -1,5 +1,6 @@ package me.teakivy.teakstweaks.packs.teakstweaks.quickcommands; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.command.*; import me.teakivy.teakstweaks.utils.ErrorType; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -40,7 +41,7 @@ public void playerCommand(PlayerCommandEvent event) { message.append(event.getArg(i)).append(" "); } - target.sendMessage(get("quick_commands.message.whisper_to_you", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString()))); + MM.player(target).sendMessage(get("quick_commands.message.whisper_to_you", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString()))); sendMessage("whisper_to_player", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString())); lastMessage.put(player.getUniqueId(), target.getUniqueId()); @@ -89,7 +90,7 @@ public void playerCommand(PlayerCommandEvent event) { message.append(arg).append(" "); } - target.sendMessage(get("quick_commands.message.whisper_to_you", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString()))); + MM.player(target).sendMessage(get("quick_commands.message.whisper_to_you", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString()))); sendMessage(get("quick_commands.message.whisper_to_player", Placeholder.parsed("player", player.getName()), Placeholder.parsed("message", message.toString()))); lastMessage.put(player.getUniqueId(), targetUUID); diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sleepyspidereggs/SleepySpiderEggs.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sleepyspidereggs/SleepySpiderEggs.java index 33790a27..d169b866 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sleepyspidereggs/SleepySpiderEggs.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sleepyspidereggs/SleepySpiderEggs.java @@ -17,12 +17,16 @@ public SleepySpiderEggs() { @EventHandler public void onSleep(PlayerBedLeaveEvent event) { Player player = event.getPlayer(); - if (!player.getWorld().isDayTime()) return; + if (!isDayTime(player.getWorld().getTime())) return; - player.getLocation().getNearbyEntities(10, 10, 10).forEach(entity -> { + player.getWorld().getNearbyEntities(player.getLocation(), 10, 10, 10).forEach(entity -> { if (entity.getType() != EntityType.SPIDER) return; player.setExp(player.getExp() + (int) (Math.random() * 5) + 1); }); } + + public boolean isDayTime(long time) { + return time > 0 && time < 12300; + } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/spectatoralts/SpectatorAlts.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/spectatoralts/SpectatorAlts.java index 1f3a65ce..e4432024 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/spectatoralts/SpectatorAlts.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/spectatoralts/SpectatorAlts.java @@ -100,7 +100,7 @@ public static void removeAlt(UUID alt) { JsonManager.saveToFile(map, "data/alts.json"); if (Bukkit.getPlayer(alt) != null) { - Bukkit.getPlayer(alt).kick(); + Bukkit.getPlayer(alt).kickPlayer(""); } } @@ -129,7 +129,7 @@ public void onTeleport(PlayerTeleportEvent event) { if (getConfig().getBoolean("allow-player-teleport")) return; if (!alts.containsKey(player.getUniqueId())) return; - for (Entity entity : event.getTo().getNearbyEntities(10, 10, 10)) { + for (Entity entity : event.getTo().getWorld().getNearbyEntities(event.getTo(), 10, 10, 10)) { if (!(entity instanceof Player)) continue; if (entity.getUniqueId().equals(alts.get(player.getUniqueId()))) return; } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/stairchairs/StairChairs.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/stairchairs/StairChairs.java index 838a54a8..cb1cfb70 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/stairchairs/StairChairs.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/stairchairs/StairChairs.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import org.bukkit.Color; import org.bukkit.Location; import org.bukkit.Material; @@ -47,7 +48,7 @@ public void onChairMaker(PlayerInteractEvent event) { Marker marker = (Marker) Objects.requireNonNull(loc.getWorld()).spawnEntity(loc, EntityType.MARKER); marker.addScoreboardTag("chair"); - event.getPlayer().sendMessage(getText("chair_created")); + MM.player(event.getPlayer()).sendMessage(getText("chair_created")); } public boolean isChair(Location loc) { @@ -69,7 +70,7 @@ public void onChairDestroy(BlockBreakEvent event) { } } event.getBlock().getWorld().dropItem(loc.add(.5, .5, .5), new ItemStack(Material.SADDLE)); - event.getPlayer().sendMessage(getText("chair_destroyed")); + MM.player(event.getPlayer()).sendMessage(getText("chair_destroyed")); } @EventHandler diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sudoku/Sudoku.java b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sudoku/Sudoku.java index 91e988ff..a53cc57a 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sudoku/Sudoku.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teakstweaks/sudoku/Sudoku.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.PlayerDeathEvent; @@ -15,7 +16,7 @@ public Sudoku() { @EventHandler public void onDeath(PlayerDeathEvent event) { if (!event.getEntity().getScoreboardTags().contains("sudoku-message")) return; - event.deathMessage(getText("death_message", insert("player", event.getEntity().getName()))); + event.setDeathMessage(MM.toString(getText("death_message", insert("player", event.getEntity().getName())))); event.getEntity().getScoreboardTags().remove("sudoku-message"); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/back/Back.java b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/back/Back.java index be912cfd..b3661e90 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/back/Back.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/back/Back.java @@ -3,6 +3,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.ErrorType; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.Location; import org.bukkit.Material; @@ -23,13 +24,13 @@ public Back() { public static void tpBack(Player player) { if (!player.hasPermission("teakstweaks.back")) { - player.sendMessage(ErrorType.MISSING_PERMISSION.m()); + MM.player(player).sendMessage(ErrorType.MISSING_PERMISSION.m()); return; } if (backLoc.containsKey(player.getUniqueId())) { player.teleport(backLoc.get(player.getUniqueId())); } else { - player.sendMessage(Translatable.get("back.error.no_back_location")); + MM.player(player).sendMessage(Translatable.get("back.error.no_back_location")); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/Home.java b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/Home.java index aba8be64..4dfe27bd 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/Home.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/teleportation/homes/Home.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.packs.teleportation.homes; import me.teakivy.teakstweaks.utils.Key; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Bukkit; @@ -57,12 +58,12 @@ public void teleport() { if (player == null) return; if (HomesPack.onCooldown(player)) { - player.sendMessage(Translatable.get("homes.error.on_cooldown", Placeholder.parsed("time", HomesPack.getCooldown(player) + ""))); + MM.player(player).sendMessage(Translatable.get("homes.error.on_cooldown", Placeholder.parsed("time", HomesPack.getCooldown(player) + ""))); return; } player.teleport(loc); - player.sendMessage(Translatable.get("homes.teleported", Placeholder.parsed("home", name))); + MM.player(player).sendMessage(Translatable.get("homes.teleported", Placeholder.parsed("home", name))); } public void delete() { diff --git a/src/main/java/me/teakivy/teakstweaks/packs/utilities/itemaverages/ItemTracker.java b/src/main/java/me/teakivy/teakstweaks/packs/utilities/itemaverages/ItemTracker.java index f2c26829..f85faf3d 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/utilities/itemaverages/ItemTracker.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/utilities/itemaverages/ItemTracker.java @@ -4,6 +4,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -95,19 +96,19 @@ private static void sendTotaledMessage(Player player, HashMap }); if (!totalItems.isEmpty()) { - player.sendMessage(newText("-------------------------")); - player.sendMessage(Translatable.get("item_averages.source_production")); + MM.player(player).sendMessage(newText("-------------------------")); + MM.player(player).sendMessage(Translatable.get("item_averages.source_production")); totalItems.forEach((item, amount) -> { - player.sendMessage( + MM.player(player).sendMessage( Translatable.get("item_averages.item", insert("amount", amount), insert("item", item.toString().toLowerCase().replace("_", " ")))); }); - player.sendMessage(newText("-------------------------")); + MM.player(player).sendMessage(newText("-------------------------")); } else { - player.sendMessage(newText("-------------------------")); - player.sendMessage(Translatable.get("item_averages.no_items")); - player.sendMessage(newText("-------------------------")); + MM.player(player).sendMessage(newText("-------------------------")); + MM.player(player).sendMessage(Translatable.get("item_averages.no_items")); + MM.player(player).sendMessage(newText("-------------------------")); } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SpawningSphere.java b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SpawningSphere.java index 0a8a4c12..b93dd2d4 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SpawningSphere.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SpawningSphere.java @@ -1,5 +1,6 @@ package me.teakivy.teakstweaks.packs.utilities.spawningspheres; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -79,7 +80,7 @@ private void summonStand(Location location, SphereIO sphereIO, boolean isCenter) stand.addPotionEffect(new PotionEffect(PotionEffectType.GLOWING, 999999, 0)); if (isCenter) { - stand.customName(Translatable.get("spawning_spheres.center_stand")); + stand.setCustomName(MM.toString(Translatable.get("spawning_spheres.center_stand"))); stand.setCustomNameVisible(true); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SphereType.java b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SphereType.java index 09f6eb69..f1d6a026 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SphereType.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spawningspheres/SphereType.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.scoreboard.Scoreboard; import org.bukkit.scoreboard.Team; @@ -78,21 +79,21 @@ public Team getTeam() { case RED -> { if (sb.getTeam("sphere_red") == null) { Team tTeam = sb.registerNewTeam("sphere_red"); - tTeam.color(NamedTextColor.RED); + tTeam.setColor(ChatColor.RED); } yield sb.getTeam("sphere_red"); } case BLUE -> { if (sb.getTeam("sphere_blue") == null) { Team tTeam = sb.registerNewTeam("sphere_blue"); - tTeam.color(NamedTextColor.BLUE); + tTeam.setColor(ChatColor.BLUE); } yield sb.getTeam("sphere_blue"); } case GREEN -> { if (sb.getTeam("sphere_green") == null) { Team tTeam = sb.registerNewTeam("sphere_green"); - tTeam.color(NamedTextColor.GREEN); + tTeam.setColor(ChatColor.GREEN); } yield sb.getTeam("sphere_green"); } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatorconduitpower/ConduitPower.java b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatorconduitpower/ConduitPower.java index a7723cdc..e98a30ed 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatorconduitpower/ConduitPower.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatorconduitpower/ConduitPower.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -21,7 +22,7 @@ public void changeGameMode(PlayerGameModeChangeEvent event) { if (player.getGameMode().equals(GameMode.SPECTATOR)) { if (player.hasPotionEffect(PotionEffectType.CONDUIT_POWER)) { player.removePotionEffect(PotionEffectType.CONDUIT_POWER); - player.sendMessage(getText("error.game_mode_changed")); + MM.player(player).sendMessage(getText("error.game_mode_changed")); } } } diff --git a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatornightvision/NightVision.java b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatornightvision/NightVision.java index cb52efc1..6f356c37 100644 --- a/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatornightvision/NightVision.java +++ b/src/main/java/me/teakivy/teakstweaks/packs/utilities/spectatornightvision/NightVision.java @@ -2,6 +2,7 @@ import me.teakivy.teakstweaks.packs.BasePack; import me.teakivy.teakstweaks.packs.PackType; +import me.teakivy.teakstweaks.utils.MM; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -21,7 +22,7 @@ public void changeGameMode(PlayerGameModeChangeEvent event) { if (player.getGameMode().equals(GameMode.SPECTATOR)) { if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION)) { player.removePotionEffect(PotionEffectType.NIGHT_VISION); - player.sendMessage(getText("error.game_mode_changed")); + MM.player(player).sendMessage(getText("error.game_mode_changed")); } } } diff --git a/src/main/java/me/teakivy/teakstweaks/utils/ItemSerializer.java b/src/main/java/me/teakivy/teakstweaks/utils/ItemSerializer.java new file mode 100644 index 00000000..0a4797b4 --- /dev/null +++ b/src/main/java/me/teakivy/teakstweaks/utils/ItemSerializer.java @@ -0,0 +1,104 @@ +package me.teakivy.teakstweaks.utils; + +import com.google.common.base.Preconditions; +import com.mojang.serialization.Dynamic; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.datafix.fixes.References; +import org.apache.commons.io.output.ByteArrayOutputStream; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.io.BukkitObjectInputStream; +import org.bukkit.util.io.BukkitObjectOutputStream; + +import java.io.*; + +import static net.minecraft.nbt.NbtUtils.getDataVersion; + +public class ItemSerializer { + +// public static byte[] toByteArray(ItemStack item){ +// try { +// ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); +// BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream); +// +// // Write the size of the inventory +// dataOutput.writeInt(1); +// +// // Save every element in the list +// +// dataOutput.writeObject(item); +// +// // Serialize that array +// dataOutput.close(); +// return outputStream.toByteArray(); +// } catch (Exception e) { +// throw new IllegalStateException("Unable to save item stacks.", e); +// } +// } +// +// public static ItemStack fromByteArray(byte[] bytes){ +// try { +// ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); +// BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream); +// +// ItemStack item = (ItemStack) dataInput.readObject(); +// +// dataInput.close(); +// System.out.println(item); +// return item; +// } catch (ClassNotFoundException | IOException e) { +// e.printStackTrace(); +// } +// +// return null; +// } + + public static byte[] toByteArray(ItemStack item) { + Preconditions.checkNotNull(item, "null cannot be serialized"); + Preconditions.checkArgument(item.getType() != Material.AIR, "air cannot be serialized"); + + return serializeNbtToBytes((net.minecraft.nbt.CompoundTag) (CraftItemStack.asNMSCopy(item)).save(MinecraftServer.getServer().registryAccess())); + } + public static ItemStack fromByteArray(byte[] data) { + Preconditions.checkNotNull(data, "null cannot be deserialized"); + Preconditions.checkArgument(data.length > 0, "cannot deserialize nothing"); + + net.minecraft.nbt.CompoundTag compound = deserializeNbtFromBytes(data); + final int dataVersion = compound.getInt("DataVersion"); + compound = (net.minecraft.nbt.CompoundTag) MinecraftServer.getServer().fixerUpper.update(References.ITEM_STACK, new Dynamic<>(NbtOps.INSTANCE, compound), dataVersion, Bukkit.getUnsafe().getDataVersion()).getValue(); + return CraftItemStack.asCraftMirror(net.minecraft.world.item.ItemStack.parse(MinecraftServer.getServer().registryAccess(), compound).orElseThrow()); + } + + private static byte[] serializeNbtToBytes(CompoundTag compound) { + compound.putInt("DataVersion", Bukkit.getUnsafe().getDataVersion()); + java.io.ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream(); + try { + net.minecraft.nbt.NbtIo.writeCompressed( + compound, + outputStream + ); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + return outputStream.toByteArray(); + } + + private static net.minecraft.nbt.CompoundTag deserializeNbtFromBytes(byte[] data) { + net.minecraft.nbt.CompoundTag compound; + try { + compound = net.minecraft.nbt.NbtIo.readCompressed( + new java.io.ByteArrayInputStream(data), net.minecraft.nbt.NbtAccounter.unlimitedHeap() + ); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + int dataVersion = compound.getInt("DataVersion"); + Preconditions.checkArgument(dataVersion <= Bukkit.getUnsafe().getDataVersion(), "Newer version! Server downgrades are not supported!"); + return compound; + } + +} diff --git a/src/main/java/me/teakivy/teakstweaks/utils/Logger.java b/src/main/java/me/teakivy/teakstweaks/utils/Logger.java index dbcda53e..3c1fcb06 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/Logger.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/Logger.java @@ -3,7 +3,6 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; -import org.jetbrains.annotations.NotNull; public class Logger { /** @@ -17,18 +16,17 @@ public static void log(LogLevel level, Component message, boolean toAdmins) { String text = "[TeaksTweaks] " + getPrefix(level) + " " + MiniMessage.miniMessage().serialize(message); - Bukkit.getConsoleSender().sendMessage(MiniMessage.miniMessage().deserialize(text)); + MM.sender(Bukkit.getConsoleSender()).sendMessage(MiniMessage.miniMessage().deserialize(text)); if (!toAdmins) return; - Bukkit.getOnlinePlayers().stream().filter(player -> player.hasPermission("teakstweaks.manage")).forEach(player -> player.sendMessage(message)); + Bukkit.getOnlinePlayers().stream().filter(player -> player.hasPermission("teakstweaks.manage")).forEach(player -> MM.player(player).sendMessage(message)); } public static void log(LogLevel level, String message, boolean toAdmins) { log(level, MiniMessage.miniMessage().deserialize(message), toAdmins); } - @NotNull private static String getPrefix(LogLevel level) { String prefix = ""; switch (level) { diff --git a/src/main/java/me/teakivy/teakstweaks/utils/MM.java b/src/main/java/me/teakivy/teakstweaks/utils/MM.java new file mode 100644 index 00000000..c9e30a07 --- /dev/null +++ b/src/main/java/me/teakivy/teakstweaks/utils/MM.java @@ -0,0 +1,25 @@ +package me.teakivy.teakstweaks.utils; + +import me.teakivy.teakstweaks.TeaksTweaks; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; +import net.kyori.adventure.platform.bukkit.BukkitComponentSerializer; +import net.kyori.adventure.text.Component; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class MM { + public static Audience sender(CommandSender sender) { + BukkitAudiences bukkitAudiences = TeaksTweaks.getAdventure(); + return bukkitAudiences.sender(sender); + } + + public static Audience player(Player player) { + BukkitAudiences bukkitAudiences = TeaksTweaks.getAdventure(); + return bukkitAudiences.player(player); + } + + public static String toString(Component component) { + return BukkitComponentSerializer.legacy().serialize(component); + } +} diff --git a/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java b/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java index 3107dc6a..5c0eb767 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/command/AbstractCommand.java @@ -3,8 +3,11 @@ import me.teakivy.teakstweaks.TeaksTweaks; import me.teakivy.teakstweaks.utils.ErrorType; import me.teakivy.teakstweaks.utils.Logger; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -156,11 +159,13 @@ public void register() { getCommandMap().register("", cmd); cmd.setExecutor(this); - Bukkit.getCommandMap().getKnownCommands().put(this.command, cmd); + getCommandMap().register(this.command, cmd); + // TODO finish command map & test +// Bukkit.getCommandMap().getKnownCommands().put(this.command, cmd); if (this.alias != null) { for (String alias : this.alias) { - Bukkit.getCommandMap().getKnownCommands().put(alias, cmd); +// Bukkit.getCommandMap().getKnownCommands().put(alias, cmd); } } @@ -241,7 +246,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String if (arg.isRequired()) requiredArgs++; } if (args.length < requiredArgs) { - sender.sendMessage(getUsage()); + MM.sender(sender).sendMessage(getUsage()); return true; } @@ -269,7 +274,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String * @param event The command event */ public void command(CommandEvent event) { - sender.sendMessage(getUsage()); + MM.sender(this.sender).sendMessage(getUsage()); } /** @@ -277,7 +282,7 @@ public void command(CommandEvent event) { * @param event The command event */ public void playerCommand(PlayerCommandEvent event) { - sender.sendMessage(getUsage()); + MM.sender(this.sender).sendMessage(getUsage()); } @@ -342,14 +347,14 @@ public List tabComplete(TabCompleteEvent event) { public Player checkPlayer() { if (sender instanceof Player) return (Player) sender; - sender.sendMessage(ErrorType.NOT_PLAYER.m()); + MM.sender(this.sender).sendMessage(ErrorType.NOT_PLAYER.m()); return null; } public boolean checkPermission() { if (sender.hasPermission(permission)) return false; - sender.sendMessage(ErrorType.MISSING_COMMAND_PERMISSION.m()); + MM.sender(this.sender).sendMessage(ErrorType.MISSING_COMMAND_PERMISSION.m()); return true; } @@ -455,27 +460,27 @@ public boolean isOnCooldown() { } public void sendMessage(String key, TagResolver... resolvers) { - this.sender.sendMessage(getText(key, resolvers)); + MM.sender(this.sender).sendMessage(getText(key, resolvers)); } public void sendError(String key, TagResolver... resolvers) { - this.sender.sendMessage(getError(key, resolvers)); + MM.sender(this.sender).sendMessage(getError(key, resolvers)); } public void sendError(ErrorType errorType) { - this.sender.sendMessage(errorType.m()); + MM.sender(this.sender).sendMessage(errorType.m()); } public void sendMessage(Component message) { - this.sender.sendMessage(message); + MM.sender(this.sender).sendMessage(message); } public void sendString(String message) { - this.sender.sendMessage(newText(message)); + MM.sender(this.sender).sendMessage(newText(message)); } public void sendText(String message, TagResolver... resolvers) { - this.sender.sendMessage(newText(message, resolvers)); + MM.sender(this.sender).sendMessage(newText(message, resolvers)); } public TagResolver.Single insert(@Subst("") String key, String value) { diff --git a/src/main/java/me/teakivy/teakstweaks/utils/gui/GUIListener.java b/src/main/java/me/teakivy/teakstweaks/utils/gui/GUIListener.java index 3e502ae0..4f1d1100 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/gui/GUIListener.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/gui/GUIListener.java @@ -1,5 +1,6 @@ package me.teakivy.teakstweaks.utils.gui; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,7 +16,7 @@ public class GUIListener implements Listener { */ @EventHandler public void onInventoryClick(InventoryClickEvent event) { - if (event.getView().title().equals(Translatable.get("mechanics.gui.title"))) { + if (event.getView().getTitle().equals(MM.toString(Translatable.get("mechanics.gui.title")))) { event.setCancelled(true); if (event.getRawSlot() == 53) { // Next page button clicked diff --git a/src/main/java/me/teakivy/teakstweaks/utils/gui/PaginatedGUI.java b/src/main/java/me/teakivy/teakstweaks/utils/gui/PaginatedGUI.java index 5d2ba3a3..9b039bd5 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/gui/PaginatedGUI.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/gui/PaginatedGUI.java @@ -1,5 +1,6 @@ package me.teakivy.teakstweaks.utils.gui; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; @@ -74,12 +75,12 @@ private void update() { // Add navigation buttons ItemStack nextButton = new ItemStack(Material.ARROW); ItemMeta nextMeta = nextButton.getItemMeta(); - nextMeta.displayName(Translatable.get("mechanics.gui.next_page").decoration(TextDecoration.ITALIC, false)); + nextMeta.setDisplayName(MM.toString(Translatable.get("mechanics.gui.next_page").decoration(TextDecoration.ITALIC, false))); nextButton.setItemMeta(nextMeta); ItemStack prevButton = new ItemStack(Material.ARROW); ItemMeta prevMeta = prevButton.getItemMeta(); - prevMeta.displayName(Translatable.get("mechanics.gui.previous_page").decoration(TextDecoration.ITALIC, false)); + prevMeta.setDisplayName(MM.toString(Translatable.get("mechanics.gui.previous_page").decoration(TextDecoration.ITALIC, false))); prevButton.setItemMeta(prevMeta); if (page < items.size() / 45) inv.setItem(53, nextButton); diff --git a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java index 324578dc..98e44c30 100644 --- a/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java +++ b/src/main/java/me/teakivy/teakstweaks/utils/update/UpdateJoinAlert.java @@ -1,6 +1,7 @@ package me.teakivy.teakstweaks.utils.update; import me.teakivy.teakstweaks.TeaksTweaks; +import me.teakivy.teakstweaks.utils.MM; import me.teakivy.teakstweaks.utils.config.Config; import me.teakivy.teakstweaks.utils.lang.Translatable; import net.kyori.adventure.text.Component; @@ -33,7 +34,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { message = "" + message; message = "" + message; - player.sendMessage(MiniMessage.miniMessage().deserialize(message, Placeholder.parsed("version", UpdateChecker.getLatestVersion()))); + MM.player(player).sendMessage(MiniMessage.miniMessage().deserialize(message, Placeholder.parsed("version", UpdateChecker.getLatestVersion()))); player.sendMessage(""); } diff --git a/src/main/resources/lang/en.json b/src/main/resources/lang/en.json index 890fe2e6..e2072f8f 100644 --- a/src/main/resources/lang/en.json +++ b/src/main/resources/lang/en.json @@ -4,8 +4,8 @@ "meta.language_name": "English", "plugin.name": "Teak's Tweaks", - "plugin.discord": "https://discord.gg/wfP4SkZx6s", - "plugin.url": "https://modrinth.com/plugin/teaks-tweaks", + "plugin.discord": "https://discord.gg/wfP4SkZx6s", + "plugin.url": "https://modrinth.com/plugin/teaks-tweaks", "plugin.author": "TeakIvy", "#comment.errors": "Common Error Messages: (this is a comment and will never be shown in-game)", diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3164f8bc..6175647d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: TeaksTweaks version: ${project.version} main: me.teakivy.teakstweaks.TeaksTweaks -api-version: 1.17 +api-version: 1.21 prefix: TeaksTweaks authors: [ TeakIvy ] description: 150+ Toggleable Tweaks & Features including Vanilla Tweaks as a plugin, and more! @@ -123,23 +123,23 @@ permissions: description: Execute /spectatoralts default: op - teakstweaks.afk.*: + teakstweaks.afk-display.*: description: All AFK Permissions default: op children: - teakstweaks.afk.command.afk: true - teakstweaks.afk.command.afk.toggle: true - teakstweaks.afk.command.afk.uninstall: true + teakstweaks.afk-display.command.afk: true + teakstweaks.afk-display.command.afk.toggle: true + teakstweaks.afk-display.command.afk.uninstall: true - teakstweaks.afk.command.afk: + teakstweaks.afk-display.command.afk: description: Execute /afk default: true - teakstweaks.afk.command.afk.toggle: + teakstweaks.afk-display.command.afk.toggle: description: Execute /afk toggle default: true - teakstweaks.afk.command.afk.uninstall: + teakstweaks.afk-display.command.afk.uninstall: description: Execute /afk uninstall default: op @@ -442,7 +442,7 @@ permissions: teakstweaks.thunder-shrine.commmand.shrine.remove: description: Execute /shrine remove - default: op + default: opUp teakstweaks.thunder-shrine.commmand.shrine.uninstall: description: Execute /shrine uninstall