From f47c8cee103091c4a74a6d8bdf209ea75be6f0a4 Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Fri, 7 Apr 2023 23:00:24 -0400 Subject: [PATCH] economy price placeholder fix --- pom.xml | 2 +- .../player/commands/types/CmdTest.java | 5 ++++- .../BetterRTP/player/rtp/RTPPlayer.java | 2 +- .../BetterRTP/player/rtp/RTPTeleport.java | 22 ++++++++++--------- .../placeholder/PlaceholderAnalyzer.java | 3 +++ 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 788fe85..8607a46 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.6.4 + 3.6.5 1.8 diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTest.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTest.java index c9c8d81..da6eb03 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTest.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTest.java @@ -3,8 +3,10 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; +import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -23,7 +25,8 @@ public class CmdTest implements RTPCommand, RTPCommandHelpable { public void execute(CommandSender sendi, String label, String[] args) { if (sendi instanceof Player) { Player p = (Player) sendi; - BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, p.getLocation(), 0, 0, p.getLocation(), RTP_TYPE.TEST); + BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, p.getLocation(), + HelperRTP.getPlayerWorld(new RTPSetupInformation(p.getWorld(), p, p, false)), 0, p.getLocation(), RTP_TYPE.TEST); } else sendi.sendMessage("Console is not able to execute this command! Try '/rtp help'"); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java index 72f39ae..a880d20 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java @@ -90,7 +90,7 @@ public class RTPPlayer { tpLoc.setYaw(player.getLocation().getYaw()); tpLoc.setPitch(player.getLocation().getPitch()); Bukkit.getScheduler().runTask(BetterRTP.getInstance(), () -> - settings.teleport.sendPlayer(sendi, player, tpLoc, worldPlayer.getPrice(), attempts, type, worldPlayer.getWorldtype())); + settings.teleport.sendPlayer(sendi, player, tpLoc, worldPlayer, attempts, type)); } } else { randomlyTeleport(sendi); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java index 6b53478..88d2f38 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPTeleport.java @@ -3,11 +3,13 @@ package me.SuperRonanCraft.BetterRTP.player.rtp; import io.papermc.lib.PaperLib; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.effects.*; +import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPreEvent; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; import org.bukkit.Location; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -38,8 +40,8 @@ public class RTPTeleport { // CompletableFuture.allOf(asyncChunks.toArray(new CompletableFuture[] {})).cancel(true); // } - void sendPlayer(final CommandSender sendi, final Player p, final Location location, final int price, - final int attempts, RTP_TYPE type, WORLD_TYPE worldType) throws NullPointerException { + void sendPlayer(final CommandSender sendi, final Player p, final Location location, final WorldPlayer wPlayer, + final int attempts, RTP_TYPE type) throws NullPointerException { Location oldLoc = p.getLocation(); loadingTeleport(p, sendi); //Send loading message to player who requested //List> asyncChunks = getChunks(location); //Get a list of chunks @@ -49,15 +51,15 @@ public class RTPTeleport { @Override public void run() {*/ try { - RTP_TeleportEvent event = new RTP_TeleportEvent(p, location, worldType); + RTP_TeleportEvent event = new RTP_TeleportEvent(p, location, wPlayer.getWorldtype()); getPl().getServer().getPluginManager().callEvent(event); Location loc = event.getLocation(); PaperLib.teleportAsync(p, loc).thenRun(new BukkitRunnable() { //Async teleport @Override public void run() { - afterTeleport(p, loc, price, attempts, oldLoc, type); + afterTeleport(p, loc, wPlayer, attempts, oldLoc, type); if (sendi != p) //Tell player who requested that the player rtp'd - sendSuccessMsg(sendi, p.getName(), loc, price, false, attempts); + sendSuccessMsg(sendi, p.getName(), loc, wPlayer, false, attempts); getPl().getpInfo().getRtping().remove(p); //No longer rtp'ing //Save respawn location if first join if (type == RTP_TYPE.JOIN) //RTP Type was Join @@ -76,13 +78,13 @@ public class RTPTeleport { //Effects - public void afterTeleport(Player p, Location loc, int price, int attempts, Location oldLoc, RTP_TYPE type) { //Only a successful rtp should run this OR '/rtp test' + public void afterTeleport(Player p, Location loc, WorldPlayer wPlayer, int attempts, Location oldLoc, RTP_TYPE type) { //Only a successful rtp should run this OR '/rtp test' effects.getSounds().playTeleport(p); effects.getParticles().display(p); effects.getPotions().giveEffects(p); effects.getTitles().showTitle(RTPEffect_Titles.RTP_TITLE_TYPE.TELEPORT, p, loc, attempts, 0); if (effects.getTitles().sendMsg(RTPEffect_Titles.RTP_TITLE_TYPE.TELEPORT)) - sendSuccessMsg(p, p.getName(), loc, price, true, attempts); + sendSuccessMsg(p, p.getName(), loc, wPlayer, true, attempts); getPl().getServer().getPluginManager().callEvent(new RTP_TeleportPostEvent(p, loc, oldLoc, type)); } @@ -147,12 +149,12 @@ public class RTPTeleport { return asyncChunks; }*/ - private void sendSuccessMsg(CommandSender sendi, String player, Location loc, int price, boolean sameAsPlayer, int attempts) { + private void sendSuccessMsg(CommandSender sendi, String player, Location loc, WorldPlayer wPlayer, boolean sameAsPlayer, int attempts) { if (sameAsPlayer) { - if (price == 0) + if (wPlayer.getPrice() == 0 || PermissionNode.BYPASS_ECONOMY.check(sendi)) MessagesCore.SUCCESS_BYPASS.send(sendi, Arrays.asList(loc, attempts)); else - MessagesCore.SUCCESS_PAID.send(sendi, Arrays.asList(loc, attempts, price)); + MessagesCore.SUCCESS_PAID.send(sendi, Arrays.asList(loc, wPlayer, attempts)); } else MessagesCore.OTHER_SUCCESS.send(sendi, Arrays.asList(loc, player, attempts)); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java index 25a3fdf..d84982e 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java @@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperDate; import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Location; @@ -35,6 +36,8 @@ public class PlaceholderAnalyzer { str = cmd(str, (RTPCommand) info); if (info instanceof PermissionNode) str = permNode(str, (PermissionNode) info); + if (info instanceof RTPWorld) + str = ints(str, ((RTPWorld) info).getPrice()); if (p instanceof Player) str = papi((Player) p, str); return str;