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;
}