Skip to content

Commit

Permalink
RtpInfo checks + sudo command
Browse files Browse the repository at this point in the history
  • Loading branch information
SuperRonanCraft committed Jun 15, 2023
1 parent 2b4367b commit 1e3e572
Show file tree
Hide file tree
Showing 13 changed files with 154 additions and 57 deletions.
9 changes: 6 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<packaging>jar</packaging>
<version>3.6.10-DEV</version>
<version>3.6.10-2DEV</version>

<!-- Upload patches to https://repo.ronanplugins.com/#/ -->

Expand Down Expand Up @@ -273,7 +273,9 @@
<version>97b96c9</version>
<scope>provided</scope>
</dependency>
<!-- Particles Library (https://github.com/ByteZ1337/ParticleLib/blob/master/src/main/java/xyz/xenondevs/particle/ParticleEffect.java) -->
<!-- Particles Library
https://github.com/ByteZ1337/ParticleLib
(https://github.com/ByteZ1337/ParticleLib/blob/master/src/main/java/xyz/xenondevs/particle/ParticleEffect.java) -->
<dependency>
<groupId>xyz.xenondevs</groupId>
<artifactId>particle</artifactId>
Expand Down Expand Up @@ -327,7 +329,7 @@
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- MinePlots (https://builtbybit.com/resources/mineplots.21646/) (Added in 3.6.6 ) -->
<!-- MinePlots (https://builtbybit.com/resources/mineplots.21646/) (Added in 3.6.6 ) -->
<dependency>
<groupId>pl.minecodes.plots</groupId>
<artifactId>plugin-api</artifactId>
Expand All @@ -351,6 +353,7 @@
<groupId>com.github.WhipDevelopment</groupId>
<artifactId>CrashClaim</artifactId>
<version>-75abe3b665-1</version>
<scope>provided</scope>
</dependency>

<!-- CAN BE UNCOMMENTED IF YOU HAVE ACCESS TO THE PLUGIN -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public enum RTPCommandType {
INFO(new CmdInfo()),
LOCATION(new CmdLocation()),
PLAYER(new CmdPlayer()),
PLAYERSUDO(new CmdPlayerSudo()),
QUEUE(new CmdQueue(), true),
RELOAD(new CmdReload()),
//SETTINGS(new CmdSettings(), true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public String getName() {
return "player";
}

//rtp player <world> <biome1> <biome2...>
//rtp player <player> <world> <RTP_PlayerInfo.RTP_PLAYERINFO_FLAG...>
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length == 2)
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) {
Expand All @@ -44,15 +44,14 @@ public void execute(CommandSender sendi, String label, String[] args) {
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,
null,
RTP_TYPE.FORCED,
null,
playerInfo);
getFlags(args));
} else
MessagesCore.NOTEXIST.send(sendi, args[2]);
} else if (Bukkit.getPlayer(args[1]) != null)
Expand All @@ -76,8 +75,8 @@ private RTP_PlayerInfo getFlags(String[] args) {
if (flag.name().equalsIgnoreCase(args[i])) {
switch (flag) {
case NODELAY: applyDelay = false; break;
case NOCOOLDOWN: checkCooldown = false; break;
case IGNORECOOLDOWN: applyCooldown = false; break;
case NOCOOLDOWN: applyCooldown = false; break;
case IGNORECOOLDOWN: checkCooldown = false; break;
case IGNOREMONEY: takeMoney = false; break;
case IGNOREHUNGER: takeHunger = false; break;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;

import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_PlayerInfo;
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.MessagesCore;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesUsage;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

public class CmdPlayerSudo implements RTPCommand {

public String getName() {
return "player_sudo";
}

//rtp sudoplayer <player> <world> <RTP_PlayerInfo.RTP_PLAYERINFO_FLAG...>
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length == 2)
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,
null,
new RTP_PlayerInfo(false, true, false, false, false));
} 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]);
if (world != null) {
HelperRTP.tp(Bukkit.getPlayer(args[1]),
sendi,
world,
null,
RTP_TYPE.FORCED,
null,
new RTP_PlayerInfo(false, true, false, false, false));
} else
MessagesCore.NOTEXIST.send(sendi, args[2]);
} else if (Bukkit.getPlayer(args[1]) != null)
MessagesCore.NOTONLINE.send(sendi, args[1]);
else
usage(sendi, label);
else
usage(sendi, label);
}

