From 0203c28e522e6e243997321a0909b987fa061033 Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Wed, 14 Jun 2023 14:33:56 -0400 Subject: [PATCH] player info flags --- .../addons/magicStick/MagicStickEvents.java | 4 -- pom.xml | 2 +- .../player/commands/types/CmdPlayer.java | 52 +++++++++++--- .../BetterRTP/player/rtp/RTP.java | 6 +- .../BetterRTP/player/rtp/RTPPlayer.java | 2 +- .../BetterRTP/player/rtp/RTP_PlayerInfo.java | 8 +++ .../references/depends/DepEconomy.java | 4 +- .../references/helpers/HelperRTP.java | 69 +++++++++++-------- .../references/helpers/HelperRTP_Check.java | 9 +-- 9 files changed, 103 insertions(+), 53 deletions(-) diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java index 0508cb3..2c79b67 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickEvents.java @@ -1,14 +1,11 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; -import me.SuperRonanCraft.BetterRTP.BetterRTP; -import me.SuperRonanCraft.BetterRTP.player.rtp.RTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.messages.Message; import me.SuperRonanCraft.BetterRTPAddons.Main; -import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand; import me.SuperRonanCraft.BetterRTPAddons.util.Files; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -25,7 +22,6 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.function.Consumer; public class MagicStickEvents implements Listener { diff --git a/pom.xml b/pom.xml index 0dbf438..4fcdc24 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.6.9-2-DEV + 3.6.10-DEV diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java index f89a1c7..5b46ac3 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java @@ -1,8 +1,6 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; import me.SuperRonanCraft.BetterRTP.BetterRTP; -import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType; -import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; @@ -10,7 +8,6 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; -import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesUsage; @@ -32,25 +29,30 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { //rtp player public void execute(CommandSender sendi, String label, String[] args) { if (args.length == 2) - if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) + if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) { HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld(), null, RTP_TYPE.FORCED, - false, - false, null, - new RTP_PlayerInfo(false, false)); - else if (Bukkit.getPlayer(args[1]) != null) + new RTP_PlayerInfo()); + } else if (Bukkit.getPlayer(args[1]) != null) MessagesCore.NOTONLINE.send(sendi, args[1]); else usage(sendi, label); else if (args.length >= 3) if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) { World world = Bukkit.getWorld(args[2]); + RTP_PlayerInfo playerInfo = getFlags(args); if (world != null) { - HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, world, HelperRTP_Info.getBiomes(args, 3, sendi), RTP_TYPE.FORCED); + HelperRTP.tp(Bukkit.getPlayer(args[1]), + sendi, + world, + null, + RTP_TYPE.FORCED, + null, + playerInfo); } else MessagesCore.NOTEXIST.send(sendi, args[2]); } else if (Bukkit.getPlayer(args[1]) != null) @@ -61,6 +63,31 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { usage(sendi, label); } + private RTP_PlayerInfo getFlags(String[] args) { + boolean applyDelay = true; + boolean applyCooldown = true; + boolean checkCooldown = true; + boolean takeMoney = true; + boolean takeHunger = true; + + if (args.length > 3) { + for (int i = 3; i < args.length; i++) { + for (RTP_PlayerInfo.RTP_PLAYERINFO_FLAG flag : RTP_PlayerInfo.RTP_PLAYERINFO_FLAG.values()) { + if (flag.name().equalsIgnoreCase(args[i])) { + switch (flag) { + case NODELAY: applyDelay = false; break; + case NOCOOLDOWN: checkCooldown = false; break; + case IGNORECOOLDOWN: applyCooldown = false; break; + case IGNOREMONEY: takeMoney = false; break; + case IGNOREHUNGER: takeHunger = false; break; + } + } + } + } + } + return new RTP_PlayerInfo(applyDelay, applyCooldown, checkCooldown, takeMoney, takeHunger); + } + public List tabComplete(CommandSender sendi, String[] args) { List list = new ArrayList<>(); if (args.length == 2) { @@ -72,8 +99,11 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable { if (w.getName().startsWith(args[2]) && !BetterRTP.getInstance().getRTP().getDisabledWorlds().contains(w.getName())) list.add(w.getName()); } else if (args.length > 3) { - if (PermissionNode.BIOME.check(sendi)) - HelperRTP_Info.addBiomes(list, args); + for (RTP_PlayerInfo.RTP_PLAYERINFO_FLAG flag : RTP_PlayerInfo.RTP_PLAYERINFO_FLAG.values()) { + if (flag.name().toLowerCase().startsWith(args[args.length - 1].toLowerCase())) { + list.add(flag.name()); + } + } } return list; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java index 7640e83..115cc51 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java @@ -82,11 +82,11 @@ public class RTP { if (setup.isCancelled()) return; // Second Economy check - if (!getPl().getEco().hasBalance(pWorld.getSendi(), pWorld)) { + if (pWorld.getPlayerInfo().takeMoney && !getPl().getEco().hasBalance(pWorld.getSendi(), pWorld)) { MessagesCore.FAILED_PRICE.send(pWorld.getSendi()); return; } - if (!getPl().getEco().hasHunger(pWorld.getSendi(), pWorld)) { + if (pWorld.getPlayerInfo().takeHunger && !getPl().getEco().hasHunger(pWorld.getSendi(), pWorld)) { MessagesCore.FAILED_HUNGER.send(pWorld.getSendi()); return; } @@ -103,7 +103,7 @@ public class RTP { //Setup player rtp methods RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type); // Delaying? Else, just go - if (getPl().getSettings().isDelayEnabled() && pWorld.getPlayerInfo().isApplyDelay()) { + if (pWorld.getPlayerInfo().isApplyDelay() && getPl().getSettings().isDelayEnabled()) { new RTPDelay(sendi, rtpPlayer, delayTime, cancelOnMove, cancelOnDamage); } else { if (!teleport.beforeTeleportInstant(sendi, p)) 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 9c1bf33..10a1917 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPlayer.java @@ -87,7 +87,7 @@ public class RTPPlayer { //Valid location? if (tpLoc != null && checkDepends(tpLoc)) { tpLoc.add(0.5, 0, 0.5); //Center location - if (getPl().getEco().charge(player, worldPlayer)) { + if (worldPlayer.getPlayerInfo().isTakeMoney() && getPl().getEco().charge(player, worldPlayer)) { tpLoc.setYaw(player.getLocation().getYaw()); tpLoc.setPitch(player.getLocation().getPitch()); AsyncHandler.sync(() -> diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_PlayerInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_PlayerInfo.java index 1a2ab8d..f0afe90 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_PlayerInfo.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_PlayerInfo.java @@ -12,6 +12,10 @@ public class RTP_PlayerInfo { takeMoney, takeHunger; + public RTP_PlayerInfo() { + this(true, true, true, true, true); + } + public RTP_PlayerInfo(boolean applyDelay, boolean applyCooldown) { this.applyDelay = applyDelay; this.applyCooldown = applyCooldown; @@ -29,4 +33,8 @@ public class RTP_PlayerInfo { this.takeHunger = takeHunger; } + public enum RTP_PLAYERINFO_FLAG { + NODELAY, NOCOOLDOWN, IGNORECOOLDOWN, IGNOREMONEY, IGNOREHUNGER; + } + } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepEconomy.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepEconomy.java index 6e9f331..cab694d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepEconomy.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepEconomy.java @@ -43,8 +43,8 @@ public class DepEconomy { MessagesCore.FAILED_PRICE.send(sendi, pWorld.getPrice()); if (took_food) player.setFoodLevel(player.getFoodLevel() + hunger); - } else - pWorld.eco_money_taken = true; + } //else + //pWorld.eco_money_taken = true; return passed_economy; } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java index 4a22b66..bd59d40 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java @@ -22,41 +22,51 @@ import java.util.*; public class HelperRTP { //Teleported and Sender are the same - public static void tp(Player player, World world, List biomes, RTP_TYPE rtpType) { + public static void tp(Player player, + World world, + List biomes, + RTP_TYPE rtpType) { tp(player, player, world, biomes, rtpType); } //Teleported and Sender MAY be different - public static void tp(Player player, CommandSender sendi, World world, List biomes, RTP_TYPE rtpType) { + public static void tp(Player player, + CommandSender sendi, + World world, + List biomes, + RTP_TYPE rtpType) { tp(player, sendi, world, biomes, rtpType, false, false); } // - public static void tp(Player player, CommandSender sendi, World world, List biomes, RTP_TYPE rtpType, - boolean ignoreCooldown, boolean ignoreDelay) { + public static void tp(Player player, + CommandSender sendi, + World world, + List biomes, + RTP_TYPE rtpType, + boolean ignoreCooldown, + boolean ignoreDelay) { tp(player, sendi, world, biomes, rtpType, ignoreCooldown, ignoreDelay, null); } - public static void tp(@NotNull Player player, CommandSender sendi, @Nullable World world, List biomes, RTP_TYPE rtpType, - boolean ignoreCooldown, boolean ignoreDelay, @Nullable WorldLocation location) { - world = getActualWorld(player, world, location); - RTPSetupInformation setup_info = new RTPSetupInformation( - world, - sendi, - player, - true, - biomes, - rtpType, - location, - new RTP_PlayerInfo( - !ignoreDelay && HelperRTP_Check.applyDelay(player, sendi), - !ignoreCooldown && HelperRTP_Check.applyCooldown(sendi, player)) - ); - tp(player, sendi, ignoreCooldown, ignoreDelay, setup_info); + public static void tp(@NotNull Player player, + CommandSender sendi, + @Nullable World world, + List biomes, + RTP_TYPE rtpType, + boolean ignoreCooldown, + boolean ignoreDelay, + @Nullable WorldLocation location) { + tp(player, sendi, world, biomes, rtpType, location, new RTP_PlayerInfo(!ignoreDelay, !ignoreCooldown)); } - public static void tp(@NotNull Player player, CommandSender sendi, @Nullable World world, List biomes, RTP_TYPE rtpType, - boolean ignoreCooldown, boolean ignoreDelay, @Nullable WorldLocation location, RTP_PlayerInfo playerInfo) { + public static void tp(@NotNull Player player, + CommandSender sendi, + @Nullable World world, + List biomes, + RTP_TYPE rtpType, + @Nullable WorldLocation location, + RTP_PlayerInfo playerInfo) { world = getActualWorld(player, world, location); RTPSetupInformation setup_info = new RTPSetupInformation( world, @@ -68,13 +78,15 @@ public class HelperRTP { location, playerInfo ); - tp(player, sendi, ignoreCooldown, ignoreDelay, setup_info); + tp(player, sendi, setup_info); } - public static void tp(@NotNull Player player, CommandSender sendi, boolean ignoreCooldown, boolean ignoreDelay, RTPSetupInformation setup_info) { + public static void tp(@NotNull Player player, + CommandSender sendi, + RTPSetupInformation setup_info) { //RTP request cancelled reason WorldPlayer pWorld = getPlayerWorld(setup_info); - RTP_ERROR_REQUEST_REASON cantReason = HelperRTP_Check.canRTP(player, sendi, pWorld, ignoreCooldown); + RTP_ERROR_REQUEST_REASON cantReason = HelperRTP_Check.canRTP(player, sendi, pWorld, setup_info.getPlayerInfo()); if (cantReason != null) { String msg = cantReason.getMsg().get(player, null); if (cantReason == RTP_ERROR_REQUEST_REASON.COOLDOWN) { @@ -93,7 +105,9 @@ public class HelperRTP { return BetterRTP.getInstance(); } - public static World getActualWorld(Player player, World world, @Nullable WorldLocation location) { + public static World getActualWorld(Player player, + World world, + @Nullable WorldLocation location) { if (world == null) world = player.getWorld(); if (location != null) @@ -108,7 +122,8 @@ public class HelperRTP { } @Nullable - public static WorldLocation getRandomLocation(CommandSender sender, World world) { + public static WorldLocation getRandomLocation(CommandSender sender, + World world) { HashMap locations_permissible = CmdLocation.getLocations(sender, world); if (!locations_permissible.isEmpty()) { List valuesList = new ArrayList<>(locations_permissible.keySet()); diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java index 33d4da3..038b4f7 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Check.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.references.helpers; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_ERROR_REQUEST_REASON; +import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_PlayerInfo; import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; @@ -13,7 +14,7 @@ import org.bukkit.entity.Player; public class HelperRTP_Check { - public static RTP_ERROR_REQUEST_REASON canRTP(Player player, CommandSender sendi, WorldPlayer pWorld, boolean ignoreCooldown) { + public static RTP_ERROR_REQUEST_REASON canRTP(Player player, CommandSender sendi, WorldPlayer pWorld, RTP_PlayerInfo rtpInfo) { if (isRTPing(player)) { //Is RTP'ing return RTP_ERROR_REQUEST_REASON.IS_RTPING; } @@ -25,12 +26,12 @@ public class HelperRTP_Check { if (getPl().getRTP().getDisabledWorlds().contains(pWorld.getWorld().getName())) { return RTP_ERROR_REQUEST_REASON.WORLD_DISABLED; } - if (sendi == player && isCoolingDown(sendi, player, pWorld)) { //Is Cooling down + if (rtpInfo.isCheckCooldown() && sendi == player && isCoolingDown(sendi, player, pWorld)) { //Is Cooling down return RTP_ERROR_REQUEST_REASON.COOLDOWN; } - if (!getPl().getEco().hasBalance(sendi, pWorld)) + if (rtpInfo.isTakeMoney() && !getPl().getEco().hasBalance(sendi, pWorld)) return RTP_ERROR_REQUEST_REASON.PRICE_ECONOMY; - if (!getPl().getEco().hasHunger(sendi, pWorld)) + if (rtpInfo.isTakeHunger() && !getPl().getEco().hasHunger(sendi, pWorld)) return RTP_ERROR_REQUEST_REASON.PRICE_HUNGER; return null; }