From 831f5d29da01af9f690afb90a9b521730260c944 Mon Sep 17 00:00:00 2001 From: RonanCraft Date: Thu, 13 Oct 2022 17:17:04 -0400 Subject: [PATCH] placeholder fixes + info command player argument --- pom.xml | 2 +- .../SuperRonanCraft/BetterRTP/BetterRTP.java | 17 +- .../player/commands/types/CmdHelp.java | 4 +- .../player/commands/types/CmdInfo.java | 81 ++--- .../player/commands/types/CmdLocation.java | 2 +- .../BetterRTP/player/rtp/RTPParticles.java | 1 + .../BetterRTP/player/rtp/RTPPotions.java | 1 + .../BetterRTP/player/rtp/RTPSounds.java | 2 +- .../references/depends/DepPlaceholderAPI.java | 68 ++--- .../BetterRTP/references/file/LangFile.java | 113 ------- .../references/file/MessagesOLD.java | 285 ------------------ .../references/helpers/HelperDate.java | 34 ++- .../references/helpers/HelperRTP.java | 55 ++-- .../references/helpers/HelperRTP_Check.java | 12 +- .../references/messages/MessageData.java | 1 - .../placeholder/PlaceholderAnalyzer.java | 20 +- .../messages/placeholder/Placeholders.java | 1 + .../rtpinfo/worlds/RTPWorld_Defaulted.java | 2 +- .../rtpinfo/worlds/WorldCustom.java | 10 +- .../rtpinfo/worlds/WorldDefault.java | 1 + .../rtpinfo/worlds/WorldLocations.java | 6 +- .../rtpinfo/worlds/WorldPermissionGroup.java | 6 +- .../references/settings/Settings.java | 4 +- .../references/settings/SoftDepends.java | 1 + src/main/resources/placeholders.yml | 11 +- 25 files changed, 194 insertions(+), 546 deletions(-) delete mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/LangFile.java delete mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/MessagesOLD.java diff --git a/pom.xml b/pom.xml index ba1827c..62d86e3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTP jar - 3.4.5.1-DEV + 3.5.0-DEV 1.8 diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java index fbd6145..2dec9b8 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/BetterRTP.java @@ -5,22 +5,21 @@ import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.events.EventListener; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP; +import me.SuperRonanCraft.BetterRTP.references.Permissions; import me.SuperRonanCraft.BetterRTP.references.WarningHandler; import me.SuperRonanCraft.BetterRTP.references.database.DatabaseHandler; +import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy; import me.SuperRonanCraft.BetterRTP.references.depends.DepPlaceholderAPI; +import me.SuperRonanCraft.BetterRTP.references.file.Files; +import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; -import me.SuperRonanCraft.BetterRTP.references.rtpinfo.QueueHandler; -import me.SuperRonanCraft.BetterRTP.references.Permissions; -import me.SuperRonanCraft.BetterRTP.references.web.Updater; -import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy; -import me.SuperRonanCraft.BetterRTP.references.file.Files; -import me.SuperRonanCraft.BetterRTP.references.file.MessagesOLD; -import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; -import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; -import me.SuperRonanCraft.BetterRTP.references.settings.Settings; import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerDataManager; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.QueueHandler; +import me.SuperRonanCraft.BetterRTP.references.settings.Settings; import me.SuperRonanCraft.BetterRTP.references.web.Metrics; +import me.SuperRonanCraft.BetterRTP.references.web.Updater; import net.kyori.adventure.platform.bukkit.BukkitAudiences; import org.bukkit.Bukkit; import org.bukkit.command.Command; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java index f8ad66e..af82a85 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java @@ -1,15 +1,13 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types; -import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; -import me.SuperRonanCraft.BetterRTP.references.file.MessagesOLD; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; import org.bukkit.command.CommandSender; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java index b16c0e8..d2009f8 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java @@ -9,6 +9,7 @@ import me.SuperRonanCraft.BetterRTP.references.PermissionNode; import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; import me.SuperRonanCraft.BetterRTP.references.messages.Message; 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.rtpinfo.QueueHandler; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldDefault; @@ -42,18 +43,26 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { if (args.length > 2 && Bukkit.getWorld(args[2]) != null) { sendInfoWorld(sendi, infoGetWorld(sendi, Bukkit.getWorld(args[2]), null, null)); } else if (sendi instanceof Player) { //Personalize with permission groups - World world = null; - Player player = null; - if (args.length > 2) { - player = Bukkit.getPlayer(args[2]); - if (player != null) - world = player.getWorld(); - } - if (world == null) - world = ((Player) sendi).getWorld(); + Player player = (Player) sendi; + World world = player.getWorld(); sendInfoWorld(sendi, infoGetWorld(sendi, world, player, null)); } else infoWorld(sendi); + } else if (args[1].equalsIgnoreCase(CmdInfoSub.PLAYER.name())) { + World world = null; + Player player = null; + if (args.length > 2) { + player = Bukkit.getPlayer(args[2]); + if (player != null) + world = player.getWorld(); + } + if (player == null) { + MessagesCore.NOTONLINE.send(sendi, args.length > 2 ? args[2] : "NULL"); + return; + } + if (world == null) + world = player.getWorld(); + sendInfoWorld(sendi, infoGetWorld(sendi, world, player, null)); } } else infoWorld(sendi); @@ -65,7 +74,7 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { } enum CmdInfoSub { //Sub commands, future expansions - PARTICLES, SHAPES, POTION_EFFECTS, WORLD + PARTICLES, SHAPES, POTION_EFFECTS, WORLD, PLAYER } //Particles @@ -116,40 +125,40 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable { sendInfoWorld(sendi, info); } - public static List infoGetWorld(CommandSender sendi, World w, Player player, WorldPlayer _rtpworld) { //Specific world + public static List infoGetWorld(CommandSender sendi, World world, Player player, WorldPlayer _rtpworld) { //Specific world List info = new ArrayList<>(); BetterRTP pl = BetterRTP.getInstance(); String _true = "&aTrue", _false = "&bFalse"; - info.add("&bRTP info for &7" + w.getName() + (player != null ? " &d(personalized)" : "")); + info.add("&bRTP info for &7" + world.getName() + (player != null ? " &d(personalized)" : "")); info.add("&7- &eViewing as: &b" + (player != null ? player.getName() : "ADMIN")); - info.add("&7- &6Allowed: " + (player != null ? PermissionNode.getAWorld(player, w.getName()) ? _true : _false : "&cN/A")); - if (pl.getRTP().getDisabledWorlds().contains(w.getName())) //World disabled + info.add("&7- &6Allowed: " + (player != null ? PermissionNode.getAWorld(player, world.getName()) ? _true : _false : "&cN/A")); + if (pl.getRTP().getDisabledWorlds().contains(world.getName()) && !pl.getRTP().overriden.containsKey(world.getName())) //World disabled info.add("&7- &eDisabled: " + _true); else { info.add("&7- &eDisabled: " + _false); - if (pl.getRTP().overriden.containsKey(w.getName())) //World Overriden - info.add("&7- &6Overriden: " + _true + " &7- target `" + pl.getRTP().overriden.get(w.getName()) + "`"); - else { + if (pl.getRTP().overriden.containsKey(world.getName())) { //World Overriden + world = Bukkit.getWorld(pl.getRTP().overriden.get(world.getName())); + info.add("&7- &6Overriden: " + _true + " &7- target `" + world.getName() + "`"); + } else info.add("&7- &6Overriden&7: " + _false); - if (_rtpworld == null) - _rtpworld = HelperRTP.getPlayerWorld(new RTPSetupInformation(w, player != null ? player : sendi, player, player != null)); - WorldDefault worldDefault = BetterRTP.getInstance().getRTP().getRTPdefaultWorld(); - info.add("&7- &eSetup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup")); - info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false)); - info.add("&7- &eWorld Type&7: &f" + _rtpworld.getWorldtype().name()); - info.add("&7- &6Center X&7: &f" + _rtpworld.getCenterX() + getInfo(_rtpworld, worldDefault, "centerx")); - info.add("&7- &eCenter Z&7: &f" + _rtpworld.getCenterZ() + getInfo(_rtpworld, worldDefault, "centerz")); - info.add("&7- &6Max Radius&7: &f" + _rtpworld.getMaxRadius() + getInfo(_rtpworld, worldDefault, "maxrad")); - info.add("&7- &eMin Radius&7: &f" + _rtpworld.getMinRadius() + getInfo(_rtpworld, worldDefault, "minrad")); - info.add("&7- &6Min Y&7: &f" + _rtpworld.getMinY()); - info.add("&7- &eMax Y&7: &f" + _rtpworld.getMaxY()); - info.add("&7- &6Price&7: &f" + _rtpworld.getPrice() + getInfo(_rtpworld, worldDefault, "price")); - info.add("&7- &eCooldown&7: &f" + _rtpworld.getCooldown() + getInfo(_rtpworld, worldDefault, "cooldown")); - info.add("&7- &6Biomes&7: &f" + _rtpworld.getBiomes().toString()); - info.add("&7- &eShape&7: &f" + _rtpworld.getShape().toString() + getInfo(_rtpworld, worldDefault, "shape")); - info.add("&7- &6Permission Group&7: " + (_rtpworld.getConfig() != null ? "&a" + _rtpworld.getConfig().getGroupName() : "&cN/A")); - info.add("&7- &eQueue Available&7: " + QueueHandler.getApplicable(_rtpworld).size()); - } + if (_rtpworld == null) + _rtpworld = HelperRTP.getPlayerWorld(new RTPSetupInformation(world, player != null ? player : sendi, player, player != null)); + WorldDefault worldDefault = BetterRTP.getInstance().getRTP().getRTPdefaultWorld(); + info.add("&7- &eSetup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup")); + info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false)); + info.add("&7- &eWorld Type&7: &f" + _rtpworld.getWorldtype().name()); + info.add("&7- &6Center X&7: &f" + _rtpworld.getCenterX() + getInfo(_rtpworld, worldDefault, "centerx")); + info.add("&7- &eCenter Z&7: &f" + _rtpworld.getCenterZ() + getInfo(_rtpworld, worldDefault, "centerz")); + info.add("&7- &6Max Radius&7: &f" + _rtpworld.getMaxRadius() + getInfo(_rtpworld, worldDefault, "maxrad")); + info.add("&7- &eMin Radius&7: &f" + _rtpworld.getMinRadius() + getInfo(_rtpworld, worldDefault, "minrad")); + info.add("&7- &6Min Y&7: &f" + _rtpworld.getMinY()); + info.add("&7- &eMax Y&7: &f" + _rtpworld.getMaxY()); + info.add("&7- &6Price&7: &f" + _rtpworld.getPrice() + getInfo(_rtpworld, worldDefault, "price")); + info.add("&7- &eCooldown&7: &f" + _rtpworld.getCooldown() + getInfo(_rtpworld, worldDefault, "cooldown")); + info.add("&7- &6Biomes&7: &f" + _rtpworld.getBiomes().toString()); + info.add("&7- &eShape&7: &f" + _rtpworld.getShape().toString() + getInfo(_rtpworld, worldDefault, "shape")); + info.add("&7- &6Permission Group&7: " + (_rtpworld.getConfig() != null ? "&a" + _rtpworld.getConfig().getGroupName() : "&cN/A")); + info.add("&7- &eQueue Available&7: " + QueueHandler.getApplicable(_rtpworld).size()); } return info; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java index 3f7116e..b661f85 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java @@ -84,7 +84,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable { } private static HashMap getLocations() { - return BetterRTP.getInstance().getRTP().RTPworldLocations; + return BetterRTP.getInstance().getRTP().getRTPworldLocations(); } //Get locations a player has access to diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPParticles.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPParticles.java index 42afd77..717468b 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPParticles.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPParticles.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import me.SuperRonanCraft.BetterRTP.references.file.FileOther; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.util.Vector; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPotions.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPotions.java index 68f2657..2687a34 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPotions.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPotions.java @@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import me.SuperRonanCraft.BetterRTP.references.file.FileOther; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java index 02aa680..1da13ac 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java @@ -5,7 +5,7 @@ import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.player.rtp.packets.WrapperPlayServerNamedSoundEffect; -import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import me.SuperRonanCraft.BetterRTP.references.file.FileOther; import org.bukkit.Location; import org.bukkit.Sound; import org.bukkit.entity.Player; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java index 0aef8dc..0b6f843 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPlaceholderAPI.java @@ -7,19 +7,13 @@ import me.SuperRonanCraft.BetterRTP.references.helpers.*; import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; -import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler; -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 org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.util.Date; -import java.util.concurrent.TimeUnit; - public class DepPlaceholderAPI extends PlaceholderExpansion { @NotNull @@ -45,29 +39,20 @@ public class DepPlaceholderAPI extends PlaceholderExpansion { PlayerData data = HelperPlayer.getData(player); if (request.equalsIgnoreCase("count")) { return String.valueOf(data.getRtpCount()); - } else if (request.equalsIgnoreCase("cooldown")) { - return cooldown(data, player.getWorld()); - } else if (request.startsWith("cooldown_")) { - World world = null; - String world_name = request.replace("cooldown_", ""); - if (world_name.length() > 0) { - for (World _world : Bukkit.getWorlds()) { - if (world_name.equalsIgnoreCase(_world.getName())) { - world = _world; - break; - } - } + } else if (request.startsWith("cooldown")) { + if (request.equalsIgnoreCase("cooldown")) { + return cooldown(data, player.getWorld()); + } else if (request.startsWith("cooldown_")) { + World world = getWorld(request.replace("cooldown_", "")); + return cooldown(data, world); + } else if (request.equalsIgnoreCase("cooldowntime")) { + return cooldownTime(data, player.getWorld()); + } else if (request.startsWith("cooldowntime_")) { + World world = getWorld(request.replace("cooldowntime_", "")); + return cooldownTime(data, world); } - return cooldown(data, world); } else if (request.startsWith("canrtp_")) { - String world_name = request.replace("canrtp_", ""); - World world = null; - if (world_name.length() > 0) - for (World _world : Bukkit.getWorlds()) - if (world_name.equalsIgnoreCase(_world.getName())) { - world = _world; - break; - } + World world = getWorld(request.replace("canrtp_", "")); return canRTP(player, world); } else if (request.equalsIgnoreCase("canrtp")) { World world = player.getWorld(); @@ -78,19 +63,23 @@ public class DepPlaceholderAPI extends PlaceholderExpansion { 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); + CooldownData cooldownData = data.getCooldowns().getOrDefault(HelperRTP.getActualWorld(data.player, world), null); if (cooldownData != null) - return HelperDate.stringFrom(cooldownData.getTime()); + return HelperDate.left(cooldownData.getTime()); else - return "None"; + return HelperDate.total(0L); + } + + private String cooldownTime(PlayerData data, World world) { + if (world == null) return "Invalid World"; + RTPSetupInformation setup_info = new RTPSetupInformation(HelperRTP.getActualWorld(data.player, world), data.player, data.player, true); + WorldPlayer pWorld = HelperRTP.getPlayerWorld(setup_info); + return HelperDate.total(HelperRTP_Check.applyCooldown(data.player, data.player) ? pWorld.getCooldown() * 1000L : 0L); } 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())); + world = HelperRTP.getActualWorld(player, world); //Permission if (!PermissionNode.getAWorld(player, world.getName())) return BetterRTP.getInstance().getSettings().getPlaceholder_nopermission(); @@ -108,4 +97,15 @@ public class DepPlaceholderAPI extends PlaceholderExpansion { //True return BetterRTP.getInstance().getSettings().getPlaceholder_true(); } + + private World getWorld(String world_name) { + World world = null; + if (world_name.length() > 0) + for (World _world : Bukkit.getWorlds()) + if (world_name.equalsIgnoreCase(_world.getName())) { + world = _world; + break; + } + return world; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/LangFile.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/LangFile.java deleted file mode 100644 index c6cf8b0..0000000 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/LangFile.java +++ /dev/null @@ -1,113 +0,0 @@ -package me.SuperRonanCraft.BetterRTP.references.file; - -import me.SuperRonanCraft.BetterRTP.BetterRTP; -import org.bukkit.configuration.file.YamlConfiguration; - -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.Arrays; -import java.util.List; - -public class LangFile { - private YamlConfiguration config = new YamlConfiguration(); - - String getString(String path) { - if (config.isString(path)) - return config.getString(path); - return "SOMETHING WENT WRONG"; - } - - @SuppressWarnings("all") - public List getStringList(String path) { - if (config.isList(path)) - return config.getStringList(path); - return Arrays.asList("SOMETHING WENT WRONG!"); - } - - public boolean getBoolean(String path) { - return config.getBoolean(path); - } - - @SuppressWarnings("all") - public void load() { - generateDefaults(); - String fileName = "lang" + File.separator + getPl().getFiles().getType(FileOther.FILETYPE.CONFIG).getString("Language-File"); - File file = new File(getPl().getDataFolder(), fileName); - if (!file.exists()) { - fileName = "lang" + File.separator + defaultLangs[0]; //Default to english - file = new File(getPl().getDataFolder(), fileName); - } - try { - config.load(file); - InputStream in = BetterRTP.getInstance().getResource(fileName); - if (in == null) - in = getPl().getResource(fileName.replace(File.separator, "/")); - if (in != null) { - config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in))); - config.options().copyDefaults(true); - in.close(); - } - config.save(file); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private final String[] defaultLangs = { - "chs.yml", //Chinese Simplified (OasisAkari) - "cht.yml", //Chinese (OasisAkari & kamiya10) - "cs.yml", //Czech (Lewisparkle) - "da.yml", //Danish (Janbchr) - "de.yml", //German (IBimsDaNico#8690) - "en.yml", - "es.yml", //Spanish (emgv) - "fr.yml", //French (At0micA55 & Mrflo67) - "he.yml", //Hebrew (thefourcraft) - "it.yml", //Italian (iVillager) - "ja.yml", //Japanese (ViaSnake) - "nl.yml", //Dutch (QuestalNetwork) (GeleVla) - "no.yml", //Norwegian (Fraithor & Janbchr) - "pl.yml", //Polish (Farum & TeksuSiK) - "ro.yml", //Romanian (GamingXBlood) - "ru.yml", //Russian (Logan) - "vi.yml", //Vietnamese (VoChiDanh#0862) - }; - - private void generateDefaults() { - //Generate all language files - for (String yaml : defaultLangs) { - generateDefaultConfig(yaml, yaml); //Generate its own defaults - if (!yaml.equals(defaultLangs[0])) - generateDefaultConfig(yaml, defaultLangs[0]); //Generate the english defaults (incase) - } - } - - private void generateDefaultConfig(String fName, String fNameDef /*Name of file to generate defaults*/) { - String fileName = "lang" + File.separator + fName; - File file = new File(getPl().getDataFolder(), fileName); - if (!file.exists()) - getPl().saveResource(fileName, false); - try { - YamlConfiguration config = new YamlConfiguration(); - config.load(file); - String fileNameDef = "lang" + File.separator + fNameDef; - InputStream in = BetterRTP.getInstance().getResource(fileNameDef); - if (in == null) - in = getPl().getResource(fileNameDef.replace(File.separator, "/")); - if (in != null) { - config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in))); - config.options().copyDefaults(true); - in.close(); - } - config.save(file); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - private BetterRTP getPl() { - return BetterRTP.getInstance(); - } -} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/MessagesOLD.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/MessagesOLD.java deleted file mode 100644 index 952270e..0000000 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/file/MessagesOLD.java +++ /dev/null @@ -1,285 +0,0 @@ -package me.SuperRonanCraft.BetterRTP.references.file; - -import me.SuperRonanCraft.BetterRTP.BetterRTP; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; - -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class MessagesOLD { - private final String preM = "Messages.", preH = "Help.", preU = "Usage."; - - private FileLanguage getLang() { - return BetterRTP.getInstance().getFiles().getLang(); - } - - public void sms(CommandSender sendi, String msg) { - if (!msg.equals("")) - sendi.sendMessage(colorPre(msg)); - } - - public void sms(CommandSender sendi, List msg) { - if (msg != null && !msg.isEmpty()) { - msg.forEach(str -> - msg.set(msg.indexOf(str), color(str))); - sendi.sendMessage(msg.toArray(new String[0])); - } - } - - //SUCCESS - public void getSuccessPaid(CommandSender sendi, int price, String x, String y, String z, String world, int - attempts) { - sms(sendi, getLang().getString(preM + "Success.Paid").replaceAll("%price%", String.valueOf(price)).replaceAll - ("%x%", x).replaceAll("%y%", y).replaceAll("%z%", z).replaceAll("%world%", world).replaceAll - ("%attempts%", Integer.toString(attempts))); - } - - public void getSuccessBypass(CommandSender sendi, String x, String y, String z, String world, int attemtps) { - sms(sendi, getLang().getString(preM + "Success.Bypass").replaceAll("%x%", x).replaceAll("%y%", y).replaceAll - ("%z%", z).replaceAll("%world%", world).replaceAll("%attempts%", Integer.toString(attemtps))); - } - - public void getSuccessLoading(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Success.Loading")); - } - - public void getSuccessTeleport(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Success.Teleport")); - } - - //FAILED - public void getFailedNotSafe(CommandSender sendi, int attempts) { - sms(sendi, getLang().getString(preM + "Failed.NotSafe").replaceAll("%attempts%", Integer.toString(attempts))); - } - - public void getFailedPrice(CommandSender sendi, int price) { - sms(sendi, getLang().getString(preM + "Failed.Price").replaceAll("%price%", String.valueOf(price))); - } - - public void getFailedHunger(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Failed.Hunger")); - } - - public void getOtherNotSafe(CommandSender sendi, int attempts, String player) { - sms(sendi, getLang().getString(preM + "Other.NotSafe").replaceAll("%attempts%", Integer.toString(attempts)) - .replaceAll("%player%", player)); - } - - public void getOtherSuccess(CommandSender sendi, String player, String x, String y, String z, String world, int - attempts) { - sms(sendi, getLang().getString(preM + "Other.Success").replaceAll("%player%", player).replaceAll("%x%", x) - .replaceAll("%y%", y).replaceAll("%z%", z).replaceAll("%world%", world).replaceAll("%attempts%", - Integer.toString(attempts))); - } - - public void getOtherBiome(CommandSender sendi, String biome) { - sms(sendi, getLang().getString(preM + "Other.Biome").replaceAll("%biome%", biome)); - } - - public void getNotExist(CommandSender sendi, String world) { - sms(sendi, getLang().getString(preM + "NotExist").replaceAll("%world%", world)); - } - - public void getReload(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Reload")); - } - - public void getNoPermission(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "NoPermission.Basic")); - } - - public void getNoPermissionWorld(CommandSender sendi, String world) { - sms(sendi, getLang().getString(preM + "NoPermission.World").replaceAll("%world%", world)); - } - - public void getDisabledWorld(CommandSender sendi, String world) { - sms(sendi, getLang().getString(preM + "DisabledWorld").replaceAll("%world%", world)); - } - - public void getCooldown(CommandSender sendi, String time) { - sms(sendi, getLang().getString(preM + "Cooldown").replaceAll("%time%", time)); - } - - public void getInvalid(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preM + "Invalid").replaceAll("%command%", cmd)); - } - - public void getNotOnline(CommandSender sendi, String player) { - sms(sendi, getLang().getString(preM + "NotOnline").replaceAll("%player%", player)); - } - - public void getDelay(CommandSender sendi, int time) { - sms(sendi, getLang().getString(preM + "Delay").replaceAll("%time%", String.valueOf(time))); - } - - public void getSignCreated(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preM + "Sign").replaceAll("%command%", cmd)); - } - - public void getMoved(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Moved")); - } - - public void getAlready(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Already")); - } - - private String getPrefix() { - return getLang().getString(preM + "Prefix"); - } - - public String color(String str) { - return translateHexColorCodes(str); - } - - //Thank you to zwrumpy on Spigot! (https://www.spigotmc.org/threads/hex-color-code-translate.449748/#post-4270781) - //Supports 1.8 to 1.18 - private static String translateHexColorCodes(String message) { - Pattern pattern = Pattern.compile("#[a-fA-F0-9]{6}"); - Matcher matcher = pattern.matcher(message); - while (matcher.find()) { - String hexCode = message.substring(matcher.start(), matcher.end()); - String replaceSharp = hexCode.replace('#', 'x'); - - char[] ch = replaceSharp.toCharArray(); - StringBuilder builder = new StringBuilder(""); - for (char c : ch) { - builder.append("&").append(c); - } - - message = message.replace(hexCode, builder.toString()); - matcher = pattern.matcher(message); - } - return ChatColor.translateAlternateColorCodes('&', message); - } - - public String colorPre(String str) { - return color(getPrefix() + str); - } - - //Edit - public void getEditError(CommandSender sendi) { - sms(sendi, getLang().getString(preM + "Edit.Error")); - } - - public void getEditSet(CommandSender sendi, String type, String value) { - sms(sendi, getLang().getString(preM + "Edit.Set").replaceAll("%type%", type).replaceAll("%value%", value)); - } - - public void getEditRemove(CommandSender sendi, String world) { - sms(sendi, getLang().getString(preM + "Edit.Remove").replaceAll("%world%", world)); - } - - //Help - public String getHelpPrefix() { - return getLang().getString(preH + "Prefix"); - } - - public String getHelpMain() { //rtp - return getLang().getString(preH + "Main"); - } - - public String getHelpBiome() { //rtp biome - return getLang().getString(preH + "Biome"); - } - - public String getHelpEdit() { //rtp edit - return getLang().getString(preH + "Edit"); - } - - public String getHelpHelp() { //rtp help - return getLang().getString(preH + "Help"); - } - - public String getHelpInfo() { //rtp info - return getLang().getString(preH + "Info"); - } - - public String getHelpPlayer() { //rtp player - return getLang().getString(preH + "Player"); - } - - public String getHelpReload() { - return getLang().getString(preH + "Reload"); - } - - public String getHelpSettings() { //rtp settings - return getLang().getString(preH + "Settings"); - } - - public String getHelpTest() { //rtp test - return getLang().getString(preH + "Test"); - } - - public String getHelpVersion() { //rtp version - return getLang().getString(preH + "Version"); - } - - public String getHelpWorld() { //rtp world - return getLang().getString(preH + "World"); - } - - public String getHelpLocation() { //rtp location - return getLang().getString(preH + "Location"); - } - - //Usage - public void getUsageRTPOther(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Player").replaceAll("%command%", cmd)); - } - - public void getUsageWorld(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "World").replaceAll("%command%", cmd)); - } - - public void getUsageBiome(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Biome").replaceAll("%command%", cmd)); - } - - public void getUsageLocation(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Location").replaceAll("%command%", cmd)); - } - - public void getUsageEditLocation(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.Location").replaceAll("%command%", cmd)); - } - - public void getUsageEdit(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.Base").replaceAll("%command%", cmd)); - } - - public void getUsageEditDefault(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.Default").replaceAll("%command%", cmd)); - } - - public void getUsageEditWorld(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.World").replaceAll("%command%", cmd)); - } - - public void getUsageWorldtype(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.Worldtype").replaceAll("%command%", cmd)); - } - - public void getUsageOverride(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.Override").replaceAll("%command%", cmd)); - } - - public void getUsageBlacklistedBlocks(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.BlacklistedBlocks").replaceAll("%command%", cmd)); - } - - public void getUsagePermissionGroup(CommandSender sendi, String cmd) { - sms(sendi, getLang().getString(preU + "Edit.PermissionGroup").replaceAll("%command%", cmd)); - } - - // Not Found - public void error(CommandSender sendi) { - sms(sendi, "&cERROR &7Seems like your Administrator did not update their language file!"); - } - - public void getNotPlayer(CommandSender sendi, String cmd) { - sms(sendi, "Must be a player to use this command! Try '/" + cmd + " help'"); - } -} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperDate.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperDate.java index d9aa483..9353bb0 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperDate.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperDate.java @@ -13,10 +13,20 @@ public class HelperDate { return Calendar.getInstance().getTime(); } - public static String stringFrom(Long amount) { + public static String left(Long amount) { Date current_date = HelperDate.getDate(); - long min = Math.min(amount, current_date.getTime()); - long max = Math.max(amount, current_date.getTime()); + return fromTo(current_date.getTime(), amount); + } + public static String total(Long amount) { + return fromTo(0L, amount); + } + + public static String fromTo(Long from, Long to) { + Settings settings = BetterRTP.getInstance().getSettings(); + long min = Math.min(from, to); + long max = Math.max(from, to); + if (max == min) + return settings.getPlaceholder_timeZero(); long diffInMillies = max - min; long days = 0, hours = 0, minutes = 0, seconds = 0; if (diffInMillies > 0) { @@ -28,16 +38,14 @@ public class HelperDate { 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))); + String time_str = ""; + if (days > 0) + time_str += settings.getPlaceholder_timeDays().replace("{0}", String.valueOf(days)); + if (days > 0 || hours > 0) + time_str += settings.getPlaceholder_timeHours().replace("{0}", String.valueOf(hours)); + if (days > 0 || hours > 0 || minutes > 0) + time_str += settings.getPlaceholder_timeMinutes().replace("{0}", String.valueOf(minutes)); + time_str += settings.getPlaceholder_timeSeconds().replace("{0}", String.valueOf(seconds)); return time_str; } 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 a22511b..34a4c1c 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java @@ -39,26 +39,23 @@ public class HelperRTP { public static void tp(@NotNull Player player, CommandSender sendi, @Nullable World world, List biomes, RTP_TYPE rtpType, boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) { - if (world == null) - world = player.getWorld(); - if (BetterRTP.getInstance().getRTP().overriden.containsKey(world.getName())) - world = Bukkit.getWorld(BetterRTP.getInstance().getRTP().overriden.get(world.getName())); + world = getActualWorld(player, world); RTPSetupInformation setup_info = new RTPSetupInformation( world, sendi, player, true, biomes, - !ignoreDelay && HelperRTP_Check.isDelay(player, sendi), + !ignoreDelay && HelperRTP_Check.applyDelay(player, sendi), rtpType, locations, - !ignoreCooldown && HelperRTP_Check.checkCooldown(sendi, player) + !ignoreCooldown && HelperRTP_Check.applyCooldown(sendi, player) ); + //RTP request cancelled reason WorldPlayer pWorld = getPlayerWorld(setup_info); RTP_ERROR_REQUEST_REASON cantReason = HelperRTP_Check.canRTP(player, sendi, pWorld, ignoreCooldown); - // Not forced and has 'betterrtp.world.' if (cantReason != null) { - cantReason.getMsg().send(sendi); + cantReason.getMsg().send(sendi, pWorld); return; } //ignore cooldown or else @@ -69,6 +66,14 @@ public class HelperRTP { return BetterRTP.getInstance(); } + public static World getActualWorld(Player player, World world) { + if (world == null) + world = player.getWorld(); + if (BetterRTP.getInstance().getRTP().overriden.containsKey(world.getName())) + world = Bukkit.getWorld(BetterRTP.getInstance().getRTP().overriden.get(world.getName())); + return world; + } + @Nullable public static WorldLocations getRandomLocation(CommandSender sender, World world) { HashMap locations_permissible = CmdLocation.getLocations(sender, world); @@ -109,21 +114,7 @@ public class HelperRTP { } if (!pWorld.isSetup()) { - WorldPermissionGroup group = null; - if (pWorld.getPlayer() != null) - for (Map.Entry permissionGroup : BetterRTP.getInstance().getRTP().getPermissionGroups().entrySet()) { - for (Map.Entry worldPermission : permissionGroup.getValue().getWorlds().entrySet()) { - if (pWorld.getWorld().equals(worldPermission.getValue().getWorld())) { - if (PermissionNode.getPermissionGroup(pWorld.getPlayer(), permissionGroup.getKey())) { - if (group != null) { - if (group.getPriority() < worldPermission.getValue().getPriority()) - continue; - } - group = worldPermission.getValue(); - } - } - } - } + WorldPermissionGroup group = getGroup(pWorld); //Permission Group if (group != null) { @@ -159,4 +150,22 @@ public class HelperRTP { return world_type; } + public static WorldPermissionGroup getGroup(WorldPlayer pWorld) { + WorldPermissionGroup group = null; + if (pWorld.getPlayer() != null) + for (Map.Entry permissionGroup : BetterRTP.getInstance().getRTP().getPermissionGroups().entrySet()) { + for (Map.Entry worldPermission : permissionGroup.getValue().getWorlds().entrySet()) { + if (pWorld.getWorld().equals(worldPermission.getValue().getWorld())) { + if (PermissionNode.getPermissionGroup(pWorld.getPlayer(), permissionGroup.getKey())) { + if (group != null) { + if (group.getPriority() < worldPermission.getValue().getPriority()) + continue; + } + group = worldPermission.getValue(); + } + } + } + } + return group; + } } 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 529f915..3fad311 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 @@ -24,12 +24,12 @@ public class HelperRTP_Check { if (getPl().getRTP().getDisabledWorlds().contains(pWorld.getWorld().getName())) { return RTP_ERROR_REQUEST_REASON.WORLD_DISABLED; } - if (sendi == player && checkCooldown(sendi, player) && isCoolingDown(sendi, player, pWorld)) { //Is Cooling down + if (sendi == player && applyCooldown(sendi, player) && isCoolingDown(sendi, player, pWorld)) { //Is Cooling down return RTP_ERROR_REQUEST_REASON.COOLDOWN; } - if (getPl().getEco().hasBalance(sendi, pWorld)) + if (!getPl().getEco().hasBalance(sendi, pWorld)) return RTP_ERROR_REQUEST_REASON.PRICE_ECONOMY; - if (getPl().getEco().hasHunger(sendi, pWorld)) + if (!getPl().getEco().hasHunger(sendi, pWorld)) return RTP_ERROR_REQUEST_REASON.PRICE_HUNGER; return null; } @@ -39,7 +39,7 @@ public class HelperRTP_Check { } public static boolean isCoolingDown(CommandSender sendi, Player player, WorldPlayer pWorld) { - if (!checkCooldown(sendi, player)) //Bypassing/Forced? + if (!applyCooldown(sendi, player)) //Bypassing/Forced? return false; CooldownHandler cooldownHandler = getPl().getCooldowns(); if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download @@ -70,11 +70,11 @@ public class HelperRTP_Check { return false; } - static boolean checkCooldown(CommandSender sendi, Player player) { + public static boolean applyCooldown(CommandSender sendi, Player player) { return getPl().getCooldowns().isEnabled() && !(sendi != player || PermissionNode.BYPASS_COOLDOWN.check(player)); } - static boolean isDelay(Player player, CommandSender sendi) { + public static boolean applyDelay(Player player, CommandSender sendi) { boolean delay = false; if (sendi == player) //Forced? if (getPl().getSettings().isDelayEnabled() && getPl().getSettings().getDelayTime() > 0) //Delay enabled? diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessageData.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessageData.java index 3d33393..2616796 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessageData.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessageData.java @@ -1,7 +1,6 @@ package me.SuperRonanCraft.BetterRTP.references.messages; import me.SuperRonanCraft.BetterRTP.references.file.FileData; -import me.ronancraft.AmethystGear.resources.files.FileData; public interface MessageData { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java index 5cf870a..c9d5da2 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/PlaceholderAnalyzer.java @@ -1,8 +1,10 @@ package me.SuperRonanCraft.BetterRTP.references.messages.placeholder; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -20,11 +22,21 @@ public class PlaceholderAnalyzer { str = ints(str, (Integer) info); if (info instanceof Biome) str = biome(str, (Biome) info); + if (info instanceof WorldPlayer) + str = worldPlayer((WorldPlayer) info, str); + if (info instanceof World) + str = world(str, (World) info); if (p instanceof Player) str = papi((Player) p, str); return str; } + private static String worldPlayer(WorldPlayer pWorld, String str) { + str = ints(str, pWorld.getPrice()); + str = world(str, pWorld.getWorld()); + return player(str, pWorld.getPlayer()); + } + private static String string(String str, String info) { if (str.contains(Placeholders.COMMAND.name)) str = str.replace(Placeholders.COMMAND.name, info); @@ -44,8 +56,12 @@ public class PlaceholderAnalyzer { str = str.replace(Placeholders.LOCATION_Y.name, String.valueOf(loc.getBlockY())); if (str.contains(Placeholders.LOCATION_Z.name)) str = str.replace(Placeholders.LOCATION_Z.name, String.valueOf(loc.getBlockZ())); + return world(str, loc.getWorld()); + } + + private static String world(String str, World world) { if (str.contains(Placeholders.WORLD.name)) - str = str.replace(Placeholders.WORLD.name, loc.getWorld().getName()); + str = str.replace(Placeholders.WORLD.name, world.getName()); return str; } @@ -73,6 +89,8 @@ public class PlaceholderAnalyzer { str = str.replace(Placeholders.PRICE.name, String.valueOf(num)); if (str.contains(Placeholders.DELAY.name)) str = str.replace(Placeholders.DELAY.name, String.valueOf(num)); + if (str.contains(Placeholders.TIME.name)) + str = str.replace(Placeholders.TIME.name, String.valueOf(num)); return str; } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/Placeholders.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/Placeholders.java index 185f3fd..941d592 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/Placeholders.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/Placeholders.java @@ -15,6 +15,7 @@ public enum Placeholders { ATTEMPTS("attempts"), PRICE("price"), DELAY("delay"), + TIME("time"), //Other BIOME("biome") ; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java index 5a060c2..54a4270 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java @@ -33,7 +33,7 @@ public interface RTPWorld_Defaulted { void setCooldown(long value); default void setupDefaults() { - setAllFrom(BetterRTP.getInstance().getRTP().RTPdefaultWorld); + setAllFrom(BetterRTP.getInstance().getRTP().getRTPdefaultWorld()); } default void setAllFrom(RTPWorld rtpWorld) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java index c67803b..428324e 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java @@ -65,7 +65,7 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { if (maxRad <= 0) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Custom world '" + world + "' Maximum radius of '" + maxRad + "' is not allowed! Set to default value!"); - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } } if (test.get("MinRadius") != null) { @@ -76,9 +76,9 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { if (minRad < 0 || minRad >= maxRad) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Custom world '" + world + "' Minimum radius of '" + minRad + "' is not allowed! Set to default value!"); - minRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMinRadius(); + minRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMinRadius(); if (minRad >= maxRad) - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } } if (test.get("Biomes") != null) { @@ -127,13 +127,13 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted { if (maxRad <= 0) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Custom world '" + world + "' Maximum radius of '" + maxRad + "' is not allowed! Set to default value!"); - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } if (minRad < 0 || minRad >= maxRad) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Custom world '" + world + "' Minimum radius of '" + minRad + "' is not allowed! Set to default value!"); - minRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMinRadius(); + minRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMinRadius(); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java index ca6f49a..146ab9d 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java @@ -4,6 +4,7 @@ package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.file.FileOther; import org.bukkit.World; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java index a63c5e0..21f3d68 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java @@ -74,7 +74,7 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { if (maxRad <= 0) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Location '" + location_name + "' Maximum radius of '" + maxRad + "' is not allowed! Set to default value!"); - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } BetterRTP.debug("- - MaxRadius: " + maxRad); } @@ -84,9 +84,9 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted { if (minRad < 0 || minRad >= maxRad) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Location '" + location_name + "' Minimum radius of '" + minRad + "' is not allowed! Set to default value!"); - minRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMinRadius(); + minRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMinRadius(); if (minRad >= maxRad) { - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); BetterRTP.debug("- ! MaxRadius: " + maxRad); } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java index 13a92d0..1cf3301 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPermissionGroup.java @@ -66,7 +66,7 @@ public class WorldPermissionGroup implements RTPWorld, RTPWorld_Defaulted { if (maxRad <= 0) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Group '" + group + "' Maximum radius of '" + maxRad + "' is not allowed! Set to default value!"); - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } } if (field.equalsIgnoreCase("MinRadius")) { @@ -77,9 +77,9 @@ public class WorldPermissionGroup implements RTPWorld, RTPWorld_Defaulted { if (minRad < 0 || minRad >= maxRad) { Message_RTP.sms(Bukkit.getConsoleSender(), "WARNING! Group '" + group + "' Minimum radius of '" + minRad + "' is not allowed! Set to default value!"); - minRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMinRadius(); + minRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMinRadius(); if (minRad >= maxRad) - maxRad = BetterRTP.getInstance().getRTP().RTPdefaultWorld.getMaxRadius(); + maxRad = BetterRTP.getInstance().getRTP().getRTPdefaultWorld().getMaxRadius(); } } if (field.equalsIgnoreCase("Biomes")) { diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java index 9d73081..18ad266 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java @@ -29,11 +29,11 @@ public class Settings { @Getter private String placeholder_cooldown; @Getter private String placeholder_balance; @Getter private String placeholder_hunger; - @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; + @Getter private String placeholder_timeZero; public void load() { //Load Settings @@ -58,11 +58,11 @@ public class Settings { placeholder_cooldown = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Cooldown"); placeholder_balance = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Price"); placeholder_hunger = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.CanRTP.Hunger"); - placeholder_timeFormat = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Format"); placeholder_timeDays = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Days"); placeholder_timeHours = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Hours"); placeholder_timeMinutes = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Minutes"); placeholder_timeSeconds = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.Seconds"); + placeholder_timeZero = FileOther.FILETYPE.PLACEHOLDERS.getString("Config.TimeFormat.ZeroAll"); depends.load(); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java index 7208589..79fe226 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java @@ -5,6 +5,7 @@ import lombok.Setter; import me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins.REGIONPLUGINS; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTP.references.file.FileOther; import org.bukkit.Bukkit; import java.util.logging.Level; diff --git a/src/main/resources/placeholders.yml b/src/main/resources/placeholders.yml index 64559b6..ec382d7 100644 --- a/src/main/resources/placeholders.yml +++ b/src/main/resources/placeholders.yml @@ -2,18 +2,19 @@ betterrtp_count: 'Get total amount of rtp''s done' betterrtp_cooldown: 'Get cooldown in current world' betterrtp_cooldown_: 'Get cooldown of a specified world' +betterrtp_cooldowntime: 'Get cooldown time subject to in current world' +betterrtp_cooldowntime_: 'Get cooldown time subject to in specified world' betterrtp_canrtp_: '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' + Days: '{0} Day(s), ' + Hours: '{0} Hours, ' + Minutes: '{0} Mins and ' Seconds: '{0} Secs' - #Placeholder %d = DAYS, %h = HOURS, %m = MINUTES, %s = SECONDS - Format: '%d, %h, %m and %s' + ZeroAll: 'None' CanRTP: Success: '&aYes' NoPermission: '&cNo Permission'