public List<String> tabComplete(CommandSender sendi, String[] args) {
List<String> list = new ArrayList<>();
if (args.length == 2) {
for (Player p : Bukkit.getOnlinePlayers())
if (p.getDisplayName().toLowerCase().startsWith(args[1].toLowerCase()))
list.add(p.getName());
} else if (args.length == 3) {
for (World w : Bukkit.getWorlds())
if (w.getName().startsWith(args[2]) && !BetterRTP.getInstance().getRTP().getDisabledWorlds().contains(w.getName()))
list.add(w.getName());
}
return list;
}

@NotNull public PermissionNode permission() {
return PermissionNode.RTP_OTHER;
}

public void usage(CommandSender sendi, String label) {
MessagesUsage.RTP_OTHER.send(sendi, label);
}
}
11 changes: 6 additions & 5 deletions src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent;
import me.SuperRonanCraft.BetterRTP.references.file.FileOther;
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Check;
import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.PermissionGroup;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.*;
Expand Down Expand Up @@ -82,12 +83,12 @@ public void start(WorldPlayer pWorld) {
if (setup.isCancelled())
return;
// Second Economy check
if (pWorld.getPlayerInfo().takeMoney && !getPl().getEco().hasBalance(pWorld.getSendi(), pWorld)) {
MessagesCore.FAILED_PRICE.send(pWorld.getSendi());
if (pWorld.getPlayerInfo().takeMoney && !getPl().getEco().hasBalance(pWorld)) {
MessagesCore.FAILED_PRICE.send(pWorld.getPlayer());
return;
}
if (pWorld.getPlayerInfo().takeHunger && !getPl().getEco().hasHunger(pWorld.getSendi(), pWorld)) {
MessagesCore.FAILED_HUNGER.send(pWorld.getSendi());
if (pWorld.getPlayerInfo().takeHunger && !getPl().getEco().hasHunger(pWorld)) {
MessagesCore.FAILED_HUNGER.send(pWorld.getPlayer());
return;
}
rtp(pWorld.getSendi(), pWorld, pWorld.getRtp_type());
Expand All @@ -103,7 +104,7 @@ private void rtp(CommandSender sendi, WorldPlayer pWorld, RTP_TYPE type) {
//Setup player rtp methods
RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type);
// Delaying? Else, just go
if (pWorld.getPlayerInfo().isApplyDelay() && getPl().getSettings().isDelayEnabled()) {
if (pWorld.getPlayerInfo().applyDelay && HelperRTP_Check.applyDelay(pWorld.getPlayer())) {
new RTPDelay(sendi, rtpPlayer, delayTime, cancelOnMove, cancelOnDamage);
} else {
if (!teleport.beforeTeleportInstant(sendi, p))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ private void cancel() {
getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer());
//getPl().getEco().unCharge(rtp.getPlayer(), rtp.pWorld);
getPl().getCooldowns().removeCooldown(rtp.getPlayer(), rtp.worldPlayer.getWorld());
getPl().getpInfo().getRtping().put(rtp.getPlayer(), false);
getPl().getpInfo().getRtping().remove(rtp.getPlayer());
Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public class RTPPlayer {
@Getter WorldPlayer worldPlayer;
@Getter RTP_TYPE type;
@Getter int attempts;
List<Location> attemptedLocations = new ArrayList<>();
//List<Location> attemptedLocations = new ArrayList<>();

RTPPlayer(Player player, RTP settings, WorldPlayer worldPlayer, RTP_TYPE type) {
this.player = player;
Expand Down Expand Up @@ -83,18 +83,19 @@ void randomlyTeleport(CommandSender sendi) {
private void attempt(CommandSender sendi, Location loc) {
Location tpLoc;
tpLoc = RandomLocation.getSafeLocation(worldPlayer.getWorldtype(), worldPlayer.getWorld(), loc, worldPlayer.getMinY(), worldPlayer.getMaxY(), worldPlayer.getBiomes());
attemptedLocations.add(loc);
//attemptedLocations.add(loc);
//Valid location?
if (tpLoc != null && checkDepends(tpLoc)) {
tpLoc.add(0.5, 0, 0.5); //Center location
if (worldPlayer.getPlayerInfo().isTakeMoney() && getPl().getEco().charge(player, worldPlayer)) {
if (getPl().getEco().charge(player, worldPlayer)) {
//Successfully found a safe location, teleport player
tpLoc.setYaw(player.getLocation().getYaw());
tpLoc.setPitch(player.getLocation().getPitch());
AsyncHandler.sync(() ->
settings.teleport.sendPlayer(sendi, player, tpLoc, worldPlayer, attempts, type));
AsyncHandler.sync(() -> settings.teleport.sendPlayer(sendi, player, tpLoc, worldPlayer, attempts, type));
} else {
getPl().getCooldowns().removeCooldown(player, worldPlayer.getWorld());
getPl().getpInfo().getRtping().put(player, false);
if (worldPlayer.getPlayerInfo().applyCooldown)
getPl().getCooldowns().removeCooldown(player, worldPlayer.getWorld());
getPl().getpInfo().getRtping().remove(player);
}
} else {
randomlyTeleport(sendi);
Expand All @@ -106,7 +107,7 @@ private void attempt(CommandSender sendi, Location loc) {
private void metMax(CommandSender sendi, Player p) {
settings.teleport.failedTeleport(p, sendi);
getPl().getCooldowns().removeCooldown(p, worldPlayer.getWorld());
getPl().getpInfo().getRtping().put(p, false);
getPl().getpInfo().getRtping().remove(p);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,18 @@ public void cancelledTeleport(Player p) { //Only Delays should call this

private void loadingTeleport(Player p, CommandSender sendi) {
effects.getTitles().showTitle(RTPEffect_Titles.RTP_TITLE_TYPE.LOADING, p, p.getLocation(), 0, 0);
if ((effects.getTitles().sendMsg(RTPEffect_Titles.RTP_TITLE_TYPE.LOADING) && sendStatusMessage()) || sendi != p) //Show msg if enabled or if not same player
MessagesCore.SUCCESS_LOADING.send(sendi);
if (effects.getTitles().sendMsg(RTPEffect_Titles.RTP_TITLE_TYPE.LOADING) && sendStatusMessage()) { //Show msg if enabled or if not same player
if (p == sendi)
MessagesCore.SUCCESS_LOADING.send(sendi);
MessagesCore.SUCCESS_LOADING.send(p);
}
}

public void failedTeleport(Player p, CommandSender sendi) {
effects.getTitles().showTitle(RTPEffect_Titles.RTP_TITLE_TYPE.FAILED, p, p.getLocation(), 0, 0);
if (effects.getTitles().sendMsg(RTPEffect_Titles.RTP_TITLE_TYPE.FAILED))
if (p == sendi)
MessagesCore.FAILED_NOTSAFE.send(sendi, BetterRTP.getInstance().getRTP().maxAttempts);
MessagesCore.FAILED_NOTSAFE.send(p, BetterRTP.getInstance().getRTP().maxAttempts);
else
MessagesCore.OTHER_NOTSAFE.send(sendi, Arrays.asList(
BetterRTP.getInstance().getRTP().maxAttempts,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ public RTP_PlayerInfo() {
}

public RTP_PlayerInfo(boolean applyDelay, boolean applyCooldown) {
this.applyDelay = applyDelay;
this.applyCooldown = applyCooldown;
this(applyDelay, applyCooldown, true, true, true);
}

public RTP_PlayerInfo(boolean applyDelay,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ public boolean charge(CommandSender sendi, WorldPlayer pWorld) {
//Hunger Stuff
boolean took_food = false;
if (hunger != 0
&& sendi == player
&& pWorld.getPlayerInfo().isTakeHunger()
&& !PermissionNode.BYPASS_HUNGER.check(player)
&& (player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE)) {
boolean has_hunger = player.getFoodLevel() > hunger;
boolean has_hunger = player.getFoodLevel() >= hunger;
if (!has_hunger) {
MessagesCore.FAILED_HUNGER.send(sendi);
return false;
Expand All @@ -35,7 +36,10 @@ public boolean charge(CommandSender sendi, WorldPlayer pWorld) {
}
}
//Economy Stuff
if (e != null && pWorld.getPrice() != 0 && !PermissionNode.BYPASS_ECONOMY.check(sendi)) {
if (e != null
&& pWorld.getPrice() != 0
&& pWorld.getPlayerInfo().isTakeMoney()
&& !PermissionNode.BYPASS_ECONOMY.check(player)) {
try {
EconomyResponse r = e.withdrawPlayer(player, pWorld.getPrice());
boolean passed_economy = r.transactionSuccess();
Expand All @@ -54,11 +58,11 @@ public boolean charge(CommandSender sendi, WorldPlayer pWorld) {
return true;
}

public boolean hasBalance(CommandSender sendi, WorldPlayer pWorld) {
public boolean hasBalance(WorldPlayer pWorld) {
check(false);
//Economy Stuff
int price = pWorld.getPrice();
if (e != null && price != 0 && !PermissionNode.BYPASS_ECONOMY.check(sendi)) {
if (e != null && price != 0 && !PermissionNode.BYPASS_ECONOMY.check(pWorld.getPlayer())) {
try {
return e.getBalance(pWorld.getPlayer()) >= price;
} catch (Exception e) {
Expand All @@ -69,14 +73,14 @@ public boolean hasBalance(CommandSender sendi, WorldPlayer pWorld) {
return true;
}

public boolean hasHunger(CommandSender sendi, WorldPlayer pWorld) {
public boolean hasHunger(WorldPlayer pWorld) {
check(false);
Player player = pWorld.getPlayer();
//Hunger Stuff
if (hunger != 0
&& !PermissionNode.BYPASS_HUNGER.check(sendi)
&& !PermissionNode.BYPASS_HUNGER.check(player)
&& (player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE)) {
return player.getFoodLevel() > hunger;
return player.getFoodLevel() >= hunger;
}
//Default value
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ private String cooldownTime(PlayerData data, World world) {
RTPSetupInformation setup_info = new RTPSetupInformation(HelperRTP.getActualWorld(data.player, world), data.player, data.player, true);
WorldPlayer pWorld = HelperRTP.getPlayerWorld(setup_info);
Long cooldownTime = BetterRTP.getInstance().getCooldowns().locked(data.player) ? -1L :
(HelperRTP_Check.applyCooldown(data.player, data.player) ? pWorld.getCooldown() * 1000L : 0L);
(HelperRTP_Check.applyCooldown(data.player) ? pWorld.getCooldown() * 1000L : 0L);
return HelperDate.total(cooldownTime);
}

Expand All @@ -109,13 +109,13 @@ private String canRTPALL(Player player, World world) {
RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true);
WorldPlayer pWorld = HelperRTP.getPlayerWorld(setupInformation);
//Cooldown
if (HelperRTP_Check.isCoolingDown(player, player, pWorld))
if (HelperRTP_Check.isCoolingDown(player, pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_cooldown();
//Price
if (!BetterRTP.getInstance().getEco().hasBalance(player, pWorld))
if (!BetterRTP.getInstance().getEco().hasBalance(pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_balance();
//Hunger
if (!BetterRTP.getInstance().getEco().hasHunger(player, pWorld))
if (!BetterRTP.getInstance().getEco().hasHunger(pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_hunger();
//True
return BetterRTP.getInstance().getSettings().getPlaceholder_true();
Expand All @@ -128,7 +128,7 @@ private String canRTP_cooldown(Player player, World world) {
RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true);
WorldPlayer pWorld = HelperRTP.getPlayerWorld(setupInformation);
//Cooldown
if (HelperRTP_Check.isCoolingDown(player, player, pWorld))
if (HelperRTP_Check.isCoolingDown(player, pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_cooldown();
//True
return BetterRTP.getInstance().getSettings().getPlaceholder_true();
Expand All @@ -141,7 +141,7 @@ private String canRTP_price(Player player, World world) {
RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true);
WorldPlayer pWorld = HelperRTP.getPlayerWorld(setupInformation);
//Price
if (!BetterRTP.getInstance().getEco().hasBalance(player, pWorld))
if (!BetterRTP.getInstance().getEco().hasBalance(pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_balance();
//True
return BetterRTP.getInstance().getSettings().getPlaceholder_true();
Expand All @@ -154,7 +154,7 @@ private String canRTP_hunger(Player player, World world) {
RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true);
WorldPlayer pWorld = HelperRTP.getPlayerWorld(setupInformation);
//Hunger
if (!BetterRTP.getInstance().getEco().hasHunger(player, pWorld))
if (!BetterRTP.getInstance().getEco().hasHunger(pWorld))
return BetterRTP.getInstance().getSettings().getPlaceholder_hunger();
//True
return BetterRTP.getInstance().getSettings().getPlaceholder_true();
Expand Down
Loading

0 comments on commit 1e3e572

Please sign in to comment.