mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2026-02-16 02:21:06 +00:00
player info flags
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
||||
<groupId>me.SuperRonanCraft</groupId>
|
||||
<artifactId>BetterRTP</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>3.6.9-2-DEV</version>
|
||||
<version>3.6.10-DEV</version>
|
||||
|
||||
<!-- Upload patches to https://repo.ronanplugins.com/#/ -->
|
||||
|
||||
|
||||
@@ -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 <world> <biome1> <biome2...>
|
||||
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<String> tabComplete(CommandSender sendi, String[] args) {
|
||||
List<String> 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;
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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(() ->
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<String> biomes, RTP_TYPE rtpType) {
|
||||
public static void tp(Player player,
|
||||
World world,
|
||||
List<String> 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<String> biomes, RTP_TYPE rtpType) {
|
||||
public static void tp(Player player,
|
||||
CommandSender sendi,
|
||||
World world,
|
||||
List<String> biomes,
|
||||
RTP_TYPE rtpType) {
|
||||
tp(player, sendi, world, biomes, rtpType, false, false);
|
||||
}
|
||||
|
||||
//
|
||||
public static void tp(Player player, CommandSender sendi, World world, List<String> biomes, RTP_TYPE rtpType,
|
||||
boolean ignoreCooldown, boolean ignoreDelay) {
|
||||
public static void tp(Player player,
|
||||
CommandSender sendi,
|
||||
World world,
|
||||
List<String> 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<String> 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<String> 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<String> 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<String> 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<String, RTPWorld> locations_permissible = CmdLocation.getLocations(sender, world);
|
||||
if (!locations_permissible.isEmpty()) {
|
||||
List<String> valuesList = new ArrayList<>(locations_permissible.keySet());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user