mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2026-10-25 13:30:37 +00:00
cooldown and canrtp placeholders
This commit is contained in:
1 parent
8976e2b0c9
commit
abb41c54df
6 files changed
+145
-35
No files matched your search
+52
-27
@@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTP.references.depends;
|
|||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation;
|
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperDate;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command;
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info;
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info;
|
||||||
@@ -11,12 +12,17 @@ import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
|
|||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.settings.Settings;
|
||||||
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class DepPlaceholderAPI extends PlaceholderExpansion {
|
public class DepPlaceholderAPI extends PlaceholderExpansion {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -43,29 +49,10 @@ public class DepPlaceholderAPI extends PlaceholderExpansion {
|
|||||||
if (request.equalsIgnoreCase("count")) {
|
if (request.equalsIgnoreCase("count")) {
|
||||||
return String.valueOf(data.getRtpCount());
|
return String.valueOf(data.getRtpCount());
|
||||||
} else if (request.equalsIgnoreCase("cooldown")) {
|
} else if (request.equalsIgnoreCase("cooldown")) {
|
||||||
CooldownData cooldownData = data.getCooldowns().getOrDefault(player.getWorld(), null);
|
return cooldown(data, player.getWorld());
|
||||||
if (cooldownData != null)
|
|
||||||
return String.valueOf(cooldownData.getTime());
|
|
||||||
else
|
|
||||||
return "None";
|
|
||||||
} else if (request.startsWith("cooldown_")) {
|
} else if (request.startsWith("cooldown_")) {
|
||||||
CooldownData cooldownData = null;
|
|
||||||
String world_name = request.replace("cooldown_", "");
|
|
||||||
if (world_name.length() > 0) {
|
|
||||||
for (World world : Bukkit.getWorlds()) {
|
|
||||||
if (world_name.equalsIgnoreCase(world.getName())) {
|
|
||||||
cooldownData = data.getCooldowns().getOrDefault(player.getWorld(), null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (cooldownData != null)
|
|
||||||
return String.valueOf(cooldownData.getTime());
|
|
||||||
else
|
|
||||||
return "None";
|
|
||||||
} else if (request.startsWith("rtpable_")) {
|
|
||||||
String world_name = request.replace("rtpable_", "");
|
|
||||||
World world = null;
|
World world = null;
|
||||||
|
String world_name = request.replace("cooldown_", "");
|
||||||
if (world_name.length() > 0) {
|
if (world_name.length() > 0) {
|
||||||
for (World _world : Bukkit.getWorlds()) {
|
for (World _world : Bukkit.getWorlds()) {
|
||||||
if (world_name.equalsIgnoreCase(_world.getName())) {
|
if (world_name.equalsIgnoreCase(_world.getName())) {
|
||||||
@@ -74,13 +61,51 @@ public class DepPlaceholderAPI extends PlaceholderExpansion {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (world == null) return "Invalid World";
|
return cooldown(data, world);
|
||||||
if (!PermissionNode.getAWorld(player, world.getName()))
|
} else if (request.startsWith("canrtp_")) {
|
||||||
return "No Permission";
|
String world_name = request.replace("canrtp_", "");
|
||||||
CooldownData cooldownData = HelperPlayer.getData(player).getCooldowns().getOrDefault(world, null);
|
World world = null;
|
||||||
//RTPWorld rtpWorld = BetterRTP.getInstance().getRTP().getPlayerWorld(new RTPSetupInformation());
|
if (world_name.length() > 0)
|
||||||
//if (cooldownData != null && BetterRTP.getInstance().getCooldowns().timeLeft(player, cooldownData, world))
|
for (World _world : Bukkit.getWorlds())
|
||||||
|
if (world_name.equalsIgnoreCase(_world.getName())) {
|
||||||
|
world = _world;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return canRTP(player, world);
|
||||||
|
} else if (request.equalsIgnoreCase("canrtp")) {
|
||||||
|
World world = player.getWorld();
|
||||||
|
return canRTP(player, world);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String cooldown(PlayerData data, World world) {
|
||||||
|
if (world == null) return "Invalid World";
|
||||||
|
if (BetterRTP.getInstance().getRTP().overriden.containsKey(world.getName()))
|
||||||
|
world = Bukkit.getWorld(BetterRTP.getInstance().getRTP().overriden.get(world.getName()));
|
||||||
|
CooldownData cooldownData = data.getCooldowns().getOrDefault(world, null);
|
||||||
|
if (cooldownData != null)
|
||||||
|
return HelperDate.stringFrom(cooldownData.getTime());
|
||||||
|
else
|
||||||
|
return "None";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String canRTP(Player player, World world) {
|
||||||
|
if (world == null) return "Invalid World";
|
||||||
|
if (BetterRTP.getInstance().getRTP().overriden.containsKey(world.getName()))
|
||||||
|
world = Bukkit.getWorld(BetterRTP.getInstance().getRTP().overriden.get(world.getName()));
|
||||||
|
//Permission
|
||||||
|
if (!PermissionNode.getAWorld(player, world.getName()))
|
||||||
|
return BetterRTP.getInstance().getSettings().getPlaceholder_nopermission();
|
||||||
|
RTPSetupInformation setupInformation = new RTPSetupInformation(world, player, player, true);
|
||||||
|
//Cooldown
|
||||||
|
if (!HelperRTP.isCoolingDown(player, player, setupInformation, false))
|
||||||
|
return BetterRTP.getInstance().getSettings().getPlaceholder_cooldown();
|
||||||
|
WorldPlayer worldPlayer = BetterRTP.getInstance().getRTP().getPlayerWorld(setupInformation);
|
||||||
|
//Price
|
||||||
|
if (!BetterRTP.getInstance().getEco().hasBalance(player, worldPlayer))
|
||||||
|
return BetterRTP.getInstance().getSettings().getPlaceholder_balance();
|
||||||
|
//True
|
||||||
|
return BetterRTP.getInstance().getSettings().getPlaceholder_true();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.helpers;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.settings.Settings;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class HelperDate {
|
||||||
|
|
||||||
|
public static Date getDate() {
|
||||||
|
return Calendar.getInstance().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String stringFrom(Long amount) {
|
||||||
|
Date current_date = HelperDate.getDate();
|
||||||
|
long min = Math.min(amount, current_date.getTime());
|
||||||
|
long max = Math.max(amount, current_date.getTime());
|
||||||
|
long diffInMillies = max - min;
|
||||||
|
long days = 0, hours = 0, minutes = 0, seconds = 0;
|
||||||
|
if (diffInMillies > 0) {
|
||||||
|
days = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
|
||||||
|
diffInMillies -= (((1000 * 60) * 60) * 24) * days;
|
||||||
|
hours = TimeUnit.HOURS.convert(diffInMillies, TimeUnit.MILLISECONDS);
|
||||||
|
diffInMillies -= ((1000 * 60) * 60) * hours;
|
||||||
|
minutes = TimeUnit.MINUTES.convert(diffInMillies, TimeUnit.MILLISECONDS);
|
||||||
|
diffInMillies -= (1000 * 60) * minutes;
|
||||||
|
seconds = TimeUnit.SECONDS.convert(diffInMillies, TimeUnit.MILLISECONDS);
|
||||||
|
}
|
||||||
|
Settings settings = BetterRTP.getInstance().getSettings();
|
||||||
|
String time_str = settings.getPlaceholder_timeFormat();
|
||||||
|
if (time_str.contains("%d"))
|
||||||
|
time_str = time_str.replace("%d", settings.getPlaceholder_timeDays().replace("{0}", String.valueOf(days)));
|
||||||
|
if (time_str.contains("%h"))
|
||||||
|
time_str = time_str.replace("%h", settings.getPlaceholder_timeDays().replace("{0}", String.valueOf(hours)));
|
||||||
|
if (time_str.contains("%m"))
|
||||||
|
time_str = time_str.replace("%m", settings.getPlaceholder_timeDays().replace("{0}", String.valueOf(max)));
|
||||||
|
if (time_str.contains("%s"))
|
||||||
|
time_str = time_str.replace("%s", settings.getPlaceholder_timeDays().replace("{0}", String.valueOf(seconds)));
|
||||||
|
|
||||||
|
return time_str;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -64,7 +64,7 @@ public class HelperRTP {
|
|||||||
delay = true;
|
delay = true;
|
||||||
RTPSetupInformation setup_info = new RTPSetupInformation(world, sendi, player, true,
|
RTPSetupInformation setup_info = new RTPSetupInformation(world, sendi, player, true,
|
||||||
biomes, delay, rtpType, locations, !ignoreCooldown && cooldownApplies(sendi, player)); //ignore cooldown or else
|
biomes, delay, rtpType, locations, !ignoreCooldown && cooldownApplies(sendi, player)); //ignore cooldown or else
|
||||||
if (ignoreCooldown || isCoolingDown(sendi, player, setup_info)) { //Is Cooling down
|
if (ignoreCooldown || isCoolingDown(sendi, player, setup_info, true)) { //Is Cooling down
|
||||||
getPl().getRTP().start(setup_info);
|
getPl().getRTP().start(setup_info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,12 +77,13 @@ public class HelperRTP {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isCoolingDown(CommandSender sendi, Player player, RTPSetupInformation setupInfo) {
|
public static boolean isCoolingDown(CommandSender sendi, Player player, RTPSetupInformation setupInfo, boolean sendText) {
|
||||||
if (!cooldownApplies(sendi, player)) //Bypassing/Forced?
|
if (!cooldownApplies(sendi, player)) //Bypassing/Forced?
|
||||||
return true;
|
return true;
|
||||||
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
||||||
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
||||||
getPl().getText().getCooldown(sendi, String.valueOf(-1L));
|
if (sendText)
|
||||||
|
getPl().getText().getCooldown(sendi, String.valueOf(-1L));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//Cooldown Data
|
//Cooldown Data
|
||||||
@@ -91,13 +92,15 @@ public class HelperRTP {
|
|||||||
if (cooldownData.getTime() == 0) //Global cooldown with nothing
|
if (cooldownData.getTime() == 0) //Global cooldown with nothing
|
||||||
return true;
|
return true;
|
||||||
else if (cooldownHandler.locked(player)) { //Infinite cooldown (locked)
|
else if (cooldownHandler.locked(player)) { //Infinite cooldown (locked)
|
||||||
getPl().getText().getNoPermission(sendi);
|
if (sendText)
|
||||||
|
getPl().getText().getNoPermission(sendi);
|
||||||
return false;
|
return false;
|
||||||
} else { //Normal cooldown
|
} else { //Normal cooldown
|
||||||
long timeLeft = cooldownHandler.timeLeft(player, cooldownData, BetterRTP.getInstance().getRTP().getPlayerWorld(setupInfo));
|
long timeLeft = cooldownHandler.timeLeft(player, cooldownData, BetterRTP.getInstance().getRTP().getPlayerWorld(setupInfo));
|
||||||
if (timeLeft > 0) {
|
if (timeLeft > 0) {
|
||||||
//Still cooling down
|
//Still cooling down
|
||||||
getPl().getText().getCooldown(sendi, String.valueOf(timeLeft));
|
if (sendText)
|
||||||
|
getPl().getText().getCooldown(sendi, String.valueOf(timeLeft));
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
//Reset timer, but allow them to tp
|
//Reset timer, but allow them to tp
|
||||||
|
|||||||
+1
-2
@@ -1,8 +1,8 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
|
package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
|
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -10,7 +10,6 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
|
public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
|
||||||
public World world;
|
public World world;
|
||||||
|
|||||||
@@ -22,6 +22,17 @@ public class Settings {
|
|||||||
@Getter private boolean useLocationsInSameWorld;
|
@Getter private boolean useLocationsInSameWorld;
|
||||||
@Getter private boolean permissionGroupEnabled;
|
@Getter private boolean permissionGroupEnabled;
|
||||||
@Getter private boolean queueEnabled;
|
@Getter private boolean queueEnabled;
|
||||||
|
//Placeholders
|
||||||
|
@Getter private String placeholder_true;
|
||||||
|
@Getter private String placeholder_nopermission;
|
||||||
|
@Getter private String placeholder_cooldown;
|
||||||
|
@Getter private String placeholder_balance;
|
||||||
|
@Getter private String placeholder_timeFormat;
|
||||||
|
@Getter private String placeholder_timeDays;
|
||||||
|
@Getter private String placeholder_timeHours;
|
||||||
|
@Getter private String placeholder_timeMinutes;
|
||||||
|
@Getter private String placeholder_timeSeconds;
|
||||||
|
|
||||||
|
|
||||||
public void load() { //Load Settings
|
public void load() { //Load Settings
|
||||||
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
|
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
|
||||||
@@ -39,6 +50,16 @@ public class Settings {
|
|||||||
useLocationIfAvailable = FileBasics.FILETYPE.LOCATIONS.getBoolean("UseLocationIfAvailable");
|
useLocationIfAvailable = FileBasics.FILETYPE.LOCATIONS.getBoolean("UseLocationIfAvailable");
|
||||||
locationNeedPermission = FileBasics.FILETYPE.LOCATIONS.getBoolean("RequirePermission");
|
locationNeedPermission = FileBasics.FILETYPE.LOCATIONS.getBoolean("RequirePermission");
|
||||||
useLocationsInSameWorld = FileBasics.FILETYPE.LOCATIONS.getBoolean("UseLocationsInSameWorld");
|
useLocationsInSameWorld = FileBasics.FILETYPE.LOCATIONS.getBoolean("UseLocationsInSameWorld");
|
||||||
|
//Placeholders
|
||||||
|
placeholder_true = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Success");
|
||||||
|
placeholder_nopermission = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.NoPermission");
|
||||||
|
placeholder_cooldown = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Cooldown");
|
||||||
|
placeholder_balance = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Price");
|
||||||
|
placeholder_timeFormat = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Format");
|
||||||
|
placeholder_timeDays = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Days");
|
||||||
|
placeholder_timeHours = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Hours");
|
||||||
|
placeholder_timeMinutes = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Minutes");
|
||||||
|
placeholder_timeSeconds = FileBasics.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Seconds");
|
||||||
depends.load();
|
depends.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,21 @@
|
|||||||
|
## These are a list of placeholders for your use, Editting these will do nothing!
|
||||||
betterrtp_count: 'Get total amount of rtp''s done'
|
betterrtp_count: 'Get total amount of rtp''s done'
|
||||||
betterrtp_cooldown: 'Get cooldown in current world'
|
betterrtp_cooldown: 'Get cooldown in current world'
|
||||||
betterrtp_cooldown_<world_name>: 'Get cooldown of a specified world'
|
betterrtp_cooldown_<world_name>: 'Get cooldown of a specified world'
|
||||||
|
betterrtp_canrtp_<world_name>: 'Get the reason or yes output if player can rtp in set world'
|
||||||
|
betterrtp_canrtp: 'Get the reason or yes output if player can rtp in current world'
|
||||||
|
|
||||||
|
##Config section for placeholder outputs
|
||||||
|
Config:
|
||||||
|
TimeFormat:
|
||||||
|
Days: '{0} Day(s)'
|
||||||
|
Hours: '{0} Hours'
|
||||||
|
Minutes: '{0} Mins'
|
||||||
|
Seconds: '{0} Secs'
|
||||||
|
#Placeholder %d = DAYS, %h = HOURS, %m = MINUTES, %s = SECONDS
|
||||||
|
Format: '%d, %h, %m and %s'
|
||||||
|
CanRTP:
|
||||||
|
Success: '&aYes'
|
||||||
|
NoPermission: '&cNo Permission'
|
||||||
|
Cooldown: '&fCooling Down'
|
||||||
|
Price: '&cNo. &7Reason: &eBankrupt'
|
||||||
Reference in new issue
Block a user