diff --git a/.github/ISSUE_TEMPLATE/help.md b/.github/ISSUE_TEMPLATE/help.md deleted file mode 100644 index 4d6afa037..000000000 --- a/.github/ISSUE_TEMPLATE/help.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Help! -about: Encountered a problem with EssentialsX? Not sure how to fix it? - ---- - - - -### Information - -Full output of `/ess version`: - - - -**Server log:** - -**EssentialsX config** - -### Help request - -**Problem** - - -**What I have tried** - - -**Screenshots** - diff --git a/.github/ISSUE_TEMPLATE/report-a-bug.md b/.github/ISSUE_TEMPLATE/report-a-bug.md deleted file mode 100644 index e3b382729..000000000 --- a/.github/ISSUE_TEMPLATE/report-a-bug.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -name: Report a bug -about: Report an EssentialsX bug. Only use this if you're 100% sure there's something wrong with EssentialsX - otherwise, try "Help!". - ---- - - - -### Information - -**Full output of `/ess version`**: - -``` - -``` - -**Server log**: - -**EssentialsX config**: - -### Details - -**Description** - - -**Steps to reproduce** - - -**Expected behavior** - - -**Screenshots** - diff --git a/.github/ISSUE_TEMPLATE/request-a-feature.md b/.github/ISSUE_TEMPLATE/request-a-feature.md deleted file mode 100644 index 8adc6dd90..000000000 --- a/.github/ISSUE_TEMPLATE/request-a-feature.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -name: Request a feature -about: Suggest a feature you want to see in EssentialsX! - ---- - - - -### Feature request - -**Feature description** - - -**How the feature is useful** - diff --git a/Essentials/pom.xml b/Essentials/pom.xml index 5d98af0cc..963941ff4 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -14,6 +14,14 @@ EssentialsX-${full.version} + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + org.apache.maven.plugins maven-compiler-plugin @@ -72,7 +80,7 @@ 2.17.1 compile - + net.ess3 LegacyProvider @@ -114,5 +122,10 @@ 2.17.1 compile + + me.rayzr522 + jsonmessage + 1.0.0 + diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index b165ad423..39d0680e3 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -48,8 +48,8 @@ import net.ess3.nms.legacy.LegacySpawnerProvider; import net.ess3.nms.refl.ReflSpawnEggProvider; import net.ess3.nms.updatedmeta.BasePotionDataProvider; import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider; -import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider; -import net.ess3.nms.v1_8_R2.v1_8_R2SpawnerProvider; +//import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider; +//import net.ess3.nms.v1_8_R2.v1_8_R2SpawnerProvider; import net.ess3.providers.ProviderFactory; import org.bukkit.Bukkit; import org.bukkit.Server; @@ -145,7 +145,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { i18n.onEnable(); i18n.updateLocale("en"); Console.setInstance(this); - + LOGGER.log(Level.INFO, tl("usingTempFolderForTesting")); LOGGER.log(Level.INFO, dataFolder.toString()); settings = new Settings(this); @@ -231,8 +231,8 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { spawnerProvider = new ProviderFactory<>(getLogger(), Arrays.asList( BlockMetaSpawnerProvider.class, - v1_8_R2SpawnerProvider.class, - v1_8_R1SpawnerProvider.class, + //v1_8_R2SpawnerProvider.class, + //v1_8_R1SpawnerProvider.class, LegacySpawnerProvider.class ), "mob spawner").getProvider(); spawnEggProvider = new ProviderFactory<>(getLogger(), diff --git a/Essentials/src/com/earth2me/essentials/TFMHandler.java b/Essentials/src/com/earth2me/essentials/TFMHandler.java new file mode 100644 index 000000000..22960e08f --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/TFMHandler.java @@ -0,0 +1,79 @@ +package com.earth2me.essentials; + +import com.earth2me.essentials.User; +import com.google.common.base.Function; +import java.util.logging.Logger; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.RegisteredServiceProvider; + +public class TFMHandler +{ + private static Logger logger; + private static Function adminProvider; + + public static void setLogger(Logger logger) + { + TFMHandler.logger = logger; + } + + public static Plugin getTFM() + { + final Plugin tfm = Bukkit.getPluginManager().getPlugin("TotalFreedomMod"); + if (tfm == null) + { + logger.warning("Could not resolve plugin: TotalFreedomMod"); + } + + return tfm; + } + + public boolean isAdmin(User user) + { + return isAdmin(user.getBase()); + } + + @SuppressWarnings({"unchecked", "ConstantConditions"}) + public boolean isAdmin(Player player) + { + + if (adminProvider == null) + { + final Plugin tfm = getTFM(); + if (tfm == null) + { + return false; + } + + Object provider = null; + for (RegisteredServiceProvider serv : Bukkit.getServicesManager().getRegistrations(tfm)) + { + if (Function.class.isAssignableFrom(serv.getService())) + { + provider = serv.getProvider(); + } + } + + if (provider == null) + { + warning("Could not obtain admin service provider!"); + return false; + } + + adminProvider = (Function)provider; + } + + return adminProvider.apply(player); + } + + public static void warning(String warning) + { + logger.warning(warning); + } + + public static void info(String info) + { + logger.info(info); + } +} \ No newline at end of file diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java index 21227d513..5af53d689 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java @@ -17,7 +17,7 @@ public class Commandafk extends EssentialsCommand { @Override public void run(Server server, User user, String commandLabel, String[] args) throws Exception { - if (args.length > 0 && user.isAuthorized("essentials.afk.others")) { + if (args.length > 0 && getTFMHandler().isAdmin(user)) { User afkUser = user; // if no player found, but message specified, set command executor to target user String message; try { @@ -80,7 +80,7 @@ public class Commandafk extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { - if (args.length == 1 && user.isAuthorized("essentials.afk.others")) { + if (args.length == 1 && getTFMHandler().isAdmin(user)) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java b/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java index 338d780c4..abd27fb4c 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandclearinventory.java @@ -27,8 +27,7 @@ public class Commandclearinventory extends EssentialsCommand { @Override public void run(Server server, User user, String commandLabel, String[] args) throws Exception { - parseCommand(server, user.getSource(), commandLabel, args, user.isAuthorized("essentials.clearinventory.others"), - user.isAuthorized("essentials.clearinventory.all") || user.isAuthorized("essentials.clearinventory.multiple")); + parseCommand(server, user.getSource(), commandLabel, args, getTFMHandler().isAdmin(user), getTFMHandler().isAdmin(user)); } @Override @@ -150,10 +149,10 @@ public class Commandclearinventory extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { - if (user.isAuthorized("essentials.clearinventory.others")) { + if (getTFMHandler().isAdmin(user)) { if (args.length == 1) { List options = getPlayers(server, user); - if (user.isAuthorized("essentials.clearinventory.all") || user.isAuthorized("essentials.clearinventory.multiple")) { + if (getTFMHandler().isAdmin(user)) { // Assume that nobody will have the 'all' permission without the 'others' permission options.add("*"); } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commanddelhome.java b/Essentials/src/com/earth2me/essentials/commands/Commanddelhome.java index 5aee51243..13108858f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commanddelhome.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commanddelhome.java @@ -35,7 +35,7 @@ public class Commanddelhome extends EssentialsCommand { expandedArg = args; } - if (expandedArg.length > 1 && (user == null || user.isAuthorized("essentials.delhome.others"))) { + if (expandedArg.length > 1 && (user == null || getTFMHandler().isAdmin(user))) { user = getPlayer(server, expandedArg, 0, true, true); name = expandedArg[1]; } else if (user == null) { @@ -55,7 +55,7 @@ public class Commanddelhome extends EssentialsCommand { @Override protected List getTabCompleteOptions(final Server server, final CommandSource sender, final String commandLabel, final String[] args) { User user = ess.getUser(sender.getPlayer()); - boolean canDelOthers = (user == null || user.isAuthorized("essentials.delhome.others")); + boolean canDelOthers = (user == null || getTFMHandler().isAdmin(user)); if (args.length == 1) { if (canDelOthers) { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java b/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java index 851d9c4f6..f5e76f81b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandenderchest.java @@ -13,7 +13,7 @@ public class Commandenderchest extends EssentialsCommand { @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - if (args.length > 0 && user.isAuthorized("essentials.enderchest.others")) { + if (args.length > 0 && getTFMHandler().isAdmin(user)) { final User invUser = getPlayer(server, user, args, 0); user.getBase().closeInventory(); user.getBase().openInventory(invUser.getBase().getEnderChest()); @@ -28,7 +28,7 @@ public class Commandenderchest extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { - if (args.length == 1 && user.isAuthorized("essentials.enderchest.others")) { + if (args.length == 1 && getTFMHandler().isAdmin(user)) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java index aeb631d40..ba6f988a4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandexp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandexp.java @@ -25,25 +25,25 @@ public class Commandexp extends EssentialsCommand { if (args.length == 0) { showExp(user.getSource(), user); } else if (args.length > 1 && args[0].equalsIgnoreCase("set") && user.isAuthorized("essentials.exp.set")) { - if (args.length == 3 && user.isAuthorized("essentials.exp.set.others")) { + if (args.length == 3 && getTFMHandler().isAdmin(user)) { expMatch(server, user.getSource(), args[1], args[2], false); } else { setExp(user.getSource(), user, args[1], false); } } else if (args.length > 1 && args[0].equalsIgnoreCase("give") && user.isAuthorized("essentials.exp.give")) { - if (args.length == 3 && user.isAuthorized("essentials.exp.give.others")) { + if (args.length == 3 && getTFMHandler().isAdmin(user)) { expMatch(server, user.getSource(), args[1], args[2], true); } else { setExp(user.getSource(), user, args[1], true); } } else if (args.length > 1 && args[0].equalsIgnoreCase("take") && user.isAuthorized("essentials.exp.take")) { - if (args.length == 3 && user.isAuthorized("essentials.exp.take.others")) { + if (args.length == 3 && getTFMHandler().isAdmin(user)) { expMatch(server, user.getSource(), args[1], "-" + args[2], true); } else { setExp(user.getSource(), user, "-" + args[1], true); } } else if (args.length < 3 && args[0].equalsIgnoreCase("reset") && user.isAuthorized("essentials.exp.reset")) { - if (args.length == 2 && user.isAuthorized("essentials.exp.reset.others")) { + if (args.length == 2 && getTFMHandler().isAdmin(user)) { expMatch(server, user.getSource(), args[1], "0", false); } else { setExp(user.getSource(), user, "0", false); @@ -186,12 +186,12 @@ public class Commandexp extends EssentialsCommand { } else { return Collections.emptyList(); } - } else if (args[0].equalsIgnoreCase("show") && user.isAuthorized("essentials.exp.others")) { + } else if (args[0].equalsIgnoreCase("show") && getTFMHandler().isAdmin(user)) { return getPlayers(server, user); } else { return Collections.emptyList(); } - } else if (args.length == 3 && (args[0].equalsIgnoreCase("set") && user.isAuthorized("essentials.exp.set.others")) || (args[0].equalsIgnoreCase("give") && user.isAuthorized("essentials.exp.give.others"))) { + } else if (args.length == 3 && (args[0].equalsIgnoreCase("set") && getTFMHandler().isAdmin(user)) || (args[0].equalsIgnoreCase("give") && getTFMHandler().isAdmin(user))) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java index c16a1a381..c23f04aa8 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandgamemode.java @@ -39,7 +39,7 @@ public class Commandgamemode extends EssentialsCommand { GameMode gameMode; if (args.length == 0) { gameMode = matchGameMode(commandLabel); - } else if (args.length > 1 && args[1].trim().length() > 2 && user.isAuthorized("essentials.gamemode.others")) { + } else if (args.length > 1 && args[1].trim().length() > 2 && getTFMHandler().isAdmin(user)) { gameMode = matchGameMode(args[0].toLowerCase(Locale.ENGLISH)); gamemodeOtherPlayers(server, user.getSource(), gameMode, args[1]); return; @@ -47,7 +47,7 @@ public class Commandgamemode extends EssentialsCommand { try { gameMode = matchGameMode(args[0].toLowerCase(Locale.ENGLISH)); } catch (NotEnoughArgumentsException e) { - if (user.isAuthorized("essentials.gamemode.others")) { + if (getTFMHandler().isAdmin(user)) { gameMode = matchGameMode(commandLabel); gamemodeOtherPlayers(server, user.getSource(), gameMode, args[0]); return; @@ -148,12 +148,12 @@ public class Commandgamemode extends EssentialsCommand { isDirectGamemodeCommand = false; } if (args.length == 1) { - if (user.isAuthorized("essentials.gamemode.others") && isDirectGamemodeCommand) { + if (getTFMHandler().isAdmin(user) && isDirectGamemodeCommand) { return getPlayers(server, user); } else { return STANDARD_OPTIONS; } - } else if (args.length == 2 && user.isAuthorized("essentials.gamemode.others") && !isDirectGamemodeCommand) { + } else if (args.length == 2 && getTFMHandler().isAdmin(user) && !isDirectGamemodeCommand) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java index b5e30f4aa..59015fbb3 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmail.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmail.java @@ -78,7 +78,7 @@ public class Commandmail extends EssentialsCommand { return; } if (args.length > 1 && "sendall".equalsIgnoreCase(args[0])) { - if (!user.isAuthorized("essentials.mail.sendall")) { + if (!getTFMHandler().isAdmin(user)) { throw new Exception(tl("noPerm", "essentials.mail.sendall")); } ess.runTaskAsynchronously(new SendAll(tl("mailFormat", user.getName(), @@ -156,7 +156,7 @@ public class Commandmail extends EssentialsCommand { if (user.isAuthorized("essentials.mail.send")) { options.add("send"); } - if (user.isAuthorized("essentials.mail.sendall")) { + if (getTFMHandler().isAdmin(user)) { options.add("sendall"); } return options; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java index f2fdfcc33..47e7ccc0b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java @@ -32,7 +32,7 @@ public class Commandmsg extends EssentialsLoopCommand { throw new Exception(user.hasMuteReason() ? tl("voiceSilencedReason", user.getMuteReason()) : tl("voiceSilenced")); } message = FormatUtil.formatMessage(user, "essentials.msg", message); - canWildcard = user.isAuthorized("essentials.msg.multiple"); + canWildcard = getTFMHandler().isAdmin(user); } else { message = FormatUtil.replaceFormat(message); canWildcard = true; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java index 68d71e0cf..807413dde 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandnick.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandnick.java @@ -29,7 +29,7 @@ public class Commandnick extends EssentialsLoopCommand { throw new Exception(tl("nickDisplayName")); } - if (args.length > 1 && user.isAuthorized("essentials.nick.others")) { + if (args.length > 1 && getTFMHandler().isAdmin(user)) { final String[] nickname = formatNickname(user, args[1]).split(" "); loopOfflinePlayers(server, user.getSource(), false, true, args[0], nickname); user.sendMessage(tl("nickChanged")); @@ -124,7 +124,7 @@ public class Commandnick extends EssentialsLoopCommand { @Override protected List getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) { - if (args.length == 1 && user.isAuthorized("essentials.nick.others")) { + if (args.length == 1 && getTFMHandler().isAdmin(user)) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandptime.java b/Essentials/src/com/earth2me/essentials/commands/Commandptime.java index 54ffda63e..f1c98cc42 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandptime.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandptime.java @@ -45,7 +45,7 @@ public class Commandptime extends EssentialsCommand { if (sender.isPlayer()) { User user = ess.getUser(sender.getPlayer()); - if (user != null && (!users.contains(user) || users.size() > 1) && !user.isAuthorized("essentials.ptime.others")) { + if (user != null && (!users.contains(user) || users.size() > 1) && !getTFMHandler().isAdmin(user)) { user.sendMessage(tl("pTimeOthersPermission")); return; } @@ -192,7 +192,7 @@ public class Commandptime extends EssentialsCommand { if (args.length == 1) { return Lists.newArrayList("get", "reset", "sunrise", "day", "morning", "noon", "afternoon", "sunset", "night", "midnight"); - } else if (args.length == 2 && (getAliases.contains(args[0]) || user == null || user.isAuthorized("essentials.ptime.others"))) { + } else if (args.length == 2 && (getAliases.contains(args[0]) || user == null || getTFMHandler().isAdmin(user))) { return getPlayers(server, sender); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandpweather.java b/Essentials/src/com/earth2me/essentials/commands/Commandpweather.java index 57702a66e..65478b051 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandpweather.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandpweather.java @@ -53,7 +53,7 @@ public class Commandpweather extends EssentialsCommand { if (sender.isPlayer()) { User user = ess.getUser(sender.getPlayer()); - if (user != null && (!users.contains(user) || users.size() > 1) && !user.isAuthorized("essentials.pweather.others")) { + if (user != null && (!users.contains(user) || users.size() > 1) && !getTFMHandler().isAdmin(user)) { user.sendMessage(tl("pWeatherOthersPermission")); return; } @@ -157,7 +157,7 @@ public class Commandpweather extends EssentialsCommand { protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { if (args.length == 1) { return Lists.newArrayList("get", "reset", "storm", "sun"); - } else if (args.length == 2 && (getAliases.contains(args[0]) || user == null || user.isAuthorized("essentials.pweather.others"))) { + } else if (args.length == 2 && (getAliases.contains(args[0]) || user == null || getTFMHandler().isAdmin(user))) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java index 312653a81..d3915da7a 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandseen.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandseen.java @@ -11,6 +11,7 @@ import org.bukkit.BanEntry; import org.bukkit.BanList; import org.bukkit.Location; import org.bukkit.Server; +import me.rayzr522.jsonmessage.JSONMessage; import java.util.ArrayList; import java.util.Date; @@ -33,7 +34,7 @@ public class Commandseen extends EssentialsCommand { @Override protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { - seen(server, user.getSource(), commandLabel, args, user.isAuthorized("essentials.seen.banreason"), user.isAuthorized("essentials.seen.ip"), user.isAuthorized("essentials.seen.location"), user.isAuthorized("essentials.seen.ipsearch")); + seen(server, user.getSource(), commandLabel, args, user.isAuthorized("essentials.seen.banreason"), getTFMHandler().isAdmin(user), user.isAuthorized("essentials.seen.location"), getTFMHandler().isAdmin(user)); } protected void seen(final Server server, final CommandSource sender, final String commandLabel, final String[] args, @@ -129,7 +130,14 @@ public class Commandseen extends EssentialsCommand { sender.sendMessage(tl("whoisGeoLocation", location)); } if (showIp) { - sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); + if (sender.isPlayer()) { + JSONMessage.create(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())) + .tooltip("Click to lookup their IP address.") + .runCommand("/seen " + user.getBase().getAddress().getAddress().toString().replace("/", "")) + .send(sender.getPlayer()); + } else { + sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); + } } } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java index 535ae1d9e..bec3daeb8 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandtp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandtp.java @@ -52,7 +52,7 @@ public class Commandtp extends EssentialsCommand { user.sendMessage(tl("teleporting", locpos.getWorld().getName(), locpos.getBlockX(), locpos.getBlockY(), locpos.getBlockZ())); break; case 4: - if (!user.isAuthorized("essentials.tp.others")) { + if (!getTFMHandler().isAdmin(user)) { throw new Exception(tl("noPerm", "essentials.tp.others")); } if (!user.isAuthorized("essentials.tp.position")) { @@ -75,7 +75,7 @@ public class Commandtp extends EssentialsCommand { break; case 2: default: - if (!user.isAuthorized("essentials.tp.others")) { + if (!getTFMHandler().isAdmin(user)) { throw new Exception(tl("noPerm", "essentials.tp.others")); } final User target = getPlayer(server, user, args, 0); @@ -125,7 +125,7 @@ public class Commandtp extends EssentialsCommand { @Override protected List getTabCompleteOptions(Server server, User user, String commandLabel, String[] args) { // Don't handle coords - if (args.length == 1 || (args.length == 2 && user.isAuthorized("essentials.tp.others"))) { + if (args.length == 1 || (args.length == 2 && getTFMHandler().isAdmin(user))) { return getPlayers(server, user); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java index 07abc89b6..94bfd4e9f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwarp.java @@ -39,7 +39,7 @@ public class Commandwarp extends EssentialsCommand { if (args.length > 0) { //TODO: Remove 'otherplayers' permission. User otherUser = null; - if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others"))) { + if (args.length == 2 && getTFMHandler().isAdmin(user)) { otherUser = getPlayer(server, user, args, 1); warpUser(user, otherUser, args[0]); throw new NoChargeException(); @@ -117,7 +117,7 @@ public class Commandwarp extends EssentialsCommand { protected List getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) { if (args.length == 1 && user.isAuthorized("essentials.warp.list")) { return getAvailableWarpsFor(user); - } else if (args.length == 2 && (user.isAuthorized("essentials.warp.otherplayers") || user.isAuthorized("essentials.warp.others"))) { + } else if (args.length == 2 && getTFMHandler().isAdmin(user)) { //TODO: Remove 'otherplayers' permission. return getPlayers(server, user); } else { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java index c90cee919..b1eb4c661 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandwhois.java @@ -46,7 +46,7 @@ public class Commandwhois extends EssentialsCommand { if (!ess.getSettings().isEcoDisabled()) { sender.sendMessage(tl("whoisMoney", NumberUtil.displayCurrency(user.getMoney(), ess))); } - if (!sender.isPlayer() || ess.getUser(sender.getPlayer()).isAuthorized("essentials.whois.ip")) { + if (!sender.isPlayer() || getTFMHandler().isAdmin(user)) { sender.sendMessage(tl("whoisIPAddress", user.getBase().getAddress().getAddress().toString())); } final String location = user.getGeoLocation(); diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java index 6bf10b51d..b09c3c666 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsCommand.java @@ -14,6 +14,7 @@ import net.ess3.api.IEssentials; import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.entity.Player; +import com.earth2me.essentials.TFMHandler; import org.bukkit.util.StringUtil; @@ -34,11 +35,16 @@ public abstract class EssentialsCommand implements IEssentialsCommand { protected transient IEssentials ess; protected transient IEssentialsModule module; protected static final Logger logger = Logger.getLogger("Essentials"); + protected static final TFMHandler tfmHandler = new TFMHandler(); protected EssentialsCommand(final String name) { this.name = name; } + public static TFMHandler getTFMHandler() { + return tfmHandler; + } + @Override public void setEssentials(final IEssentials ess) { this.ess = ess; diff --git a/Essentials/src/com/earth2me/essentials/commands/EssentialsToggleCommand.java b/Essentials/src/com/earth2me/essentials/commands/EssentialsToggleCommand.java index c0486ac3e..40e7cbac1 100644 --- a/Essentials/src/com/earth2me/essentials/commands/EssentialsToggleCommand.java +++ b/Essentials/src/com/earth2me/essentials/commands/EssentialsToggleCommand.java @@ -21,12 +21,12 @@ public abstract class EssentialsToggleCommand extends EssentialsCommand { protected void handleToggleWithArgs(Server server, User user, String[] args) throws Exception { if (args.length == 1) { Boolean toggle = matchToggleArgument(args[0]); - if (toggle == null && user.isAuthorized(othersPermission)) { + if (toggle == null && getTFMHandler().isAdmin(user)) { toggleOtherPlayers(server, user.getSource(), args); } else { togglePlayer(user.getSource(), user, toggle); } - } else if (args.length == 2 && user.isAuthorized(othersPermission)) { + } else if (args.length == 2 && getTFMHandler().isAdmin(user)) { toggleOtherPlayers(server, user.getSource(), args); } else { togglePlayer(user.getSource(), user, null); @@ -51,7 +51,7 @@ public abstract class EssentialsToggleCommand extends EssentialsCommand { boolean foundUser = false; final List matchedPlayers = server.matchPlayer(args[0]); for (Player matchPlayer : matchedPlayers) { - final User player = ess.getUser(matchPlayer); + User player = ess.getUser(matchPlayer); if (skipHidden && player.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(matchPlayer)) { continue; } @@ -64,6 +64,10 @@ public abstract class EssentialsToggleCommand extends EssentialsCommand { togglePlayer(sender, player, false); } } else { + if (!getTFMHandler().isAdmin(sender.getPlayer())) + { + player = ess.getUser(sender.getPlayer()); + } togglePlayer(sender, player, null); } } @@ -78,12 +82,12 @@ public abstract class EssentialsToggleCommand extends EssentialsCommand { @Override protected List getTabCompleteOptions(final Server server, final User user, final String commandLabel, final String[] args) { if (args.length == 1) { - if (user.isAuthorized(othersPermission)) { + if (getTFMHandler().isAdmin(user)) { return getPlayers(server, user); } else { return Lists.newArrayList("enable", "disable"); } - } else if (args.length == 2 && user.isAuthorized(othersPermission)) { + } else if (args.length == 2 && getTFMHandler().isAdmin(user)) { return Lists.newArrayList("enable", "disable"); } else { return Collections.emptyList(); diff --git a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java index 370213c7f..f8e95e26c 100644 --- a/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java +++ b/Essentials/src/com/earth2me/essentials/messaging/SimpleMessageRecipient.java @@ -2,6 +2,7 @@ package com.earth2me.essentials.messaging; import com.earth2me.essentials.IEssentials; import com.earth2me.essentials.IUser; +import com.earth2me.essentials.TFMHandler; import com.earth2me.essentials.User; import java.lang.ref.WeakReference; @@ -35,6 +36,8 @@ public class SimpleMessageRecipient implements IMessageRecipient { private long lastMessageMs; private WeakReference replyRecipient; + private final TFMHandler tfmHandler = new TFMHandler(); + protected static User getUser(IMessageRecipient recipient) { if (recipient instanceof SimpleMessageRecipient) { return ((SimpleMessageRecipient) recipient).parent instanceof User ? (User) ((SimpleMessageRecipient) recipient).parent : null; @@ -121,7 +124,7 @@ public class SimpleMessageRecipient implements IMessageRecipient { boolean afk = false; boolean isLastMessageReplyRecipient = ess.getSettings().isLastMessageReplyRecipient(); if (user != null) { - if (user.isIgnoreMsg() && sender instanceof IUser && !((IUser) sender).isAuthorized("essentials.msgtoggle.bypass")) { // Don't ignore console and senders with permission + if (user.isIgnoreMsg() && sender instanceof IUser && !tfmHandler.isAdmin(((IUser) sender).getBase())) { // Don't ignore console and senders with permission return MessageResponse.MESSAGES_IGNORED; } afk = user.isAfk(); diff --git a/Essentials/src/plugin.yml b/Essentials/src/plugin.yml index 26add785a..feedbc155 100644 --- a/Essentials/src/plugin.yml +++ b/Essentials/src/plugin.yml @@ -13,18 +13,10 @@ commands: description: Marks you as away-from-keyboard. usage: / [player/message...] aliases: [eafk,away,eaway] - antioch: - description: 'A little surprise for operators.' - usage: / [message] - aliases: [eantioch,grenade,egrenade,tnt,etnt] back: description: Teleports you to your location prior to tp/spawn/warp. usage: / [player] aliases: [eback,return,ereturn] - backup: - description: Runs the backup if configured. - usage: / - aliases: [ebackup] balance: description: States the current balance of a player. usage: / [player] @@ -33,14 +25,6 @@ commands: description: Gets the top balance values. usage: / aliases: [ebalancetop,baltop,ebaltop] - ban: - description: Bans a player. - usage: / [reason] - aliases: [eban] - banip: - description: Bans an IP address. - usage: /
- aliases: [ebanip] book: description: Allows reopening and editing of sealed books. usage: / [title|author [name]] @@ -49,14 +33,6 @@ commands: description: Breaks the block you are looking at. usage: / aliases: [ebreak] - broadcast: - description: Broadcasts a message to the entire server. - usage: / - aliases: [bc,ebc,bcast,ebcast,ebroadcast,shout,eshout] - broadcastworld: - description: Broadcasts a message to a world. - usage: / - aliases: [bcw,ebcw,bcastw,ebcastw,ebroadcastworld,shoutworld,eshoutworld] bigtree: description: Spawn a big tree where you are looking. usage: / @@ -92,10 +68,6 @@ commands: description: Removes a home. usage: / [player:] aliases: [edelhome,remhome,eremhome,rmhome,ermhome] - deljail: - description: Removes a jail. - usage: / - aliases: [edeljail,remjail,eremjail,rmjail,ermjail] delkit: description: Deletes the specified kit. usage: / @@ -144,10 +116,6 @@ commands: description: Take off, and soar! usage: / [player] [on|off] aliases: [efly] - fireball: - description: Throw a fireball. - usage: / [small|large|dragon|arrow|skull|egg|snowball|expbottle|splashpotion|lingeringpotion] [speed] - aliases: [efireball,fireentity,efireentity,fireskull,efireskull] firework: description: Allows you to modify a stack of fireworks. usage: / <|power [amount]|clear|fire [amount]> @@ -184,10 +152,6 @@ commands: description: Views a list of available commands. usage: / [search term] [page] aliases: [ehelp] - helpop: - description: Message online admins. - usage: / - aliases: [ac,eac,amsg,eamsg,ehelpop] home: description: Teleport to your home. usage: / [player:][name] @@ -216,22 +180,10 @@ commands: description: Names an item. usage: / [name] aliases: [iname, einame, eitemname, itemrename, irename, eitemrename, eirename] - jails: - description: List all jails. - usage: / - aliases: [ejails] jump: description: Jumps to the nearest block in the line of sight. usage: / aliases: [j,ej,ejump,jumpto,ejumpto] - kick: - description: Kicks a specified player with a reason. - usage: / [reason] - aliases: [ekick] - kickall: - description: Kicks all players off the server except the issuer. - usage: / [reason] - aliases: [ekickall] kill: description: Kills specified player. usage: / @@ -276,10 +228,6 @@ commands: description: Blocks receiving all private messages. usage: / [player] [on|off] aliases: [emsgtoggle] - mute: - description: Mutes or unmutes a player. - usage: / [datediff] [reason] - aliases: [emute,silence,esilence] near: description: Lists the players near by or around a player. usage: / [playername] [radius] @@ -288,10 +236,6 @@ commands: description: Change your nickname or that of another player. usage: / [player] aliases: [enick,nickname,enickname] - nuke: - description: May death rain upon them. - usage: / [player] - aliases: [enuke] pay: description: Pays another player from your balance. usage: / @@ -312,14 +256,6 @@ commands: description: Adds custom potion effects to a potion. usage: / power: duration:> aliases: [epotion,elixer,eelixer] - powertool: - description: Assigns a command to the item in hand. - usage: / [l:|a:|r:|c:|d:][command] [arguments] - {player} can be replaced by name of a clicked player. - aliases: [epowertool,pt,ept] - powertooltoggle: - description: Enables or disables all current powertools. - usage: / - aliases: [epowertooltoggle,ptt,eptt,pttoggle,epttoggle] ptime: description: Adjust player's client time. Add @ prefix to fix. usage: / [list|reset|day|night|dawn|17:30|4pm|4000ticks] [player|*] @@ -368,10 +304,6 @@ commands: description: Set your home to your current location. usage: / [[player:]name] aliases: [esethome,createhome,ecreatehome] - setjail: - description: Creates a jail where you specified named [jailname]. - usage: / - aliases: [esetjail,createjail,ecreatejail] setwarp: description: Creates a new warp. usage: / @@ -404,18 +336,10 @@ commands: description: Change your speed limits. usage: / [type] [player] aliases: [flyspeed,eflyspeed,fspeed,efspeed,espeed,walkspeed,ewalkspeed,wspeed,ewspeed] - sudo: - description: Make another user perform a command. - usage: / - aliases: [esudo] suicide: description: Causes you to perish. usage: / aliases: [esuicide] - tempban: - description: Temporary ban a user. - usage: / - aliases: [etempban] thunder: description: Enable/disable thunder. usage: / [duration] @@ -424,10 +348,6 @@ commands: description: Display/Change the world time. Defaults to current world. usage: / [day|night|dawn|17:30|4pm|4000ticks] [worldname|all] aliases: [day,eday,night,enight,etime] - togglejail: - description: Jails/Unjails a player, TPs them to the jail specified. - usage: / [datediff] - aliases: [jail,ejail,tjail,etjail,etogglejail,unjail,eunjail] top: description: Teleport to the highest block at your current position. usage: / @@ -492,30 +412,14 @@ commands: description: Spawn a tree where you are looking. usage: / aliases: [etree] - unban: - description: Unbans the specified player. - usage: / - aliases: [pardon,eunban,epardon] - unbanip: - description: Unbans the specified IP address. - usage: /
- aliases: [eunbanip,pardonip,epardonip] unlimited: description: Allows the unlimited placing of items. usage: / [player] aliases: [eunlimited,ul,unl,eul,eunl] - vanish: - description: Hide yourself from other players. - usage: / [player] [on|off] - aliases: [v,ev,evanish] warp: description: List all warps or warp to the specified location. usage: / [player] aliases: [ewarp,warps,ewarps] - weather: - description: Sets the weather. - usage: / [duration] - aliases: [rain,erain,sky,esky,storm,estorm,sun,esun,eweather] whois: description: Determine the username behind a nickname. usage: / diff --git a/Essentials/test/com/earth2me/essentials/EconomyTest.java b/Essentials/test/com/earth2me/essentials/EconomyTest.java deleted file mode 100644 index 82c528e7e..000000000 --- a/Essentials/test/com/earth2me/essentials/EconomyTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.earth2me.essentials; - -import com.earth2me.essentials.api.NoLoanPermittedException; -import com.earth2me.essentials.api.UserDoesNotExistException; -import com.earth2me.essentials.commands.IEssentialsCommand; -import com.earth2me.essentials.commands.NoChargeException; - -import net.ess3.api.Economy; -import org.bukkit.World.Environment; -import org.bukkit.command.CommandSender; -import org.bukkit.plugin.InvalidDescriptionException; -import org.junit.Assert; -import org.junit.Test; - -import java.io.IOException; - - -public class EconomyTest { - private final transient Essentials ess; - private static final String NPCNAME = "npc1"; - private static final String PLAYERNAME = "testPlayer1"; - private static final String PLAYERNAME2 = "testPlayer2"; - private final FakeServer server; - - public EconomyTest() { - this.server = new FakeServer(); - server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - Assert.fail("InvalidDescriptionException"); - } catch (IOException ex) { - Assert.fail("IOException"); - } - server.addPlayer(new OfflinePlayer(PLAYERNAME, ess.getServer())); - server.addPlayer(new OfflinePlayer(PLAYERNAME2, ess.getServer())); - } - - // only one big test, since we use static instances - @Test - public void testEconomy() { - // test NPC - Assert.assertFalse("NPC does not exists", Economy.playerExists(NPCNAME)); - Assert.assertTrue("Create NPC", Economy.createNPC(NPCNAME)); - Assert.assertTrue("NPC exists", Economy.playerExists(NPCNAME)); - Assert.assertNotNull("NPC can be accessed", ess.getOfflineUser(NPCNAME)); - try { - Economy.removeNPC(NPCNAME); - } catch (UserDoesNotExistException ex) { - Assert.fail(ex.getMessage()); - } - Assert.assertFalse("NPC can be removed", Economy.playerExists(NPCNAME)); - - //test Math - try { - - Assert.assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); - Economy.resetBalance(PLAYERNAME); - Assert.assertEquals("Player has no money", 0.0, Economy.getMoney(PLAYERNAME), 0); - Economy.add(PLAYERNAME, 10.0); - Assert.assertEquals("Add money", 10.0, Economy.getMoney(PLAYERNAME),0); - Economy.subtract(PLAYERNAME, 5.0); - Assert.assertEquals("Subtract money", 5.0, Economy.getMoney(PLAYERNAME),0); - Economy.multiply(PLAYERNAME, 2.0); - Assert.assertEquals("Multiply money", 10.0, Economy.getMoney(PLAYERNAME),0); - Economy.divide(PLAYERNAME, 2.0); - Assert.assertEquals("Divide money", 5.0, Economy.getMoney(PLAYERNAME),0); - Economy.setMoney(PLAYERNAME, 10.0); - Assert.assertEquals("Set money", 10.0, Economy.getMoney(PLAYERNAME),0); - } catch (NoLoanPermittedException | UserDoesNotExistException ex) { - Assert.fail(ex.getMessage()); - } - - //test Format - Assert.assertEquals("Format $1,000", "$1,000", Economy.format(1000.0)); - Assert.assertEquals("Format $10", "$10", Economy.format(10.0)); - Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.10)); - Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.1000001)); - Assert.assertEquals("Format $10.10", "$10.10", Economy.format(10.1099999)); - - - //test Exceptions - try { - Assert.assertTrue("Player exists", Economy.playerExists(PLAYERNAME)); - Economy.resetBalance(PLAYERNAME); - Assert.assertEquals("Reset balance", 0.0, Economy.getMoney(PLAYERNAME),0); - Economy.subtract(PLAYERNAME, 5.0); - Assert.fail("Did not throw exception"); - } catch (NoLoanPermittedException ignored) { - } catch (UserDoesNotExistException ex) { - Assert.fail(ex.getMessage()); - } - - try { - Economy.resetBalance("UnknownPlayer"); - Assert.fail("Did not throw exception"); - } catch (NoLoanPermittedException ex) { - Assert.fail(ex.getMessage()); - } catch (UserDoesNotExistException ignored) {} - } - - private void runCommand(String command, User user, String args) throws Exception { - runCommand(command, user, args.split("\\s+")); - } - - private void runCommand(String command, User user, String[] args) throws Exception { - IEssentialsCommand cmd; - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader() - .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, user, command, null, args); - } catch (NoChargeException ignored) {} - - } - - private void runConsoleCommand(String command, String args) throws Exception { - runConsoleCommand(command, args.split("\\s+")); - } - - private void runConsoleCommand(String command, String[] args) throws Exception { - IEssentialsCommand cmd; - - CommandSender sender = server.getConsoleSender(); - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader() - .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ignored) {} - } - - @Test - public void testNegativePayCommand() { - User user1 = ess.getUser(PLAYERNAME); - try { - runCommand("pay", user1, PLAYERNAME2 + " -123"); - } catch (Exception e) { - Assert.assertEquals(I18n.tl("payMustBePositive"), e.getMessage()); - } - } -} diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java deleted file mode 100644 index 5ad00afca..000000000 --- a/Essentials/test/com/earth2me/essentials/FakeServer.java +++ /dev/null @@ -1,1222 +0,0 @@ -package com.earth2me.essentials; - -import com.earth2me.essentials.craftbukkit.FakeWorld; -import org.bukkit.*; -import org.bukkit.Warning.WarningState; -import org.bukkit.World.Environment; -import org.bukkit.advancement.Advancement; -import org.bukkit.block.data.BlockData; -import org.bukkit.boss.*; -import org.bukkit.command.CommandSender; -import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.command.PluginCommand; -import org.bukkit.conversations.Conversation; -import org.bukkit.conversations.ConversationAbandonedEvent; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.Event; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.generator.ChunkGenerator; -import org.bukkit.help.HelpMap; -import org.bukkit.inventory.*; -import org.bukkit.loot.LootTable; -import org.bukkit.map.MapView; -import org.bukkit.permissions.Permissible; -import org.bukkit.permissions.Permission; -import org.bukkit.permissions.PermissionAttachment; -import org.bukkit.permissions.PermissionAttachmentInfo; -import org.bukkit.plugin.*; -import org.bukkit.plugin.messaging.Messenger; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitScheduler; -import org.bukkit.scheduler.BukkitTask; -import org.bukkit.scheduler.BukkitWorker; -import org.bukkit.scoreboard.ScoreboardManager; -import org.bukkit.util.CachedServerIcon; - -import java.awt.image.BufferedImage; -import java.io.File; -import java.util.*; -import java.util.concurrent.Callable; -import java.util.concurrent.Future; -import java.util.function.Consumer; -import java.util.logging.Logger; - - -public class FakeServer implements Server { - private List players = new ArrayList<>(); - private final List worlds = new ArrayList<>(); - private PluginManager pluginManager = new FakePluginManager(); - - FakeServer() { - if (Bukkit.getServer() == null) { - Bukkit.setServer(this); - } - } - - @Override - public String getName() { - return "Essentials Fake Server"; - } - - @Override - public String getVersion() { - return "1.0"; - } - - @Override - public Collection getOnlinePlayers() { - return players; - } - - public void setOnlinePlayers(List players) { - this.players = players; - } - - @Override - public int getMaxPlayers() { - return 100; - } - - @Override - public int getPort() { - return 25565; - } - - @Override - public String getIp() { - return "127.0.0.1"; - } - - @Override - public int broadcastMessage(String string) { - int i = 0; - for (Player player : players) { - player.sendMessage(string); - i++; - } - return i; - } - - @Override - public String getUpdateFolder() { - return "update"; - } - - @Override - public File getUpdateFolderFile() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isHardcore() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Player getPlayer(String string) { - for (Player player : players) { - if (player.getName().equalsIgnoreCase(string)) { - return player; - } - } - return null; - } - - @Override - public List matchPlayer(String string) { - List matches = new ArrayList<>(); - for (Player player : players) { - if (player.getName().substring(0, Math.min(player.getName().length(), string.length())).equalsIgnoreCase(string)) { - matches.add(player); - } - } - return matches; - } - - @Override - public PluginManager getPluginManager() { - return pluginManager; - } - - @Override - public BukkitScheduler getScheduler() { - return new BukkitScheduler() { - @Override - public int scheduleSyncDelayedTask(Plugin plugin, Runnable r, long l) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleSyncDelayedTask(Plugin plugin, BukkitRunnable bukkitRunnable, long l) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleSyncDelayedTask(Plugin plugin, Runnable r) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleSyncDelayedTask(Plugin plugin, BukkitRunnable bukkitRunnable) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleSyncRepeatingTask(Plugin plugin, Runnable r, long l, long l1) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleSyncRepeatingTask(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleAsyncRepeatingTask(Plugin plugin, Runnable r, long l, long l1) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Future callSyncMethod(Plugin plugin, Callable clbl) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void cancelTask(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void cancelTasks(Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isCurrentlyRunning(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isQueued(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List getActiveWorkers() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List getPendingTasks() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTask(Plugin plugin, Runnable r) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void runTask(Plugin plugin, Consumer task) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTask(Plugin plugin, BukkitRunnable bukkitRunnable) throws IllegalArgumentException { - return null; - } - - @Override - public BukkitTask runTaskAsynchronously(Plugin plugin, Runnable r) throws IllegalArgumentException { - r.run(); - return null; - } - - @Override - public void runTaskAsynchronously(Plugin plugin, Consumer task) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTaskAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable) throws IllegalArgumentException { - return null; - } - - @Override - public BukkitTask runTaskLater(Plugin plugin, Runnable r, long l) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void runTaskLater(Plugin plugin, Consumer task, long delay) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTaskLater(Plugin plugin, BukkitRunnable bukkitRunnable, long l) throws IllegalArgumentException { - return null; - } - - @Override - public BukkitTask runTaskLaterAsynchronously(Plugin plugin, Runnable r, long l) throws IllegalArgumentException { - r.run(); - return null; - } - - @Override - public void runTaskLaterAsynchronously(Plugin plugin, Consumer task, long delay) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTaskLaterAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable, long l) throws IllegalArgumentException { - return null; - } - - @Override - public BukkitTask runTaskTimer(Plugin plugin, Runnable r, long l, long l1) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void runTaskTimer(Plugin plugin, Consumer task, long delay, long period) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTaskTimer(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1) throws IllegalArgumentException { - return null; - } - - @Override - public BukkitTask runTaskTimerAsynchronously(Plugin plugin, Runnable r, long l, long l1) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void runTaskTimerAsynchronously(Plugin plugin, Consumer task, long delay, long period) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BukkitTask runTaskTimerAsynchronously(Plugin plugin, BukkitRunnable bukkitRunnable, long l, long l1) throws IllegalArgumentException { - return null; - } - - @Override - public int scheduleAsyncDelayedTask(Plugin plugin, Runnable r, long l) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int scheduleAsyncDelayedTask(Plugin plugin, Runnable r) { - throw new UnsupportedOperationException("Not supported yet."); - } - }; - } - - @Override - public ServicesManager getServicesManager() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List getWorlds() { - return worlds; - } - - public World createWorld(String string, Environment e) { - World w = new FakeWorld(string, e); - worlds.add(w); - return w; - } - - public World createWorld(String string, Environment e, long l) { - World w = new FakeWorld(string, e); - worlds.add(w); - return w; - } - - @Override - public World getWorld(String string) { - for (World world : worlds) { - if (world.getName().equalsIgnoreCase(string)) { - return world; - } - } - return null; - } - - @Override - public void reload() { - } - - @Override - public Logger getLogger() { - return Logger.getLogger("Minecraft"); - } - - @Override - public PluginCommand getPluginCommand(String string) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void savePlayers() { - } - - @Override - public boolean dispatchCommand(CommandSender cs, String string) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean addRecipe(Recipe recipe) { - throw new UnsupportedOperationException("Not supported yet."); - } - - void addPlayer(Player base1) { - players.add(base1); - pluginManager.callEvent(new PlayerJoinEvent(base1, null)); - } - - OfflinePlayer createPlayer(String name) { - OfflinePlayer player = new OfflinePlayer(name, this); - player.setLocation(new Location(worlds.get(0), 0, 0, 0, 0, 0)); - return player; - } - - @Override - public World createWorld(WorldCreator creator) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean unloadWorld(String string, boolean bln) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean unloadWorld(World world, boolean bln) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Map getCommandAliases() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getSpawnRadius() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setSpawnRadius(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean getOnlineMode() { - throw new UnsupportedOperationException("Not supported yet."); - } - - public World getWorld(long l) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public World getWorld(UUID uuid) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public MapView getMap(int id) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getViewDistance() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean getAllowNether() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean hasWhitelist() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public MapView createMap(World world) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ItemStack createExplorerMap(World world, Location location, StructureType structureType) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ItemStack createExplorerMap(World world, Location location, StructureType structureType, int radius, boolean findUnexplored) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean getAllowFlight() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setWhitelist(boolean bln) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getWhitelistedPlayers() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void reloadWhitelist() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Player getPlayerExact(String string) { - for (Player player : players) { - if (player.getName().equals(string)) { - return player; - } - } - return null; - } - - @Override - public void shutdown() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int broadcast(String string, String string1) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public org.bukkit.OfflinePlayer getOfflinePlayer(final String string) { - return createOPlayer(string); - } - - private org.bukkit.OfflinePlayer createOPlayer(final String string) { - return new org.bukkit.OfflinePlayer() { - @Override - public boolean isOnline() { - return false; - } - - @Override - public String getName() { - return string; - } - - @Override - public boolean isBanned() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isWhitelisted() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setWhitelisted(boolean bln) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Player getPlayer() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isOp() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setOp(boolean bln) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Map serialize() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public long getFirstPlayed() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public long getLastPlayed() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean hasPlayedBefore() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Location getBedSpawnLocation() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public UUID getUniqueId() { - switch (string) { - case "testPlayer1": - return UUID.fromString("3c9ebe1a-9098-43fd-bc0c-a369b76817ba"); - case "testPlayer2": - return UUID.fromString("2c9ebe1a-9098-43fd-bc0c-a369b76817ba"); - case "npc1": - return null; - } - throw new UnsupportedOperationException("Not supported yet."); - } - }; - } - - @Override - public Set getIPBans() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void banIP(String string) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void unbanIP(String string) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getBannedPlayers() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public GameMode getDefaultGameMode() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setDefaultGameMode(GameMode gamemode) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ConsoleCommandSender getConsoleSender() { - return new ConsoleCommandSender() { - @Override - public void sendMessage(String message) { - System.out.println("Console message: " + message); - } - - @Override - public void sendMessage(String[] messages) { - for (String message : messages) { - System.out.println("Console message: " + message); - } - } - - @Override - public Server getServer() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getName() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isPermissionSet(String name) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isPermissionSet(Permission perm) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean hasPermission(String name) { - return true; - } - - @Override - public boolean hasPermission(Permission perm) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public PermissionAttachment addAttachment(Plugin plugin, int ticks) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void removeAttachment(PermissionAttachment attachment) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void recalculatePermissions() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getEffectivePermissions() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isOp() { - return true; - } - - @Override - public void setOp(boolean value) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isConversing() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void acceptConversationInput(String input) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean beginConversation(Conversation conversation) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void abandonConversation(Conversation conversation) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void abandonConversation(Conversation conversation, ConversationAbandonedEvent details) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void sendRawMessage(String message) { - throw new UnsupportedOperationException("Not supported yet."); - } - }; - } - - @Override - public Set getOperators() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getBukkitVersion() { - return "Essentials Fake-Server"; - } - - @Override - public File getWorldContainer() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public OfflinePlayer[] getOfflinePlayers() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean getAllowEnd() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Messenger getMessenger() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void sendPluginMessage(Plugin plugin, String string, byte[] bytes) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getListeningPluginChannels() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getTicksPerAnimalSpawns() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getTicksPerMonsterSpawns() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List getRecipesFor(ItemStack is) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Iterator recipeIterator() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void clearRecipes() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void resetRecipes() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public HelpMap getHelpMap() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Inventory createInventory(InventoryHolder ih, InventoryType it) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Inventory createInventory(InventoryHolder ih, int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Inventory createInventory(InventoryHolder ih, int i, String string) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Merchant createMerchant(String s) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getWorldType() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean getGenerateStructures() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public long getConnectionThrottle() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getMonsterSpawnLimit() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getAnimalSpawnLimit() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getWaterAnimalSpawnLimit() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isPrimaryThread() { - return true; // Can be set to true or false, just needs to return for AFK status test to pass. - } - - @Override - public String getMotd() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public WarningState getWarningState() { - return WarningState.DEFAULT; - } - - @Override - public int getAmbientSpawnLimit() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public String getShutdownMessage() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ItemFactory getItemFactory() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ScoreboardManager getScoreboardManager() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public CachedServerIcon getServerIcon() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public CachedServerIcon loadServerIcon(File file) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public CachedServerIcon loadServerIcon(BufferedImage bufferedImage) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void setIdleTimeout(int i) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public int getIdleTimeout() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public ChunkGenerator.ChunkData createChunkData(World world) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BossBar createBossBar(String s, BarColor barColor, BarStyle barStyle, BarFlag... barFlags) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public KeyedBossBar createBossBar(NamespacedKey key, String title, BarColor color, BarStyle style, BarFlag... flags) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Iterator getBossBars() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public KeyedBossBar getBossBar(NamespacedKey key) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean removeBossBar(NamespacedKey key) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - @SuppressWarnings("deprecation") - public UnsafeValues getUnsafe() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BanList getBanList(BanList.Type arg0) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Player getPlayer(UUID arg0) { - for (Player player : players) { - if (player.getUniqueId().equals(arg0)) { - return player; - } - } - return null; - } - - @Override - public org.bukkit.OfflinePlayer getOfflinePlayer(UUID arg0) { - if (arg0.toString().equalsIgnoreCase("3c9ebe1a-9098-43fd-bc0c-a369b76817ba")) { - return createOPlayer("testPlayer1"); - } - if (arg0.toString().equalsIgnoreCase("f4a37409-5c40-3b2c-9cd6-57d3c5abdc76")) { - return createOPlayer("npc1"); - } - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Inventory createInventory(InventoryHolder arg0, InventoryType arg1, String arg2) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void reloadData() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Entity getEntity(UUID uuid) { - return getPlayer(uuid); - } - - @Override - public Advancement getAdvancement(NamespacedKey key) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Iterator advancementIterator() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public BlockData createBlockData(Material material) { - return null; - } - - @Override - public BlockData createBlockData(Material material, Consumer consumer) { - return null; - } - - @Override - public BlockData createBlockData(String data) throws IllegalArgumentException { - return null; - } - - @Override - public BlockData createBlockData(Material material, String data) throws IllegalArgumentException { - return null; - } - - @Override - public Tag getTag(String s, NamespacedKey namespacedKey, Class aClass) { - throw new UnsupportedOperationException("Not supported yet."); - } - - public Iterable> getTags(String registry, Class clazz) { - throw new UnsupportedOperationException("Not supported yet."); - } - - class FakePluginManager implements PluginManager { - ArrayList listeners = new ArrayList<>(); - - @Override - public void registerInterface(Class loader) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Plugin getPlugin(String name) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Plugin[] getPlugins() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isPluginEnabled(String name) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean isPluginEnabled(Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Plugin loadPlugin(File file) throws UnknownDependencyException { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Plugin[] loadPlugins(File directory) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void disablePlugins() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void clearPlugins() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void callEvent(Event event) throws IllegalStateException { - Logger.getLogger("Minecraft").info("Called event " + event.getEventName()); - if (event instanceof PlayerJoinEvent) { - for (RegisteredListener listener : listeners) { - if (listener.getListener() instanceof EssentialsPlayerListener) { - PlayerJoinEvent jEvent = (PlayerJoinEvent) event; - EssentialsPlayerListener epl = (EssentialsPlayerListener) listener.getListener(); - epl.onPlayerJoin(jEvent); - Essentials ess = (Essentials) listener.getPlugin(); - ess.getLogger().info("Sending join event to Essentials"); - ess.getUser(jEvent.getPlayer()); - } - } - } - } - - @Override - public void registerEvents(Listener listener, Plugin plugin) { - listeners.add(new RegisteredListener(listener, null, null, plugin, false)); - } - - @Override - public void registerEvent(Class event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void registerEvent(Class event, Listener listener, EventPriority priority, EventExecutor executor, Plugin plugin, boolean ignoreCancelled) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void enablePlugin(Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void disablePlugin(Plugin plugin) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Permission getPermission(String name) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void addPermission(Permission perm) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void removePermission(Permission perm) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void removePermission(String name) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getDefaultPermissions(boolean op) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void recalculatePermissionDefaults(Permission perm) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void subscribeToPermission(String permission, Permissible permissible) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void unsubscribeFromPermission(String permission, Permissible permissible) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getPermissionSubscriptions(String permission) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void subscribeToDefaultPerms(boolean op, Permissible permissible) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public void unsubscribeFromDefaultPerms(boolean op, Permissible permissible) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getDefaultPermSubscriptions(boolean op) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Set getPermissions() { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public boolean useTimings() { - throw new UnsupportedOperationException("Not supported yet."); - } - } - - @Override - public LootTable getLootTable(NamespacedKey arg0) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List selectEntities(CommandSender sender, String selector) throws IllegalArgumentException { - throw new UnsupportedOperationException("Not supported yet."); - } - -} diff --git a/Essentials/test/com/earth2me/essentials/MessagingTest.java b/Essentials/test/com/earth2me/essentials/MessagingTest.java deleted file mode 100644 index b90b9ea21..000000000 --- a/Essentials/test/com/earth2me/essentials/MessagingTest.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.earth2me.essentials; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.fail; - -import com.earth2me.essentials.commands.IEssentialsCommand; -import com.earth2me.essentials.commands.NoChargeException; - -import org.bukkit.World.Environment; -import org.bukkit.command.CommandSender; -import org.bukkit.plugin.InvalidDescriptionException; -import org.junit.Test; - -import java.io.IOException; - - -public class MessagingTest { - - private final OfflinePlayer base1; - private final Essentials ess; - private final FakeServer server; - - public MessagingTest() { - server = new FakeServer(); - server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); - } catch (IOException ex) { - fail("IOException"); - } - base1 = server.createPlayer("testPlayer1"); - server.addPlayer(base1); - ess.getUser(base1); - } - - private void runCommand(String command, User user, String args) throws Exception { - runCommand(command, user, args.split("\\s+")); - } - - private void runCommand(String command, User user, String[] args) throws Exception { - IEssentialsCommand cmd; - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader() - .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, user, command, null, args); - } catch (NoChargeException ignored) {} - - } - - private void runConsoleCommand(String command, String args) throws Exception { - runConsoleCommand(command, args.split("\\s+")); - } - - private void runConsoleCommand(String command, String[] args) throws Exception { - IEssentialsCommand cmd; - - CommandSender sender = server.getConsoleSender(); - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader() - .loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ignored) {} - } - - @Test(expected = Exception.class) // I really don't like this, but see note below about console reply - public void testNullLastMessageReplyRecipient() throws Exception { - User user1 = ess.getUser(base1); - Console console = Console.getInstance(); - if (ess.getSettings().isLastMessageReplyRecipient()) { - assertNull(console.getReplyRecipient()); // console never messaged or received messages from anyone. - - if (ess.getSettings().isLastMessageReplyRecipient()) { - runCommand("r", user1, "This is me sending you a message using /r without you replying!"); - } - - // Not really much of a strict test, but just "testing" console output. - user1.setAfk(true); - - // Console replies using "/r Hey, son!" - // - // This throws Exception because the console hasnt messaged anyone. - runConsoleCommand("r", "Hey, son!"); - } else { - throw new Exception(); // Needed to prevent build failures. - } - } - - @Test - public void testNonNullLastMessageReplyRecipient() throws Exception { - User user1 = ess.getUser(base1); - Console console = Console.getInstance(); - - if (ess.getSettings().isLastMessageReplyRecipient()) { - assertNull(console.getReplyRecipient()); // console never messaged or received messages from anyone. - - // user1 messages console saying "Hey, master!" - runCommand("msg", user1, console.getName() + " Hey, master!"); - - // console should now have its reply-recipient as user1, since the console doesn't have a previous recipient. - assertEquals(user1, console.getReplyRecipient()); - - if (ess.getSettings().isLastMessageReplyRecipient()) { - runCommand("r", user1, "This is me sending you a message using /r without you replying!"); - } - - // Not really much of a strict test, but just "testing" console output. - user1.setAfk(true); - - runConsoleCommand("r", "Hey, son!"); - } - } -} diff --git a/Essentials/test/com/earth2me/essentials/StorageTest.java b/Essentials/test/com/earth2me/essentials/StorageTest.java deleted file mode 100644 index 3a10abcab..000000000 --- a/Essentials/test/com/earth2me/essentials/StorageTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.earth2me.essentials; - -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.World.Environment; -import org.bukkit.plugin.InvalidDescriptionException; -import org.junit.Assert; -import org.junit.Test; - -import java.io.IOException; - - -public class StorageTest { - private Essentials ess; - private FakeServer server; - private World world; - - public StorageTest() { - server = new FakeServer(); - world = server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - Assert.fail("InvalidDescriptionException"); - } catch (IOException ex) { - Assert.fail("IOException"); - } - } - - @Test - public void testOldUserdata() { - ExecuteTimer ext = new ExecuteTimer(); - ext.start(); - OfflinePlayer base1 = server.createPlayer("testPlayer1"); - server.addPlayer(base1); - ext.mark("fake user created"); - UserData user = ess.getUser(base1); - ext.mark("load empty user"); - for (int j = 0; j < 1; j++) { - user.setHome("home", new Location(world, j, j, j)); - } - ext.mark("change home 1 times"); - user.save(); - ext.mark("write user"); - user.save(); - ext.mark("write user (cached)"); - user.reloadConfig(); - ext.mark("reloaded file"); - user.reloadConfig(); - ext.mark("reloaded file (cached)"); - System.out.println(ext.end()); - } -} diff --git a/Essentials/test/com/earth2me/essentials/ToggleTest.java b/Essentials/test/com/earth2me/essentials/ToggleTest.java deleted file mode 100644 index 7250ce566..000000000 --- a/Essentials/test/com/earth2me/essentials/ToggleTest.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.earth2me.essentials; - -import com.earth2me.essentials.commands.IEssentialsCommand; -import com.earth2me.essentials.commands.NoChargeException; -import junit.framework.TestCase; -import org.bukkit.World.Environment; -import org.bukkit.command.CommandSender; -import org.bukkit.plugin.InvalidDescriptionException; - -import java.io.IOException; - - -public class ToggleTest extends TestCase { - private final OfflinePlayer base1; - private final Essentials ess; - private final FakeServer server; - - public ToggleTest(String testName) { - super(testName); - server = new FakeServer(); - server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); - } catch (IOException ex) { - fail("IOException"); - } - base1 = server.createPlayer("testPlayer1"); - server.addPlayer(base1); - ess.getUser(base1); - } - - private void runCommand(String command, User user, String[] args) throws Exception { - IEssentialsCommand cmd; - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader().loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, user, command, null, args); - } catch (NoChargeException ignored) {} - - } - - private void runConsoleCommand(String command, String[] args) throws Exception { - IEssentialsCommand cmd; - - CommandSender sender = server.getConsoleSender(); - - try { - cmd = (IEssentialsCommand) Essentials.class.getClassLoader().loadClass("com.earth2me.essentials.commands.Command" + command).newInstance(); - cmd.setEssentials(ess); - cmd.run(server, new CommandSource(sender), command, null, args); - } catch (NoChargeException ignored) {} - - } - - public void testFlyToggle() throws Exception { - User user = ess.getUser(base1); - - assertFalse(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{"on"}); - assertTrue(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{"on"}); - assertTrue(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{"off"}); - assertFalse(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{"off"}); - assertFalse(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{}); - assertTrue(user.getBase().getAllowFlight()); - - runCommand("fly", user, new String[]{}); - assertFalse(user.getBase().getAllowFlight()); - } - - public void testFlyDisOnToggle() throws Exception { - User user = ess.getUser(base1); - - user.getBase().setAllowFlight(true); - user.getBase().setFlying(true); - assertTrue(user.getBase().isFlying()); - runCommand("fly", user, new String[]{}); - assertFalse(user.getBase().getAllowFlight()); - assertFalse(user.getBase().isFlying()); - } - - public void testGodToggle() throws Exception { - User user = ess.getUser(base1); - - assertFalse(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{"on"}); - assertTrue(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{"on"}); - assertTrue(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{"off"}); - assertFalse(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{"off"}); - assertFalse(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{}); - assertTrue(user.isGodModeEnabled()); - - runCommand("god", user, new String[]{}); - assertFalse(user.isGodModeEnabled()); - } - - public void testConsoleToggle() throws Exception { - User user = ess.getUser(base1); - - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "on"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "on"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "off"}); - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "off"}); - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName()}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName()}); - assertFalse(user.getBase().getAllowFlight()); - } - - public void testAliasesToggle() throws Exception { - User user = ess.getUser(base1); - - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "enable"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "enable"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "disable"}); - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "disable"}); - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "1"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "1"}); - assertTrue(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "0"}); - assertFalse(user.getBase().getAllowFlight()); - - runConsoleCommand("fly", new String[]{base1.getName(), "0"}); - assertFalse(user.getBase().getAllowFlight()); - - } -} diff --git a/Essentials/test/com/earth2me/essentials/UserTest.java b/Essentials/test/com/earth2me/essentials/UserTest.java deleted file mode 100644 index 0099dd4c3..000000000 --- a/Essentials/test/com/earth2me/essentials/UserTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.earth2me.essentials; - -import junit.framework.TestCase; -import net.ess3.api.MaxMoneyException; -import org.bukkit.Location; -import org.bukkit.World.Environment; -import org.bukkit.plugin.InvalidDescriptionException; - -import java.io.IOException; -import java.math.BigDecimal; - - -public class UserTest extends TestCase { - private final OfflinePlayer base1; - private final Essentials ess; - private final FakeServer server; - - public UserTest(String testName) { - super(testName); - server = new FakeServer(); - server.createWorld("testWorld", Environment.NORMAL); - ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); - } catch (IOException ex) { - fail("IOException"); - } - base1 = server.createPlayer("testPlayer1"); - server.addPlayer(base1); - ess.getUser(base1); - } - - private void should(String what) { - System.out.println(getName() + " should " + what); - } - - public void testUpdate() { - OfflinePlayer base1alt = server.createPlayer(base1.getName()); - assertEquals(base1alt, ess.getUser(base1alt).getBase()); - } - - public void testHome() { - User user = ess.getUser(base1); - Location loc = base1.getLocation(); - user.setHome("home", loc); - OfflinePlayer base2 = server.createPlayer(base1.getName()); - User user2 = ess.getUser(base2); - - Location home = user2.getHome(loc); - assertNotNull(home); - assertEquals(loc.getWorld().getName(), home.getWorld().getName()); - assertEquals(loc.getX(), home.getX()); - assertEquals(loc.getY(), home.getY()); - assertEquals(loc.getZ(), home.getZ()); - assertEquals(loc.getYaw(), home.getYaw()); - assertEquals(loc.getPitch(), home.getPitch()); - } - - public void testMoney() { - should("properly set, take, give, and get money"); - User user = ess.getUser(base1); - BigDecimal i = new BigDecimal("100.5"); - try { - user.setMoney(i); - user.takeMoney(new BigDecimal(50)); - i = i.subtract(BigDecimal.valueOf(50)); - user.giveMoney(new BigDecimal(25)); - i = i.add(BigDecimal.valueOf(25)); - } catch (MaxMoneyException ex) { - fail(); - } - - assertEquals(user.getMoney(), i); - } -} diff --git a/Essentials/test/com/earth2me/essentials/UtilTest.java b/Essentials/test/com/earth2me/essentials/UtilTest.java deleted file mode 100644 index 5fc56e2b5..000000000 --- a/Essentials/test/com/earth2me/essentials/UtilTest.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.earth2me.essentials; - -import com.earth2me.essentials.utils.DateUtil; -import com.earth2me.essentials.utils.LocationUtil; -import com.earth2me.essentials.utils.VersionUtil; -import junit.framework.TestCase; -import org.bukkit.World.Environment; -import org.bukkit.plugin.InvalidDescriptionException; - -import java.io.IOException; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashSet; -import java.util.Set; - - -public class UtilTest extends TestCase { - - public UtilTest() { - FakeServer server = new FakeServer(); - server.createWorld("testWorld", Environment.NORMAL); - Essentials ess = new Essentials(server); - try { - ess.setupForTesting(server); - } catch (InvalidDescriptionException ex) { - fail("InvalidDescriptionException"); - } catch (IOException ex) { - fail("IOException"); - } - } - - public void testSafeLocation() { - Set testSet = new HashSet<>(); - int count = 0; - int x, y, z, origX, origY, origZ; - x = y = z = origX = origY = origZ = 0; - int i = 0; - while (true) { - testSet.add(x + ":" + y + ":" + z); - count++; - i++; - if (i >= LocationUtil.VOLUME.length) { - break; - } - x = origX + LocationUtil.VOLUME[i].x; - y = origY + LocationUtil.VOLUME[i].y; - z = origZ + LocationUtil.VOLUME[i].z; - } - assertTrue(testSet.contains("0:0:0")); - assertTrue(testSet.contains("3:3:3")); - assertEquals(testSet.size(), count); - int diameter = LocationUtil.RADIUS * 2 + 1; - assertEquals(diameter * diameter * diameter, count); - } - - public void testFDDnow() { - Calendar c = new GregorianCalendar(); - String resp = DateUtil.formatDateDiff(c, c); - assertEquals(resp, "now"); - } - - public void testFDDfuture() { - Calendar a, b; - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 1); - assertEquals("1 second", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 2); - assertEquals("2 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 3); - assertEquals("3 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 1, 0); - assertEquals("1 minute", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 2, 0); - assertEquals("2 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 3, 0); - assertEquals("3 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 11, 0, 0); - assertEquals("1 hour", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 12, 0, 0); - assertEquals("2 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 13, 0, 0); - assertEquals("3 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 2, 10, 0, 0); - assertEquals("1 day", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 3, 10, 0, 0); - assertEquals("2 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 4, 10, 0, 0); - assertEquals("3 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.MARCH, 1, 10, 0, 0); - assertEquals("1 month", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.APRIL, 1, 10, 0, 0); - assertEquals("2 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.MAY, 1, 10, 0, 0); - assertEquals("3 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2011, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("1 year", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2012, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("2 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2013, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("3 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2011, Calendar.MAY, 5, 23, 38, 12); - assertEquals("1 year 3 months 4 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.OCTOBER, 17, 23, 45, 45); - b = new GregorianCalendar(2015, Calendar.APRIL, 7, 10, 0, 0); - assertEquals("4 years 5 months 20 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2011, Calendar.MAY, 31, 10, 0, 0); - b = new GregorianCalendar(2011, Calendar.MAY, 31, 10, 5, 0); - assertEquals("5 minutes", DateUtil.formatDateDiff(a, b)); - } - - public void testFDDpast() { - Calendar a, b; - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 59); - assertEquals("1 second", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 58); - assertEquals("2 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 57); - assertEquals("3 seconds", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 59, 0); - assertEquals("1 minute", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 58, 0); - assertEquals("2 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 57, 0); - assertEquals("3 minutes", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 9, 0, 0); - assertEquals("1 hour", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 8, 0, 0); - assertEquals("2 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 7, 0, 0); - assertEquals("3 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 4, 10, 0, 0); - assertEquals("1 day", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 3, 10, 0, 0); - assertEquals("2 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 5, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.FEBRUARY, 2, 10, 0, 0); - assertEquals("3 days", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.MAY, 1, 10, 0, 0); - assertEquals("1 month", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.APRIL, 1, 10, 0, 0); - assertEquals("2 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.JUNE, 1, 10, 0, 0); - b = new GregorianCalendar(2010, Calendar.MARCH, 1, 10, 0, 0); - assertEquals("3 months", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2009, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("1 year", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2008, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("2 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2007, Calendar.FEBRUARY, 1, 10, 0, 0); - assertEquals("3 years", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.FEBRUARY, 1, 10, 0, 0); - b = new GregorianCalendar(2009, Calendar.MAY, 5, 23, 38, 12); - assertEquals("8 months 26 days 10 hours", DateUtil.formatDateDiff(a, b)); - a = new GregorianCalendar(2010, Calendar.OCTOBER, 17, 23, 45, 45); - b = new GregorianCalendar(2000, Calendar.APRIL, 7, 10, 0, 0); - assertEquals("10 years 6 months 10 days", DateUtil.formatDateDiff(a, b)); - } - - public void testVer() { - VersionUtil.BukkitVersion v; - v = VersionUtil.BukkitVersion.fromString("1.13.2-R0.1"); - assertEquals(v.getMajor(), 1); - assertEquals(v.getMinor(), 13); - assertEquals(v.getPatch(), 2); - assertEquals(v.getRevision(), 0.1); - assertEquals(v.getPrerelease(), -1); - v = VersionUtil.BukkitVersion.fromString("1.9-R1.4"); // not real - assertEquals(v.getMajor(), 1); - assertEquals(v.getMinor(), 9); - assertEquals(v.getPatch(), 0); - assertEquals(v.getRevision(), 1.4); - assertEquals(v.getPrerelease(), -1); - v = VersionUtil.BukkitVersion.fromString("1.14-pre5"); - assertEquals(v.getMajor(), 1); - assertEquals(v.getMinor(), 14); - assertEquals(v.getPatch(), 0); - assertEquals(v.getRevision(), 0.0); - assertEquals(v.getPrerelease(), 5); - v = VersionUtil.BukkitVersion.fromString("1.13.2-pre1-R0.1"); // not real - assertEquals(v.getMajor(), 1); - assertEquals(v.getMinor(), 13); - assertEquals(v.getPatch(), 2); - assertEquals(v.getRevision(), 0.1); - assertEquals(v.getPrerelease(), 1); - v = VersionUtil.BukkitVersion.fromString("1.14.3-SNAPSHOT"); - assertEquals(v.getMajor(), 1); - assertEquals(v.getMinor(), 14); - assertEquals(v.getPatch(), 3); - assertEquals(v.getRevision(), 0.0); - assertEquals(v.getPrerelease(), -1); - } -} diff --git a/Essentials/test/com/earth2me/essentials/utils/FormatUtilTest.java b/Essentials/test/com/earth2me/essentials/utils/FormatUtilTest.java deleted file mode 100644 index 0f922742e..000000000 --- a/Essentials/test/com/earth2me/essentials/utils/FormatUtilTest.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.earth2me.essentials.utils; - -import net.ess3.api.IUser; - -import org.junit.Test; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; - -public class FormatUtilTest { - - @Test - public void testFormatCase() { - checkFormatPerms("&aT&Aest", "&aT&Aest"); - checkFormatPerms("§aT§Aest", "Test"); - - checkFormatPerms("&aT&Aest", "§aT§Aest", "color"); - checkFormatPerms("§aT§Aest", "§aT§Aest", "color"); - } - - @Test - public void testFormatCategoryPerms() { - checkFormatPerms("Test", "Test"); - checkFormatPerms("Test", "Test", "color", "format"); - - checkFormatPerms("&1C&2o&3l&4o&5r&6m&7a&8t&9i&ac", "&1C&2o&3l&4o&5r&6m&7a&8t&9i&ac"); // Unchanged - checkFormatPerms("§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac", "Colormatic"); // Removed - checkFormatPerms("&1C&2o&3l&4o&5r&6m&7a&8t&9i&ac", "§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac", "color"); // Converted - checkFormatPerms("§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac", "§1C§2o§3l§4o§5r§6m§7a§8t§9i§ac", "color"); // Unchanged - - checkFormatPerms("&kFUNKY LOL", "§kFUNKY LOL", "magic"); // Converted - checkFormatPerms("§kFUNKY LOL", "§kFUNKY LOL", "magic"); // Unchanged - - // Magic isn't included in the format group - checkFormatPerms("&kFUNKY LOL", "&kFUNKY LOL"); // Unchanged - checkFormatPerms("§kFUNKY LOL", "FUNKY LOL"); // Removed - checkFormatPerms("&kFUNKY LOL", "&kFUNKY LOL", "format"); // Unchanged - checkFormatPerms("§kFUNKY LOL", "FUNKY LOL", "format"); // Removed - - checkFormatPerms("&f<est", "&f<est"); - checkFormatPerms("§f§ltest", "test"); - checkFormatPerms("&f<est", "§f<est", "color"); - checkFormatPerms("§f§ltest", "§ftest", "color"); - checkFormatPerms("&f<est", "&f§ltest", "format"); - checkFormatPerms("§f§ltest", "§ltest", "format"); - checkFormatPerms("&f<est", "§f§ltest", "color", "format"); - checkFormatPerms("§f§ltest", "§f§ltest", "color", "format"); - } - - @Test - public void testFormatCodePerms() { - checkFormatPerms("&1Te&2st", "&1Te&2st"); - checkFormatPerms("§1Te§2st", "Test"); - - checkFormatPerms("&1Te&2st", "§1Te&2st", "dark_blue"); - checkFormatPerms("§1Te§2st", "§1Test", "dark_blue"); - - checkFormatPerms("&1Te&2st", "&1Te§2st", "dark_green"); - checkFormatPerms("§1Te§2st", "Te§2st", "dark_green"); - - checkFormatPerms("&1Te&2st", "§1Te§2st", "dark_blue", "dark_green"); - checkFormatPerms("§1Te§2st", "§1Te§2st", "dark_blue", "dark_green"); - - // Obfuscated behaves the same as magic - checkFormatPerms("&kFUNKY LOL", "§kFUNKY LOL", "obfuscated"); - checkFormatPerms("§kFUNKY LOL", "§kFUNKY LOL", "obfuscated"); - } - - @Test - public void testFormatAddRemovePerms() { - checkFormatPerms("&1Te&2st&ling", "&1Te§2st&ling", "color", "-dark_blue"); - checkFormatPerms("§1Te§2st§ling", "Te§2sting", "color", "-dark_blue"); - - // Nothing happens when negated without being previously present - checkFormatPerms("&1Te&2st&ling", "&1Te§2st&ling", "color", "-dark_blue", "-bold"); - checkFormatPerms("§1Te§2st§ling", "Te§2sting", "color", "-dark_blue", "-bold"); - } - - @Test - public void testFormatEscaping() { - // Don't do anything to non-format codes - checkFormatPerms("True & false", "True & false"); - checkFormatPerms("True && false", "True && false"); - - // Formats are only unescaped if you have the right perms - checkFormatPerms("This is &&a message", "This is &&a message"); - checkFormatPerms("This is &&a message", "This is &a message", "color"); - - // Can't put an & before a non-escaped format - checkFormatPerms("This is &&&a message", "This is &&&a message"); - checkFormatPerms("This is &&&a message", "This is &&a message", "color"); - } - - private void checkFormatPerms(String input, String expectedOutput, String... perms) { - IUser user = mock(IUser.class); - for (String perm : perms) { - if (perm.startsWith("-")) { - // Negated perms - perm = perm.substring(1); - when(user.isAuthorized("essentials.chat." + perm)).thenReturn(false); - } else { - when(user.isAuthorized("essentials.chat." + perm)).thenReturn(true); - } - - when(user.isPermissionSet("essentials.chat." + perm)).thenReturn(true); - } - assertEquals(expectedOutput, FormatUtil.formatString(user, "essentials.chat", input)); - } -} diff --git a/EssentialsAntiBuild/pom.xml b/EssentialsAntiBuild/pom.xml deleted file mode 100644 index 038b46307..000000000 --- a/EssentialsAntiBuild/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - 4.0.0 - - - net.ess3 - EssentialsXParent - 2.17.1 - - - EssentialsXAntiBuild - - - EssentialsXAntiBuild-${full.version} - - - - - net.ess3 - EssentialsX - ${project.version} - - - \ No newline at end of file diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/AntiBuildConfig.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/AntiBuildConfig.java deleted file mode 100644 index 3cdd68855..000000000 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/AntiBuildConfig.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.earth2me.essentials.antibuild; - - -public enum AntiBuildConfig { - disable_build("protect.disable.build", true), - disable_use("protect.disable.use", true), - alert_on_placement("protect.alert.on-placement"), - alert_on_use("protect.alert.on-use"), - alert_on_break("protect.alert.on-break"), - blacklist_placement("protect.blacklist.placement"), - blacklist_usage("protect.blacklist.usage"), - blacklist_break("protect.blacklist.break"), - blacklist_piston("protect.blacklist.piston"), - blacklist_dispenser("protect.blacklist.dispenser"); - private final String configName; - private final String defValueString; - private final boolean defValueBoolean; - private final boolean isList; - private final boolean isString; - - AntiBuildConfig(final String configName) { - this(configName, null, false, true, false); - } - - AntiBuildConfig(final String configName, final boolean defValueBoolean) { - this(configName, null, defValueBoolean, false, false); - } - - AntiBuildConfig(final String configName, final String defValueString, final boolean defValueBoolean, final boolean isList, final boolean isString) { - this.configName = configName; - this.defValueString = defValueString; - this.defValueBoolean = defValueBoolean; - this.isList = isList; - this.isString = isString; - } - - /** - * @return the configName - */ - public String getConfigName() { - return configName; - } - - /** - * @return the default value String - */ - public String getDefaultValueString() { - return defValueString; - } - - /** - * @return the default value boolean - */ - public boolean getDefaultValueBoolean() { - return defValueBoolean; - } - - public boolean isString() { - return isString; - } - - public boolean isList() { - return isList; - } -} diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java deleted file mode 100644 index 59aa5828b..000000000 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuild.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.earth2me.essentials.antibuild; - -import com.earth2me.essentials.metrics.Metrics; -import org.bukkit.Material; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - - -public class EssentialsAntiBuild extends JavaPlugin implements IAntiBuild { - private final transient Map settingsBoolean = new EnumMap<>(AntiBuildConfig.class); - private final transient Map> settingsList = new EnumMap<>(AntiBuildConfig.class); - private transient EssentialsConnect ess = null; - private transient Metrics metrics = null; - - @Override - public void onEnable() { - final PluginManager pm = this.getServer().getPluginManager(); - final Plugin essPlugin = pm.getPlugin("Essentials"); - if (essPlugin == null || !essPlugin.isEnabled()) { - return; - } - ess = new EssentialsConnect(essPlugin, this); - - final EssentialsAntiBuildListener blockListener = new EssentialsAntiBuildListener(this); - pm.registerEvents(blockListener, this); - - if (metrics == null) { - metrics = new Metrics(this); - } - } - - @Override - public boolean checkProtectionItems(final AntiBuildConfig list, final Material mat) { - final List itemList = settingsList.get(list); - return itemList != null && !itemList.isEmpty() && itemList.contains(mat); - } - - @Override - public EssentialsConnect getEssentialsConnect() { - return ess; - } - - @Override - public Map getSettingsBoolean() { - return settingsBoolean; - } - - @Override - public Map> getSettingsList() { - return settingsList; - } - - @Override - public boolean getSettingBool(final AntiBuildConfig protectConfig) { - final Boolean bool = settingsBoolean.get(protectConfig); - return bool == null ? protectConfig.getDefaultValueBoolean() : bool; - } -} diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java deleted file mode 100644 index a9cff948f..000000000 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java +++ /dev/null @@ -1,298 +0,0 @@ -package com.earth2me.essentials.antibuild; - -import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.VersionUtil; -import net.ess3.api.IEssentials; -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.HumanEntity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.*; -import org.bukkit.event.entity.EntityPickupItemEvent; -import org.bukkit.event.hanging.HangingBreakByEntityEvent; -import org.bukkit.event.inventory.CraftItemEvent; -import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.inventory.ItemStack; - -import java.util.logging.Level; -import java.util.logging.Logger; - - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsAntiBuildListener implements Listener { - private static final Logger logger = Logger.getLogger("EssentialsAntiBuild"); - final private transient IAntiBuild prot; - final private transient IEssentials ess; - - EssentialsAntiBuildListener(final IAntiBuild parent) { - this.prot = parent; - this.ess = prot.getEssentialsConnect().getEssentials(); - - if (isEntityPickupEvent()) { - ess.getServer().getPluginManager().registerEvents(new EntityPickupItemListener(), prot); - } else { - ess.getServer().getPluginManager().registerEvents(new PlayerPickupItemListener(), prot); - } - } - - private static boolean isEntityPickupEvent() { - try { - Class.forName("org.bukkit.event.entity.EntityPickupItemEvent"); - return true; - } catch (ClassNotFoundException ignored) { - return false; - } - } - - private boolean metaPermCheck(final User user, final String action, final Block block) { - if (block == null) { - if (ess.getSettings().isDebug()) { - logger.log(Level.INFO, "AntiBuild permission check failed, invalid block."); - } - return false; - } - return metaPermCheck(user, action, block.getType(), block.getData()); - } - - public boolean metaPermCheck(final User user, final String action, final Material material) { - final String blockPerm = "essentials.build." + action + "." + material; - return user.isAuthorized(blockPerm); - } - - private boolean metaPermCheck(final User user, final String action, final Material material, final short data) { - final String blockPerm = "essentials.build." + action + "." + material; - final String dataPerm = blockPerm + ":" + data; - - if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) { - if (user.getBase().isPermissionSet(dataPerm)) { - return user.isAuthorized(dataPerm); - } else { - if (ess.getSettings().isDebug()) { - logger.log(Level.INFO, "DataValue perm on " + user.getName() + " is not directly set: " + dataPerm); - } - } - } - - - return user.isAuthorized(blockPerm); - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockPlace(final BlockPlaceEvent event) { - final User user = ess.getUser(event.getPlayer()); - final Block block = event.getBlockPlaced(); - final Material type = block.getType(); - - if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "place", block)) { - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildPlace", type.toString())); - } - event.setCancelled(true); - return; - } - - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_placement, type) && !user.isAuthorized("essentials.protect.exemptplacement")) { - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildPlace", type.toString())); - } - event.setCancelled(true); - return; - } - - if (prot.checkProtectionItems(AntiBuildConfig.alert_on_placement, type) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { - prot.getEssentialsConnect().alert(user, type.toString(), tl("alertPlaced")); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockBreak(final BlockBreakEvent event) { - final User user = ess.getUser(event.getPlayer()); - final Block block = event.getBlock(); - final Material type = block.getType(); - - if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "break", block)) { - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildBreak", type.toString())); - } - event.setCancelled(true); - return; - } - - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_break, type) && !user.isAuthorized("essentials.protect.exemptbreak")) { - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildBreak", type.toString())); - } - event.setCancelled(true); - return; - } - - if (prot.checkProtectionItems(AntiBuildConfig.alert_on_break, type) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { - prot.getEssentialsConnect().alert(user, type.toString(), tl("alertBroke")); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onHangingBreak(final HangingBreakByEntityEvent event) { - final Entity entity = event.getRemover(); - if (entity instanceof Player) { - final User user = ess.getUser((Player) entity); - final EntityType type = event.getEntity().getType(); - final boolean warn = ess.getSettings().warnOnBuildDisallow(); - if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (type == EntityType.PAINTING && !metaPermCheck(user, "break", Material.PAINTING)) { - if (warn) { - user.sendMessage(tl("antiBuildBreak", Material.PAINTING.toString())); - } - event.setCancelled(true); - } else if (type == EntityType.ITEM_FRAME && !metaPermCheck(user, "break", Material.ITEM_FRAME)) { - if (warn) { - user.sendMessage(tl("antiBuildBreak", Material.ITEM_FRAME.toString())); - } - event.setCancelled(true); - } - } - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockPistonExtend(final BlockPistonExtendEvent event) { - for (Block block : event.getBlocks()) { - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getType())) { - event.setCancelled(true); - return; - } - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockPistonRetract(final BlockPistonRetractEvent event) { - if (!event.isSticky()) { - return; - } - final Block block = event.getBlock(); - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_piston, block.getType())) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.LOW) - public void onPlayerInteract(final PlayerInteractEvent event) { - // Do not return if cancelled, because the interact event has 2 cancelled states. - final User user = ess.getUser(event.getPlayer()); - final ItemStack item = event.getItem(); - - if (item != null && prot.checkProtectionItems(AntiBuildConfig.blacklist_usage, item.getType()) && !user.isAuthorized("essentials.protect.exemptusage")) { - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildUse", item.getType().toString())); - } - event.setCancelled(true); - return; - } - - if (item != null && prot.checkProtectionItems(AntiBuildConfig.alert_on_use, item.getType()) && !user.isAuthorized("essentials.protect.alerts.notrigger")) { - prot.getEssentialsConnect().alert(user, item.getType().toString(), tl("alertUsed")); - } - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (event.hasItem() && !metaPermCheck(user, "interact", item.getType(), item.getDurability())) { - event.setCancelled(true); - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildUse", item.getType().toString())); - } - return; - } - if (event.hasBlock() && !metaPermCheck(user, "interact", event.getClickedBlock())) { - event.setCancelled(true); - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildInteract", event.getClickedBlock().getType().toString())); - } - } - } - } - - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onCraftItemEvent(final CraftItemEvent event) { - HumanEntity entity = event.getWhoClicked(); - - if (entity instanceof Player) { - final User user = ess.getUser((Player) entity); - final ItemStack item = event.getRecipe().getResult(); - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "craft", item.getType(), item.getDurability())) { - event.setCancelled(true); - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildCraft", item.getType().toString())); - } - } - } - } - } - - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerDropItem(final PlayerDropItemEvent event) { - - final User user = ess.getUser(event.getPlayer()); - final ItemStack item = event.getItemDrop().getItemStack(); - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "drop", item.getType(), item.getDurability())) { - event.setCancelled(true); - user.getBase().updateInventory(); - if (ess.getSettings().warnOnBuildDisallow()) { - user.sendMessage(tl("antiBuildDrop", item.getType().toString())); - } - } - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockDispense(final BlockDispenseEvent event) { - final ItemStack item = event.getItem(); - if (prot.checkProtectionItems(AntiBuildConfig.blacklist_dispenser, item.getType())) { - event.setCancelled(true); - } - } - - private class EntityPickupItemListener implements Listener { - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerPickupItem(EntityPickupItemEvent event) { - if (!(event.getEntity() instanceof Player)) return; - - final User user = ess.getUser((Player) event.getEntity()); - final ItemStack item = event.getItem().getItemStack(); - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) { - event.setCancelled(true); - event.getItem().setPickupDelay(50); - } - } - } - } - - private class PlayerPickupItemListener implements Listener { - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) - public void onPlayerPickupItem(PlayerPickupItemEvent event) { - - final User user = ess.getUser(event.getPlayer()); - final ItemStack item = event.getItem().getItemStack(); - - if (prot.getSettingBool(AntiBuildConfig.disable_use) && !user.canBuild() && !user.isAuthorized("essentials.build")) { - if (!metaPermCheck(user, "pickup", item.getType(), item.getDurability())) { - event.setCancelled(true); - event.getItem().setPickupDelay(50); - } - } - } - } -} diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java deleted file mode 100644 index 41de89449..000000000 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/EssentialsConnect.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.earth2me.essentials.antibuild; - -import com.earth2me.essentials.IConf; -import com.earth2me.essentials.User; -import net.ess3.api.IEssentials; -import org.bukkit.Location; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import static com.earth2me.essentials.I18n.tl; - - -class EssentialsConnect { - private static final Logger logger = Logger.getLogger("EssentialsAntiBuild"); - private final transient IEssentials ess; - private final transient IAntiBuild protect; - - EssentialsConnect(Plugin essPlugin, Plugin essProtect) { - if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - logger.log(Level.WARNING, tl("versionMismatchAll")); - } - ess = (IEssentials) essPlugin; - protect = (IAntiBuild) essProtect; - AntiBuildReloader pr = new AntiBuildReloader(); - pr.reloadConfig(); - ess.addReloadListener(pr); - } - - IEssentials getEssentials() { - return ess; - } - - void alert(final User user, final String item, final String type) { - final Location loc = user.getLocation(); - final String warnMessage = tl("alertFormat", user.getName(), type, item, loc.getWorld().getName() + "," + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ()); - logger.log(Level.WARNING, warnMessage); - for (Player p : ess.getServer().getOnlinePlayers()) { - final User alertUser = ess.getUser(p); - if (alertUser.isAuthorized("essentials.protect.alerts")) { - alertUser.sendMessage(warnMessage); - } - } - } - - private class AntiBuildReloader implements IConf { - @Override - public void reloadConfig() { - for (AntiBuildConfig protectConfig : AntiBuildConfig.values()) { - if (protectConfig.isList()) { - protect.getSettingsList().put(protectConfig, ess.getSettings().getProtectList(protectConfig.getConfigName())); - } else { - protect.getSettingsBoolean().put(protectConfig, ess.getSettings().getProtectBoolean(protectConfig.getConfigName(), protectConfig.getDefaultValueBoolean())); - } - - } - - } - } -} diff --git a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java b/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java deleted file mode 100644 index cb19d75de..000000000 --- a/EssentialsAntiBuild/src/com/earth2me/essentials/antibuild/IAntiBuild.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.earth2me.essentials.antibuild; - -import org.bukkit.Material; -import org.bukkit.plugin.Plugin; - -import java.util.List; -import java.util.Map; - - -public interface IAntiBuild extends Plugin { - boolean checkProtectionItems(final AntiBuildConfig list, final Material mat); - - boolean getSettingBool(final AntiBuildConfig protectConfig); - - EssentialsConnect getEssentialsConnect(); - - Map getSettingsBoolean(); - - Map> getSettingsList(); -} diff --git a/EssentialsAntiBuild/src/plugin.yml b/EssentialsAntiBuild/src/plugin.yml deleted file mode 100644 index 7ab7b3f01..000000000 --- a/EssentialsAntiBuild/src/plugin.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) -name: EssentialsAntiBuild -main: com.earth2me.essentials.antibuild.EssentialsAntiBuild -# Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${full.version} -website: http://tiny.cc/EssentialsCommands -description: Provides build protection. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, Iaccidentally] -depend: [Essentials] -api-version: 1.13 diff --git a/EssentialsChat/pom.xml b/EssentialsChat/pom.xml deleted file mode 100644 index 4006fea8c..000000000 --- a/EssentialsChat/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - 4.0.0 - - - net.ess3 - EssentialsXParent - 2.17.1 - - - EssentialsXChat - - - EssentialsXChat-${full.version} - - - - - net.ess3 - EssentialsX - ${project.version} - - - \ No newline at end of file diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java b/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java deleted file mode 100644 index b1bab89f1..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/ChatStore.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.Trade; -import com.earth2me.essentials.User; -import net.ess3.api.IEssentials; - - -class ChatStore { - private final User user; - private final String type; - private final Trade charge; - private long radius; - - ChatStore(final IEssentials ess, final User user, final String type) { - this.user = user; - this.type = type; - this.charge = new Trade(getLongType(), ess); - } - - User getUser() { - return user; - } - - Trade getCharge() { - return charge; - } - - String getType() { - return type; - } - - final String getLongType() { - return type.length() == 0 ? "chat" : "chat-" + type; - } - - long getRadius() { - return radius; - } - - void setRadius(long radius) { - this.radius = radius; - } -} diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java deleted file mode 100644 index d9c273941..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.metrics.Metrics; -import net.ess3.api.IEssentials; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsChat extends JavaPlugin { - - private transient Metrics metrics = null; - - @Override - public void onEnable() { - final PluginManager pluginManager = getServer().getPluginManager(); - final IEssentials ess = (IEssentials) pluginManager.getPlugin("Essentials"); - if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, tl("versionMismatchAll")); - } - if (!ess.isEnabled()) { - this.setEnabled(false); - return; - } - - final Map chatStore = Collections.synchronizedMap(new HashMap<>()); - - final EssentialsChatPlayerListenerLowest playerListenerLowest = new EssentialsChatPlayerListenerLowest(getServer(), ess, chatStore); - final EssentialsChatPlayerListenerNormal playerListenerNormal = new EssentialsChatPlayerListenerNormal(getServer(), ess, chatStore); - final EssentialsChatPlayerListenerHighest playerListenerHighest = new EssentialsChatPlayerListenerHighest(getServer(), ess, chatStore); - pluginManager.registerEvents(playerListenerLowest, this); - pluginManager.registerEvents(playerListenerNormal, this); - pluginManager.registerEvents(playerListenerHighest, this); - - if (metrics == null) { - metrics = new Metrics(this); - } - } - -} diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java deleted file mode 100644 index 38cf0e811..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayer.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.ChargeException; -import com.earth2me.essentials.Trade; -import com.earth2me.essentials.User; -import net.ess3.api.IEssentials; -import org.bukkit.Server; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; - -import java.util.Map; -import java.util.logging.Logger; - - -public abstract class EssentialsChatPlayer implements Listener { - static final Logger logger = Logger.getLogger("EssentialsChat"); - transient IEssentials ess; - final transient Server server; - private final transient Map chatStorage; - - EssentialsChatPlayer(final Server server, final IEssentials ess, final Map chatStorage) { - this.ess = ess; - this.server = server; - this.chatStorage = chatStorage; - } - - public abstract void onPlayerChat(final AsyncPlayerChatEvent event); - - boolean isAborted(final AsyncPlayerChatEvent event) { - return event.isCancelled(); - } - - String getChatType(final String message) { - if (message.length() == 0) { - //Ignore empty chat events generated by plugins - return ""; - } - - final char prefix = message.charAt(0); - if (prefix == ess.getSettings().getChatShout()) { - return "shout"; - } else if (prefix == ess.getSettings().getChatQuestion()) { - return "question"; - } else { - return ""; - } - } - - ChatStore getChatStore(final AsyncPlayerChatEvent event) { - return chatStorage.get(event); - } - - void setChatStore(final AsyncPlayerChatEvent event, final ChatStore chatStore) { - chatStorage.put(event, chatStore); - } - - ChatStore delChatStore(final AsyncPlayerChatEvent event) { - return chatStorage.remove(event); - } - - private void charge(final User user, final Trade charge) throws ChargeException { - charge.charge(user); - } - - boolean charge(final AsyncPlayerChatEvent event, final ChatStore chatStore) { - try { - charge(chatStore.getUser(), chatStore.getCharge()); - } catch (ChargeException e) { - ess.showError(chatStore.getUser().getSource(), e, "\\ chat " + chatStore.getLongType()); - event.setCancelled(true); - return false; - } - return true; - } -} diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java deleted file mode 100644 index 65845e560..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerHighest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.earth2me.essentials.chat; - -import net.ess3.api.IEssentials; -import org.bukkit.Server; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.AsyncPlayerChatEvent; - -import java.util.Map; - - -public class EssentialsChatPlayerListenerHighest extends EssentialsChatPlayer { - EssentialsChatPlayerListenerHighest(final Server server, final IEssentials ess, final Map chatStorage) { - super(server, ess, chatStorage); - } - - @EventHandler(priority = EventPriority.HIGHEST) - @Override - public void onPlayerChat(final AsyncPlayerChatEvent event) { - final ChatStore chatStore = delChatStore(event); - if (isAborted(event) || chatStore == null) { - return; - } - - // This file should handle charging the user for the action before returning control back - charge(event, chatStore); - } -} diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java deleted file mode 100644 index 5963fc04f..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.User; -import com.earth2me.essentials.utils.FormatUtil; -import net.ess3.api.IEssentials; -import org.bukkit.Server; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.scoreboard.Team; - -import java.util.Locale; -import java.util.Map; - - -public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer { - EssentialsChatPlayerListenerLowest(final Server server, final IEssentials ess, final Map chatStorage) { - super(server, ess, chatStorage); - } - - @EventHandler(priority = EventPriority.LOWEST) - @Override - public void onPlayerChat(final AsyncPlayerChatEvent event) { - if (isAborted(event)) { - return; - } - - final User user = ess.getUser(event.getPlayer()); - - if (user == null) { - event.setCancelled(true); - return; - } - - final ChatStore chatStore = new ChatStore(ess, user, getChatType(event.getMessage())); - setChatStore(event, chatStore); - - // This listener should apply the general chat formatting only...then return control back the event handler - event.setMessage(FormatUtil.formatMessage(user, "essentials.chat", event.getMessage())); - String group = user.getGroup(); - String world = user.getWorld().getName(); - - Player player = user.getBase(); - String prefix = FormatUtil.replaceFormat(ess.getPermissionsHandler().getPrefix(player)); - String suffix = FormatUtil.replaceFormat(ess.getPermissionsHandler().getSuffix(player)); - Team team = player.getScoreboard().getPlayerTeam(player); - - String format = ess.getSettings().getChatFormat(group); - format = format.replace("{0}", group); - format = format.replace("{1}", world); - format = format.replace("{2}", world.substring(0, 1).toUpperCase(Locale.ENGLISH)); - format = format.replace("{3}", team == null ? "" : team.getPrefix()); - format = format.replace("{4}", team == null ? "" : team.getSuffix()); - format = format.replace("{5}", team == null ? "" : team.getDisplayName()); - format = format.replace("{6}", prefix); - format = format.replace("{7}", suffix); - format = format.replace("{8}", player.getName()); - synchronized (format) { - event.setFormat(format); - } - } -} diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java deleted file mode 100644 index 3157701a6..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerNormal.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.User; -import net.ess3.api.IEssentials; -import net.ess3.api.events.LocalChatSpyEvent; -import org.bukkit.Location; -import org.bukkit.Server; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.player.AsyncPlayerChatEvent; - -import java.util.*; -import java.util.logging.Level; - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsChatPlayerListenerNormal extends EssentialsChatPlayer { - EssentialsChatPlayerListenerNormal(final Server server, final IEssentials ess, final Map chatStorage) { - super(server, ess, chatStorage); - } - - @EventHandler(priority = EventPriority.NORMAL) - @Override - public void onPlayerChat(final AsyncPlayerChatEvent event) { - if (isAborted(event)) { - return; - } - - // This file should handle detection of the local chat features; if local chat is enabled, we need to handle it here - long radius = ess.getSettings().getChatRadius(); - if (radius < 1) { - return; - } - radius *= radius; - - final ChatStore chatStore = getChatStore(event); - final User user = chatStore.getUser(); - chatStore.setRadius(radius); - - if (event.getMessage().length() > 1 && chatStore.getType().length() > 0) { - final StringBuilder permission = new StringBuilder(); - permission.append("essentials.chat.").append(chatStore.getType()); - - if (user.isAuthorized(permission.toString())) { - event.setMessage(event.getMessage().substring(1)); - event.setFormat(tl(chatStore.getType() + "Format", event.getFormat())); - return; - } - - user.sendMessage(tl("notAllowedTo" + chatStore.getType().substring(0, 1).toUpperCase(Locale.ENGLISH) + chatStore.getType().substring(1))); - event.setCancelled(true); - return; - } - - final Location loc = user.getLocation(); - final World world = loc.getWorld(); - - if (!charge(event, chatStore)) { - return; - } - - Set outList = event.getRecipients(); - Set spyList = new HashSet<>(); - - try { - outList.add(event.getPlayer()); - } catch (UnsupportedOperationException ex) { - if (ess.getSettings().isDebug()) { - logger.log(Level.INFO, "Plugin triggered custom chat event, local chat handling aborted.", ex); - } - return; - } - - final String format = event.getFormat(); - event.setFormat(tl("chatTypeLocal").concat(event.getFormat())); - - logger.info(tl("localFormat", user.getName(), event.getMessage())); - - final Iterator it = outList.iterator(); - while (it.hasNext()) { - final Player onlinePlayer = it.next(); - final User onlineUser = ess.getUser(onlinePlayer); - if (!onlineUser.equals(user)) { - boolean abort = false; - final Location playerLoc = onlineUser.getLocation(); - if (playerLoc.getWorld() != world) { - abort = true; - } else { - final double delta = playerLoc.distanceSquared(loc); - if (delta > chatStore.getRadius()) { - abort = true; - } - } - if (abort) { - if (onlineUser.isAuthorized("essentials.chat.spy")) { - spyList.add(onlinePlayer); - } - it.remove(); - } - } - } - - if (outList.size() < 2) { - user.sendMessage(tl("localNoOne")); - } - - LocalChatSpyEvent spyEvent = new LocalChatSpyEvent(event.isAsynchronous(), event.getPlayer(), format, event.getMessage(), spyList); - server.getPluginManager().callEvent(spyEvent); - - if (!spyEvent.isCancelled()) { - for (Player onlinePlayer : spyEvent.getRecipients()) { - onlinePlayer.sendMessage(String.format(spyEvent.getFormat(), user.getDisplayName(), spyEvent.getMessage())); - } - } - } -} diff --git a/EssentialsChat/src/plugin.yml b/EssentialsChat/src/plugin.yml deleted file mode 100644 index 827e5e218..000000000 --- a/EssentialsChat/src/plugin.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) -name: EssentialsChat -main: com.earth2me.essentials.chat.EssentialsChat -# Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${full.version} -website: http://tiny.cc/EssentialsCommands -description: Provides chat control features for Essentials. Requires Permissions. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits, md_5, Okamosy, Iaccidentally] -depend: [Essentials] -api-version: 1.13 diff --git a/EssentialsGeoIP/pom.xml b/EssentialsGeoIP/pom.xml deleted file mode 100644 index e98d631c5..000000000 --- a/EssentialsGeoIP/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - 4.0.0 - - - net.ess3 - EssentialsXParent - 2.17.1 - - - EssentialsXGeoIP - - - EssentialsXGeoIP-${full.version} - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 - - - package - - shade - - - - - false - true - - - javatar:javatar - com.maxmind.geoip2:geoip2 - com.maxmind.db:maxmind-db - com.fasterxml.jackson.core:* - - - - - - - - - - net.ess3 - EssentialsX - ${project.version} - - - com.maxmind.geoip2 - geoip2 - 2.12.0 - - - javatar - javatar - 2.5 - - - \ No newline at end of file diff --git a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java deleted file mode 100644 index 89c599e6f..000000000 --- a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIP.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.earth2me.essentials.geoip; - -import com.earth2me.essentials.metrics.Metrics; -import net.ess3.api.IEssentials; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.logging.Level; - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsGeoIP extends JavaPlugin { - - private transient Metrics metrics = null; - - @Override - public void onEnable() { - final PluginManager pm = getServer().getPluginManager(); - final IEssentials ess = (IEssentials) pm.getPlugin("Essentials"); - if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, tl("versionMismatchAll")); - } - if (!ess.isEnabled()) { - this.setEnabled(false); - return; - } - final EssentialsGeoIPPlayerListener playerListener = new EssentialsGeoIPPlayerListener(getDataFolder(), ess); - pm.registerEvents(playerListener, this); - - - getLogger().log(Level.INFO, "This product includes GeoLite2 data created by MaxMind, available from http://www.maxmind.com/."); - - if (metrics == null) { - metrics = new Metrics(this); - } - } - -} diff --git a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java b/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java deleted file mode 100644 index 86175e6ad..000000000 --- a/EssentialsGeoIP/src/com/earth2me/essentials/geoip/EssentialsGeoIPPlayerListener.java +++ /dev/null @@ -1,230 +0,0 @@ -package com.earth2me.essentials.geoip; - -import com.earth2me.essentials.EssentialsConf; -import com.earth2me.essentials.IConf; -import com.earth2me.essentials.User; -import com.maxmind.geoip2.DatabaseReader; -import com.maxmind.geoip2.model.CityResponse; -import com.maxmind.geoip2.model.CountryResponse; -import com.maxmind.geoip2.exception.*; -import net.ess3.api.IEssentials; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -import java.io.*; -import java.net.*; -import java.util.logging.Level; -import java.util.Date; -import java.util.logging.Logger; -import java.util.zip.GZIPInputStream; -import java.util.Arrays; -import com.ice.tar.TarInputStream; -import com.ice.tar.TarEntry; - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsGeoIPPlayerListener implements Listener, IConf { - private DatabaseReader mmreader = null; // initialize maxmind geoip2 reader - private static final Logger logger = Logger.getLogger("EssentialsGeoIP"); - private File databaseFile; - private File dataFolder; - private final EssentialsConf config; - private final transient IEssentials ess; - - EssentialsGeoIPPlayerListener(File dataFolder, IEssentials ess) { - this.ess = ess; - this.dataFolder = dataFolder; - this.config = new EssentialsConf(new File(dataFolder, "config.yml")); - config.setTemplateName("/config.yml", EssentialsGeoIP.class); - reloadConfig(); - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerJoin(final PlayerJoinEvent event) { - ess.runTaskAsynchronously(() -> delayedJoin(event.getPlayer())); - } - - private void delayedJoin(Player player) { - User u = ess.getUser(player); - if (u.isAuthorized("essentials.geoip.hide") || player.getAddress() == null) { - return; - } - InetAddress address = player.getAddress().getAddress(); - StringBuilder sb = new StringBuilder(); - - - try { - if (config.getBoolean("database.show-cities", false)) { - CityResponse response = mmreader.city(address); - if (response == null) { - return; - } - String city; - String region; - String country; - city = response.getCity().getName(); - region = response.getMostSpecificSubdivision().getName(); - country = response.getCountry().getName(); - if (city != null) { - sb.append(city).append(", "); - } - if (region != null) { - sb.append(region).append(", "); - } - sb.append(country); - } else { - CountryResponse response = mmreader.country(address); - sb.append(response.getCountry().getName()); - } - } catch (AddressNotFoundException ex) { - - if (checkIfLocal(address)) { - for (Player online : player.getServer().getOnlinePlayers()) { - User user = ess.getUser(online); - if (user.isAuthorized("essentials.geoip.show")) { - user.sendMessage(tl("geoipCantFind", u.getDisplayName())); - } - } - return; - } - // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. - // TODO: Maybe, we can set a new custom msg about addr-not-found in messages.properties. - logger.log(Level.INFO, tl("cantReadGeoIpDB") + " " + ex.getLocalizedMessage()); - } catch (IOException | GeoIp2Exception ex) { - // GeoIP2 API forced this when address not found in their DB. jar will not complied without this. - logger.log(Level.SEVERE, tl("cantReadGeoIpDB") + " " + ex.getLocalizedMessage()); - } - if (config.getBoolean("show-on-whois", true)) { - u.setGeoLocation(sb.toString()); - } - if (config.getBoolean("show-on-login", true) && !u.isHidden()) { - for (Player onlinePlayer : player.getServer().getOnlinePlayers()) { - User user = ess.getUser(onlinePlayer); - if (user.isAuthorized("essentials.geoip.show")) { - user.sendMessage(tl("geoipJoinFormat", u.getDisplayName(), sb.toString())); - } - } - } - } - - @Override - public final void reloadConfig() { - config.load(); - - // detect and update the old config.yml. migrate from legacy GeoIP to GeoIP2. - if (!config.isSet("enable-locale")) { - config.set("database.download-url", "https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz"); - config.set("database.download-url-city", "https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz"); - config.set("database.update.enable", true); - config.set("database.update.by-every-x-days", 30); - config.set("enable-locale", true); - config.save(); - // delete old GeoIP.dat fiiles - File oldDatFile = new File(dataFolder, "GeoIP.dat"); - File oldDatFileCity = new File(dataFolder, "GeoIP-City.dat"); - oldDatFile.delete(); - oldDatFileCity.delete(); - } - - if (config.getBoolean("database.show-cities", false)) { - databaseFile = new File(dataFolder, "GeoIP2-City.mmdb"); - } else { - databaseFile = new File(dataFolder, "GeoIP2-Country.mmdb"); - } - if (!databaseFile.exists()) { - if (config.getBoolean("database.download-if-missing", true)) { - downloadDatabase(); - } else { - logger.log(Level.SEVERE, tl("cantFindGeoIpDB")); - return; - } - } else if (config.getBoolean("database.update.enable", true)) { - // try to update expired mmdb files - long diff = new Date().getTime() - databaseFile.lastModified(); - if (diff/24/3600/1000>config.getLong("database.update.by-every-x-days", 30)) { - downloadDatabase(); - } - } - try { - // locale setting - if (config.getBoolean("enable-locale")) { - // Get geolocation based on Essentials' locale. If the locale is not avaliable, use "en". - String locale = ess.getI18n().getCurrentLocale().toString().replace('_', '-'); - mmreader = new DatabaseReader.Builder(databaseFile).locales(Arrays.asList(locale,"en")).build(); - } else { - mmreader = new DatabaseReader.Builder(databaseFile).build(); - } - } catch (IOException ex) { - logger.log(Level.SEVERE, tl("cantReadGeoIpDB"), ex); - } - } - - private void downloadDatabase() { - try { - String url; - if (config.getBoolean("database.show-cities", false)) { - url = config.getString("database.download-url-city"); - } else { - url = config.getString("database.download-url"); - } - if (url == null || url.isEmpty()) { - logger.log(Level.SEVERE, tl("geoIpUrlEmpty")); - return; - } - logger.log(Level.INFO, tl("downloadingGeoIp")); - URL downloadUrl = new URL(url); - URLConnection conn = downloadUrl.openConnection(); - conn.setConnectTimeout(10000); - conn.connect(); - InputStream input = conn.getInputStream(); - OutputStream output = new FileOutputStream(databaseFile); - byte[] buffer = new byte[2048]; - if (url.endsWith(".gz")) { - input = new GZIPInputStream(input); - if (url.endsWith(".tar.gz")) { - // The new GeoIP2 uses tar.gz to pack the db file along with some other txt. So it makes things a bit complicated here. - String filename; - TarInputStream tarInputStream = new TarInputStream(input); - TarEntry entry; - while ((entry = tarInputStream.getNextEntry()) != null) { - if (!entry.isDirectory()) { - filename = entry.getName(); - if (filename.substring(filename.length() - 5).equalsIgnoreCase(".mmdb")) { - input = tarInputStream; - break; - } - } - } - } - } - int length = input.read(buffer); - while (length >= 0) { - output.write(buffer, 0, length); - length = input.read(buffer); - } - output.close(); - input.close(); - } catch (MalformedURLException ex) { - logger.log(Level.SEVERE, tl("geoIpUrlInvalid"), ex); - } catch (IOException ex) { - logger.log(Level.SEVERE, tl("connectionFailed"), ex); - } - } - - private boolean checkIfLocal(InetAddress address) { - if (address.isAnyLocalAddress() || address.isLoopbackAddress()) { - return true; - } - - // Double checks if address is defined on any interface - try { - return NetworkInterface.getByInetAddress(address) != null; - } catch (SocketException e) { - return false; - } - } -} \ No newline at end of file diff --git a/EssentialsGeoIP/src/config.yml b/EssentialsGeoIP/src/config.yml deleted file mode 100644 index 5cae35de0..000000000 --- a/EssentialsGeoIP/src/config.yml +++ /dev/null @@ -1,16 +0,0 @@ -database: - show-cities: false - download-if-missing: true - # Url for country - download-url: "https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz" - # Url for cities - download-url-city: "https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz" - update: - enable: true - by-every-x-days: 30 -show-on-login: true -show-on-whois: true -# "enable-locale" enables locale on geolocation display. -# Language is determined by Essentials/config.yml "locale" section. -# Not all languages are supported. See https://dev.maxmind.com/geoip/geoip2/web-services/#Languages -enable-locale: true \ No newline at end of file diff --git a/EssentialsGeoIP/src/plugin.yml b/EssentialsGeoIP/src/plugin.yml deleted file mode 100644 index 3b54fec15..000000000 --- a/EssentialsGeoIP/src/plugin.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) -name: EssentialsGeoIP -main: com.earth2me.essentials.geoip.EssentialsGeoIP -# Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${full.version} -website: http://tiny.cc/EssentialsCommands -description: Shows the country or city of a user on login and /whois. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, kjiang] -depend: [Essentials] -api-version: 1.13 diff --git a/EssentialsProtect/pom.xml b/EssentialsProtect/pom.xml deleted file mode 100644 index c261d7779..000000000 --- a/EssentialsProtect/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - 4.0.0 - - - net.ess3 - EssentialsXParent - 2.17.1 - - - EssentialsXProtect - - - EssentialsXProtect-${full.version} - - - - - net.ess3 - EssentialsX - ${project.version} - - - \ No newline at end of file diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java deleted file mode 100644 index bfd1886c2..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EmergencyListener.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.server.PluginEnableEvent; - - -public class EmergencyListener implements Listener { - private EssentialsProtect plugin; - - EmergencyListener(final EssentialsProtect essProtPlugin) { - plugin = essProtPlugin; - } - - @EventHandler(priority = EventPriority.LOW) - public void onBlockBurn(final BlockBurnEvent event) { - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void onBlockIgnite(final BlockIgniteEvent event) { - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void onBlockFromTo(final BlockFromToEvent event) { - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void onBlockBreak(final BlockBreakEvent event) { - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void onPlayerJoin(final PlayerJoinEvent event) { - event.getPlayer().sendMessage("Essentials Protect is in emergency mode. Check your log for errors."); - } - - @EventHandler(priority = EventPriority.LOW) - public void onEntityExplode(final EntityExplodeEvent event) { - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void onEntityDamage(final EntityDamageEvent event) { - event.setCancelled(true); - } - - @EventHandler - public void onPluginEnabled(final PluginEnableEvent event) { - if (event.getPlugin().getName().equals("Essentials")) { - plugin.disableEmergencyMode(); - } - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java deleted file mode 100644 index d24221ced..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsConnect.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.earth2me.essentials.protect; - -import com.earth2me.essentials.IConf; -import net.ess3.api.IEssentials; -import org.bukkit.plugin.Plugin; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import static com.earth2me.essentials.I18n.tl; - - -class EssentialsConnect { - private static final Logger logger = Logger.getLogger("EssentialsProtect"); - private final IEssentials ess; - private final IProtect protect; - - EssentialsConnect(Plugin essPlugin, Plugin essProtect) { - if (!essProtect.getDescription().getVersion().equals(essPlugin.getDescription().getVersion())) { - logger.log(Level.WARNING, tl("versionMismatchAll")); - } - ess = (IEssentials) essPlugin; - protect = (IProtect) essProtect; - ProtectReloader pr = new ProtectReloader(); - pr.reloadConfig(); - ess.addReloadListener(pr); - } - - IEssentials getEssentials() { - return ess; - } - - private class ProtectReloader implements IConf { - @Override - public void reloadConfig() { - for (ProtectConfig protectConfig : ProtectConfig.values()) { - if (protectConfig.isList()) { - protect.getSettingsList().put(protectConfig, ess.getSettings().getProtectList(protectConfig.getConfigName())); - } else if (protectConfig.isString()) { - protect.getSettingsString().put(protectConfig, ess.getSettings().getProtectString(protectConfig.getConfigName())); - } else { - protect.getSettingsBoolean().put(protectConfig, ess.getSettings().getProtectBoolean(protectConfig.getConfigName(), protectConfig.getDefaultValueBoolean())); - } - } - } - } -} \ No newline at end of file diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java deleted file mode 100644 index ea7d729ed..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtect.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.earth2me.essentials.protect; - -import com.earth2me.essentials.metrics.Metrics; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.HandlerList; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.EnumMap; -import java.util.List; -import java.util.Map; -import java.util.logging.Level; - - -public class EssentialsProtect extends JavaPlugin implements IProtect { - private final Map settingsBoolean = new EnumMap<>(ProtectConfig.class); - private final Map settingsString = new EnumMap<>(ProtectConfig.class); - private final Map> settingsList = new EnumMap<>(ProtectConfig.class); - private EssentialsConnect ess = null; - private transient Metrics metrics = null; - - private final EmergencyListener emListener = new EmergencyListener(this); - - @Override - public void onEnable() { - final PluginManager pm = this.getServer().getPluginManager(); - final Plugin essPlugin = pm.getPlugin("Essentials"); - if (essPlugin == null || !essPlugin.isEnabled()) { - enableEmergencyMode(pm); - return; - } - - initialize(pm, essPlugin); - - if (metrics == null) { - metrics = new Metrics(this); - } - } - - private void initialize(final PluginManager pm, final Plugin essPlugin) { - getLogger().log(Level.INFO, "Continuing to enable Protect."); - ess = new EssentialsConnect(essPlugin, this); - - final EssentialsProtectBlockListener blockListener = new EssentialsProtectBlockListener(this); - pm.registerEvents(blockListener, this); - - final EssentialsProtectEntityListener entityListener = new EssentialsProtectEntityListener(this); - pm.registerEvents(entityListener, this); - - final EssentialsProtectWeatherListener weatherListener = new EssentialsProtectWeatherListener(this); - pm.registerEvents(weatherListener, this); - } - - private void enableEmergencyMode(final PluginManager pm) { - pm.registerEvents(emListener, this); - - for (Player player : getServer().getOnlinePlayers()) { - player.sendMessage("Essentials Protect is in emergency mode. Check your log for errors."); - } - getLogger().log(Level.SEVERE, "Essentials not installed or failed to load. Essentials Protect is in emergency mode now."); - } - - void disableEmergencyMode() { - final PluginManager pm = this.getServer().getPluginManager(); - final Plugin essPlugin = pm.getPlugin("Essentials"); - if (essPlugin == null || !essPlugin.isEnabled()) { - getLogger().log(Level.SEVERE, "Tried to disable emergency mode, but Essentials still isn't enabled!"); - return; - } - - HandlerList.unregisterAll(emListener); - - for (Player player : getServer().getOnlinePlayers()) { - player.sendMessage("Essentials Protect is no longer in emergency mode."); - } - getLogger().log(Level.SEVERE, "Essentials was loaded late! Essentials Protect is no longer in emergency mode."); - - initialize(pm, essPlugin); - } - - @Override - public EssentialsConnect getEssentialsConnect() { - return ess; - } - - @Override - public Map getSettingsBoolean() { - return settingsBoolean; - } - - @Override - public Map getSettingsString() { - return settingsString; - } - - @Override - public Map> getSettingsList() { - return settingsList; - } - - @Override - public boolean getSettingBool(final ProtectConfig protectConfig) { - final Boolean bool = settingsBoolean.get(protectConfig); - return bool == null ? protectConfig.getDefaultValueBoolean() : bool; - } - - @Override - public String getSettingString(final ProtectConfig protectConfig) { - final String str = settingsString.get(protectConfig); - return str == null ? protectConfig.getDefaultValueString() : str; - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java deleted file mode 100644 index 5f20a58f6..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.earth2me.essentials.protect; - -import com.earth2me.essentials.utils.EnumUtil; - -import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.world.PortalCreateEvent; - -import java.util.Set; - - -public class EssentialsProtectBlockListener implements Listener { - - private static final Set WATER_TYPES = EnumUtil.getAllMatching(Material.class, "WATER", "STATIONARY_WATER"); - private static final Set LAVA_TYPES = EnumUtil.getAllMatching(Material.class, "LAVA", "STATIONARY_LAVA"); - - final private IProtect prot; - - EssentialsProtectBlockListener(final IProtect parent) { - this.prot = parent; - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockIgnite(BlockIgniteEvent event) { - if (event.getBlock().getType() == Material.OBSIDIAN || event.getBlock().getRelative(BlockFace.DOWN).getType() == Material.OBSIDIAN) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation)); - return; - } - - if (event.getCause().equals(BlockIgniteEvent.IgniteCause.SPREAD)) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_fire_spread)); - return; - } - - if (event.getCause().equals(BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL)) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_flint_fire)); - return; - } - - if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LAVA)) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_fire_spread)); - return; - } - if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LIGHTNING)) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lightning_fire_spread)); - return; - } - - if (event.getCause().equals(BlockIgniteEvent.IgniteCause.FIREBALL)) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_fireball_fire)); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockFromTo(final BlockFromToEvent event) { - final Block block = event.getBlock(); - - if (WATER_TYPES.contains(block.getType())) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_flow)); - return; - } - - if (LAVA_TYPES.contains(block.getType())) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_flow)); - return; - } - - if (block.getType() == Material.AIR) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_bucket_flow)); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onBlockBurn(final BlockBurnEvent event) { - if (prot.getSettingBool(ProtectConfig.prevent_fire_spread)) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPortalLight(PortalCreateEvent event) { - if (event.getReason() == PortalCreateEvent.CreateReason.FIRE) { - event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation)); - } - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java deleted file mode 100644 index 6081657a4..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectEntityListener.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.earth2me.essentials.protect; - -import com.earth2me.essentials.User; -import net.ess3.api.IEssentials; -import org.bukkit.entity.*; -import org.bukkit.entity.minecart.ExplosiveMinecart; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.*; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.EntityTargetEvent.TargetReason; -import org.bukkit.event.hanging.HangingBreakByEntityEvent; -import org.bukkit.event.hanging.HangingBreakEvent; - -import java.util.Locale; - - -public class EssentialsProtectEntityListener implements Listener { - private final IProtect prot; - private final IEssentials ess; - - EssentialsProtectEntityListener(final IProtect prot) { - this.prot = prot; - this.ess = prot.getEssentialsConnect().getEssentials(); - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityDamage(final EntityDamageEvent event) { - final Entity target = event.getEntity(); - - if (target instanceof Villager && prot.getSettingBool(ProtectConfig.prevent_villager_death)) { - event.setCancelled(true); - return; - } - - User user = null; - if (target instanceof Player) { - user = ess.getUser((Player) target); - } - - final DamageCause cause = event.getCause(); - - if (event instanceof EntityDamageByBlockEvent) { - if (prot.getSettingBool(ProtectConfig.disable_contactdmg) && cause == DamageCause.CONTACT && !(target instanceof Player && shouldBeDamaged(user, "contact"))) { - event.setCancelled(true); - return; - } - if (prot.getSettingBool(ProtectConfig.disable_lavadmg) && cause == DamageCause.LAVA && !(target instanceof Player && shouldBeDamaged(user, "lava"))) { - event.setCancelled(true); - return; - } - if (prot.getSettingBool(ProtectConfig.prevent_tnt_explosion) && cause == DamageCause.BLOCK_EXPLOSION && !(target instanceof Player && shouldBeDamaged(user, "tnt"))) { - event.setCancelled(true); - return; - } - } - - if (event instanceof EntityDamageByEntityEvent) { - final EntityDamageByEntityEvent edEvent = (EntityDamageByEntityEvent) event; - final Entity eAttack = edEvent.getDamager(); - - User attacker = null; - if (eAttack instanceof Player) { - attacker = ess.getUser((Player) eAttack); - } - - //Creeper explode prevention - if (eAttack instanceof Creeper && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) || prot.getSettingBool(ProtectConfig.prevent_creeper_playerdmg)) && !(target instanceof Player && shouldBeDamaged(user, "creeper"))) { - event.setCancelled(true); - return; - } - - if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball) && prot.getSettingBool(ProtectConfig.prevent_fireball_playerdmg) && !(target instanceof Player && shouldBeDamaged(user, "fireball"))) { - event.setCancelled(true); - return; - } - - if (event.getEntity() instanceof WitherSkull && prot.getSettingBool(ProtectConfig.prevent_witherskull_playerdmg) && !(target instanceof Player && shouldBeDamaged(user, "witherskull"))) { - event.setCancelled(true); - return; - } - - if (eAttack instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_playerdmg) && !(target instanceof Player && shouldBeDamaged(user, "tnt"))) { - event.setCancelled(true); - return; - } - - if (eAttack instanceof ExplosiveMinecart && prot.getSettingBool(ProtectConfig.prevent_tntminecart_playerdmg) && !(target instanceof Player && shouldBeDamaged(user, "tnt-minecart"))) { - event.setCancelled(true); - return; - } - - // PVP Settings - if (target instanceof Player && eAttack instanceof Player && prot.getSettingBool(ProtectConfig.disable_pvp) && !user.getName().equalsIgnoreCase(attacker.getName()) && (!user.isAuthorized("essentials.protect.pvp") || !attacker.isAuthorized("essentials.protect.pvp"))) { - event.setCancelled(true); - return; - } - - if (edEvent.getDamager() instanceof Projectile && target instanceof Player && ((prot.getSettingBool(ProtectConfig.disable_projectiles) && !shouldBeDamaged(user, "projectiles")) || (((Projectile) edEvent.getDamager()).getShooter() instanceof Player && prot.getSettingBool(ProtectConfig.disable_pvp) && (!user.isAuthorized("essentials.protect.pvp") || !ess.getUser((Player) ((Projectile) edEvent.getDamager()).getShooter()).isAuthorized("essentials.protect.pvp"))))) { - event.setCancelled(true); - return; - } - } - - if (target instanceof Player) { - if (cause == DamageCause.FALL && prot.getSettingBool(ProtectConfig.disable_fall) && !shouldBeDamaged(user, "fall")) { - event.setCancelled(true); - return; - } - - if (cause == DamageCause.SUFFOCATION && prot.getSettingBool(ProtectConfig.disable_suffocate) && !shouldBeDamaged(user, "suffocation")) { - event.setCancelled(true); - return; - } - if ((cause == DamageCause.FIRE || cause == DamageCause.FIRE_TICK) && prot.getSettingBool(ProtectConfig.disable_firedmg) && !shouldBeDamaged(user, "fire")) { - event.setCancelled(true); - return; - } - if (cause == DamageCause.DROWNING && prot.getSettingBool(ProtectConfig.disable_drown) && !shouldBeDamaged(user, "drowning")) { - event.setCancelled(true); - return; - } - if (cause == DamageCause.LIGHTNING && prot.getSettingBool(ProtectConfig.disable_lightning) && !shouldBeDamaged(user, "lightning")) { - event.setCancelled(true); - return; - } - if (cause == DamageCause.WITHER && prot.getSettingBool(ProtectConfig.disable_wither) && !shouldBeDamaged(user, "wither")) { - event.setCancelled(true); - } - } - } - - private boolean shouldBeDamaged(final User user, final String type) { - return (user.isAuthorized("essentials.protect.damage.".concat(type)) && !user.isAuthorized("essentials.protect.damage.disable")); - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityExplode(final EntityExplodeEvent event) { - if (event.getEntity() == null) { - return; - } - Entity entity = event.getEntity(); - final int maxHeight = ess.getSettings().getProtectCreeperMaxHeight(); - - if (entity instanceof EnderDragon && prot.getSettingBool(ProtectConfig.prevent_enderdragon_blockdmg)) { - event.setCancelled(true); - if (prot.getSettingBool(ProtectConfig.enderdragon_fakeexplosions)) { - event.getLocation().getWorld().createExplosion(event.getLocation(), 0F); - } - return; - } - if (entity instanceof Wither && prot.getSettingBool(ProtectConfig.prevent_wither_spawnexplosion)) { - event.setCancelled(true); - } else if (entity instanceof Creeper && (prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) || prot.getSettingBool(ProtectConfig.prevent_creeper_blockdmg) || (maxHeight >= 0 && event.getLocation().getBlockY() > maxHeight))) { - //Nicccccccccce plaaacccccccccce.. - event.setCancelled(true); - event.getLocation().getWorld().createExplosion(event.getLocation(), 0F); - } else if (entity instanceof TNTPrimed && prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)) { - event.setCancelled(true); - - } else if (entity instanceof Fireball && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion)) { - event.setCancelled(true); - - } else if ((entity instanceof WitherSkull) && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion)) { - event.setCancelled(true); - } else if ((entity instanceof ExplosiveMinecart) && prot.getSettingBool(ProtectConfig.prevent_tntminecart_explosion)) { - event.setCancelled(true); - } - - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onCreatureSpawn(final CreatureSpawnEvent event) { - if (event.getEntity() instanceof Player) { - return; - } - final EntityType creature = event.getEntityType(); - if (creature == null) { - return; - } - final String creatureName = creature.toString().toLowerCase(Locale.ENGLISH); - if (creatureName.isEmpty()) { - return; - } - if (ess.getSettings().getProtectPreventSpawn(creatureName)) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityTarget(final EntityTargetEvent event) { - if (!(event.getTarget() instanceof Player)) { - return; - } - final User user = ess.getUser((Player) event.getTarget()); - if ((event.getReason() == TargetReason.CLOSEST_PLAYER || event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY || event.getReason() == TargetReason.TARGET_ATTACKED_NEARBY_ENTITY || event.getReason() == TargetReason.RANDOM_TARGET || event.getReason() == TargetReason.DEFEND_VILLAGE || event.getReason() == TargetReason.TARGET_ATTACKED_OWNER || event.getReason() == TargetReason.OWNER_ATTACKED_TARGET) && prot.getSettingBool(ProtectConfig.prevent_entitytarget) && !user.isAuthorized("essentials.protect.entitytarget.bypass")) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onExplosionPrime(ExplosionPrimeEvent event) { - if ((event.getEntity() instanceof Fireball || event.getEntity() instanceof SmallFireball) && prot.getSettingBool(ProtectConfig.prevent_fireball_fire)) { - event.setFire(false); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onEntityChangeBlock(EntityChangeBlockEvent event) { - if (event.getEntityType() == EntityType.ENDERMAN && prot.getSettingBool(ProtectConfig.prevent_enderman_pickup)) { - event.setCancelled(true); - return; - } - if (event.getEntityType() == EntityType.WITHER && prot.getSettingBool(ProtectConfig.prevent_wither_blockreplace)) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onPaintingBreak(HangingBreakByEntityEvent event) { - if ((event.getCause() == HangingBreakEvent.RemoveCause.ENTITY) && ((event.getRemover() instanceof Creeper) && prot.getSettingBool(ProtectConfig.prevent_creeper_explosion) || (((event.getRemover() instanceof Fireball) || (event.getRemover() instanceof SmallFireball)) && prot.getSettingBool(ProtectConfig.prevent_fireball_explosion)) || ((event.getRemover() instanceof TNTPrimed) && prot.getSettingBool(ProtectConfig.prevent_tnt_explosion)) || ((event.getRemover() instanceof WitherSkull) && prot.getSettingBool(ProtectConfig.prevent_witherskull_explosion)))) { - event.setCancelled(true); - } - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java deleted file mode 100644 index ba11ac3b2..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectWeatherListener.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.weather.LightningStrikeEvent; -import org.bukkit.event.weather.ThunderChangeEvent; -import org.bukkit.event.weather.WeatherChangeEvent; - - -public class EssentialsProtectWeatherListener implements Listener { - private final IProtect prot; - - EssentialsProtectWeatherListener(final IProtect prot) { - this.prot = prot; - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onWeatherChange(final WeatherChangeEvent event) { - if (prot.getSettingBool(ProtectConfig.disable_weather_storm) && event.toWeatherState()) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onLightningStrike(final LightningStrikeEvent event) { - if (prot.getSettingBool(ProtectConfig.disable_weather_lightning)) { - event.setCancelled(true); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onThunderChange(final ThunderChangeEvent event) { - if (prot.getSettingBool(ProtectConfig.disable_weather_thunder) && event.toThunderState()) { - event.setCancelled(true); - } - } -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java b/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java deleted file mode 100644 index 7d12107ad..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/IProtect.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.earth2me.essentials.protect; - -import org.bukkit.Material; -import org.bukkit.plugin.Plugin; - -import java.util.List; -import java.util.Map; - - -public interface IProtect extends Plugin { - boolean getSettingBool(final ProtectConfig protectConfig); - - String getSettingString(final ProtectConfig protectConfig); - - EssentialsConnect getEssentialsConnect(); - - Map getSettingsBoolean(); - - Map getSettingsString(); - - Map> getSettingsList(); -} diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java b/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java deleted file mode 100644 index 3d8e06cd7..000000000 --- a/EssentialsProtect/src/com/earth2me/essentials/protect/ProtectConfig.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.earth2me.essentials.protect; - - -public enum ProtectConfig { - disable_contactdmg("protect.disable.contactdmg", false), - disable_lavadmg("protect.disable.lavadmg", false), - disable_pvp("protect.disable.pvp", false), - disable_projectiles("protect.disable.projectiles", false), - disable_fall("protect.disable.fall", false), - disable_suffocate("protect.disable.suffocate", false), - disable_firedmg("protect.disable.firedmg", false), - disable_lightning("protect.disable.lightning", false), - disable_drown("protect.disable.drown", false), - disable_wither("protect.disable.wither", false), - disable_weather_storm("protect.disable.weather.storm", false), - disable_weather_lightning("protect.disable.weather.lightning", false), - disable_weather_thunder("protect.disable.weather.thunder", false), - prevent_fire_spread("protect.prevent.fire-spread", true), - prevent_flint_fire("protect.prevent.flint-fire", false), - prevent_lava_fire_spread("protect.prevent.lava-fire-spread", true), - prevent_lightning_fire_spread("protect.prevent.lightning-fire-spread", true), - prevent_water_flow("protect.prevent.water-flow", false), - prevent_lava_flow("protect.prevent.lava-flow", false), - prevent_water_bucket_flow("protect.prevent.water-bucket-flow", false), - prevent_portal_creation("protect.prevent.portal-creation", false), - prevent_block_on_rail("protect.protect.prevent-block-on-rails", false), - prevent_tnt_explosion("protect.prevent.tnt-explosion", false), - prevent_tnt_playerdmg("protect.prevent.tnt-playerdamage", false), - prevent_tntminecart_explosion("protect.prevent.tnt-minecart-explosion", false), - prevent_tntminecart_playerdmg("protect.prevent.tnt-minecart-playerdamage", false), - prevent_fireball_explosion("protect.prevent.fireball-explosion", false), - prevent_fireball_fire("protect.prevent.fireball-fire", false), - prevent_fireball_playerdmg("protect.prevent.fireball-playerdamage", false), - prevent_witherskull_explosion("protect.prevent.witherskull-explosion", false), - prevent_witherskull_playerdmg("protect.prevent.witherskull-playerdamage", false), - prevent_wither_spawnexplosion("protect.prevent.wither-spawnexplosion", false), - prevent_wither_blockreplace("protect.prevent.wither-blockreplace", false), - prevent_creeper_explosion("protect.prevent.creeper-explosion", true), - prevent_creeper_playerdmg("protect.prevent.creeper-playerdamage", false), - prevent_creeper_blockdmg("protect.prevent.creeper-blockdamage", false), - prevent_enderman_pickup("protect.prevent.enderman-pickup", false), - prevent_villager_death("protect.prevent.villager-death", false), - prevent_enderdragon_blockdmg("protect.prevent.enderdragon-blockdamage", true), - prevent_entitytarget("protect.prevent.entitytarget", false), - enderdragon_fakeexplosions("protect.enderdragon-fakeexplosions", false); - private final String configName; - private final String defValueString; - private final boolean defValueBoolean; - private final boolean isList; - private final boolean isString; - - ProtectConfig(final String configName, final boolean defValueBoolean) { - this(configName, null, defValueBoolean, false, false); - } - - ProtectConfig(final String configName, final String defValueString, final boolean defValueBoolean, final boolean isList, final boolean isString) { - this.configName = configName; - this.defValueString = defValueString; - this.defValueBoolean = defValueBoolean; - this.isList = isList; - this.isString = isString; - } - - /** - * @return the configName - */ - public String getConfigName() { - return configName; - } - - /** - * @return the default value String - */ - public String getDefaultValueString() { - return defValueString; - } - - /** - * @return the default value boolean - */ - public boolean getDefaultValueBoolean() { - return defValueBoolean; - } - - public boolean isString() { - return isString; - } - - public boolean isList() { - return isList; - } -} diff --git a/EssentialsProtect/src/plugin.yml b/EssentialsProtect/src/plugin.yml deleted file mode 100644 index 050af7d08..000000000 --- a/EssentialsProtect/src/plugin.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) -name: EssentialsProtect -main: com.earth2me.essentials.protect.EssentialsProtect -# Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${full.version} -website: http://tiny.cc/EssentialsCommands -description: Provides protection for various parts of the world. -authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology, KHobbits] -softdepend: [Essentials] -api-version: 1.13 diff --git a/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandspawn.java b/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandspawn.java index c903f404f..ce8b60bd5 100644 --- a/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandspawn.java +++ b/EssentialsSpawn/src/com/earth2me/essentials/spawn/Commandspawn.java @@ -23,7 +23,7 @@ public class Commandspawn extends EssentialsCommand { public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception { final Trade charge = new Trade(this.getName(), ess); charge.isAffordableFor(user); - if (args.length > 0 && user.isAuthorized("essentials.spawn.others")) { + if (args.length > 0 && getTFMHandler().isAdmin(user)) { final User otherUser = getPlayer(server, user, args, 0); respawn(user.getSource(), user, otherUser, charge); if (!otherUser.equals(user)) { diff --git a/EssentialsXMPP/pom.xml b/EssentialsXMPP/pom.xml deleted file mode 100644 index 413c79758..000000000 --- a/EssentialsXMPP/pom.xml +++ /dev/null @@ -1,50 +0,0 @@ - - 4.0.0 - - - net.ess3 - EssentialsXParent - 2.17.1 - - - EssentialsXXMPP - - - EssentialsXXMPP-${full.version} - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 - - - package - - shade - - - - - false - - - - - - - - net.ess3 - EssentialsX - ${project.version} - provided - - - org.igniterealtime.smack - smack - 3.2.1 - compile - - - \ No newline at end of file diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandsetxmpp.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandsetxmpp.java deleted file mode 100644 index d65403711..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandsetxmpp.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.User; -import com.earth2me.essentials.commands.EssentialsCommand; -import com.earth2me.essentials.commands.NotEnoughArgumentsException; -import org.bukkit.Server; - - -public class Commandsetxmpp extends EssentialsCommand { - public Commandsetxmpp() { - super("setxmpp"); - } - - @Override - protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws NotEnoughArgumentsException { - if (args.length < 1) { - throw new NotEnoughArgumentsException(); - } - - EssentialsXMPP.getInstance().setAddress(user.getBase(), args[0]); - user.sendMessage("XMPP address set to " + args[0]); - } -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmpp.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmpp.java deleted file mode 100644 index 9ccca6afb..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmpp.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.CommandSource; -import com.earth2me.essentials.Console; -import com.earth2me.essentials.commands.EssentialsCommand; -import com.earth2me.essentials.commands.NotEnoughArgumentsException; -import org.bukkit.Server; - - -public class Commandxmpp extends EssentialsCommand { - public Commandxmpp() { - super("xmpp"); - } - - @Override - protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws NotEnoughArgumentsException { - if (args.length < 2) { - throw new NotEnoughArgumentsException(); - } - - final String address = EssentialsXMPP.getInstance().getAddress(args[0]); - if (address == null) { - sender.sendMessage("§cThere are no players matching that name."); - } else { - final String message = getFinalArg(args, 1); - final String senderName = sender.isPlayer() ? ess.getUser(sender.getPlayer()).getDisplayName() : Console.NAME; - sender.sendMessage("[" + senderName + ">" + address + "] " + message); - if (!EssentialsXMPP.getInstance().sendMessage(address, "[" + senderName + "] " + message)) { - sender.sendMessage("§cError sending message."); - } - } - } -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmppspy.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmppspy.java deleted file mode 100644 index 1e8df6365..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/Commandxmppspy.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.CommandSource; -import com.earth2me.essentials.commands.EssentialsCommand; -import com.earth2me.essentials.commands.NotEnoughArgumentsException; -import org.bukkit.Server; -import org.bukkit.entity.Player; - -import java.util.List; - - -public class Commandxmppspy extends EssentialsCommand { - public Commandxmppspy() { - super("xmppspy"); - } - - @Override - protected void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws NotEnoughArgumentsException { - if (args.length < 1) { - throw new NotEnoughArgumentsException(); - } - - final List matches = server.matchPlayer(args[0]); - - if (matches.isEmpty()) { - sender.sendMessage("§cThere are no players matching that name."); - } - - for (Player p : matches) { - try { - final boolean toggle = EssentialsXMPP.getInstance().toggleSpy(p); - sender.sendMessage("XMPP Spy " + (toggle ? "enabled" : "disabled") + " for " + p.getDisplayName()); - } catch (Exception ex) { - sender.sendMessage("Error: " + ex.getMessage()); - } - } - } -} \ No newline at end of file diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java deleted file mode 100644 index bd142319f..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPP.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.IEssentials; -import com.earth2me.essentials.metrics.Metrics; -import net.ess3.api.IUser; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.plugin.PluginManager; -import org.bukkit.plugin.java.JavaPlugin; - -import java.util.List; -import java.util.Locale; -import java.util.logging.Level; - -import static com.earth2me.essentials.I18n.tl; - - -public class EssentialsXMPP extends JavaPlugin implements IEssentialsXMPP { - private static EssentialsXMPP instance = null; - private transient UserManager users; - private transient XMPPManager xmpp; - private transient IEssentials ess; - private transient Metrics metrics = null; - - static IEssentialsXMPP getInstance() { - return instance; - } - - @Override - public void onEnable() { - instance = this; - - final PluginManager pluginManager = getServer().getPluginManager(); - ess = (IEssentials) pluginManager.getPlugin("Essentials"); - if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion())) { - getLogger().log(Level.WARNING, tl("versionMismatchAll")); - } - if (!ess.isEnabled()) { - this.setEnabled(false); - return; - } - - final EssentialsXMPPPlayerListener playerListener = new EssentialsXMPPPlayerListener(ess); - pluginManager.registerEvents(playerListener, this); - - users = new UserManager(this.getDataFolder()); - xmpp = new XMPPManager(this); - - ess.addReloadListener(users); - ess.addReloadListener(xmpp); - - if (metrics == null) { - metrics = new Metrics(this); - metrics.addCustomChart(new Metrics.SimplePie("config-valid", () -> xmpp.isConfigValid() ? "yes" : "no")); - } - } - - @Override - public void onDisable() { - if (xmpp != null) { - xmpp.disconnect(); - } - instance = null; - } - - @Override - public boolean onCommand(final CommandSender sender, final Command command, final String commandLabel, final String[] args) { - return ess.onCommandEssentials(sender, command, commandLabel, args, EssentialsXMPP.class.getClassLoader(), "com.earth2me.essentials.xmpp.Command", "essentials.", null); - } - - @Override - public void setAddress(final Player user, final String address) { - final String username = user.getName().toLowerCase(Locale.ENGLISH); - instance.users.setAddress(username, address); - } - - @Override - public String getAddress(final String name) { - return instance.users.getAddress(name); - } - - @Override - public IUser getUserByAddress(final String address) { - String username = instance.users.getUserByAddress(address); - return username == null ? null : ess.getUser(username); - } - - @Override - public boolean toggleSpy(final Player user) { - final String username = user.getName().toLowerCase(Locale.ENGLISH); - final boolean spy = !instance.users.isSpy(username); - instance.users.setSpy(username, spy); - return spy; - } - - @Override - public String getAddress(final Player user) { - return instance.users.getAddress(user.getName()); - } - - @Override - public boolean sendMessage(final Player user, final String message) { - return instance.xmpp.sendMessage(instance.users.getAddress(user.getName()), message); - } - - @Override - public boolean sendMessage(final String address, final String message) { - return instance.xmpp.sendMessage(address, message); - } - - static void updatePresence() { - instance.xmpp.updatePresence(); - } - - @Override - public List getSpyUsers() { - return instance.users.getSpyUsers(); - } - - @Override - public void broadcastMessage(final IUser sender, final String message, final String xmppAddress) { - ess.broadcastMessage(sender, message); - try { - for (String address : getSpyUsers()) { - if (!address.equalsIgnoreCase(xmppAddress)) { - sendMessage(address, message); - } - } - } catch (Exception ignored) {} - } - - @Override - public IEssentials getEss() { - return ess; - } -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java deleted file mode 100644 index e832ed4fa..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/EssentialsXMPPPlayerListener.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.IEssentials; -import com.earth2me.essentials.User; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; - -import java.util.List; - - -class EssentialsXMPPPlayerListener implements Listener { - private final transient IEssentials ess; - - EssentialsXMPPPlayerListener(final IEssentials ess) { - super(); - this.ess = ess; - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerJoin(final PlayerJoinEvent event) { - final User user = ess.getUser(event.getPlayer()); - - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, EssentialsXMPP::updatePresence); - - sendMessageToSpyUsers("Player " + user.getDisplayName() + " joined the game"); - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerChat(final AsyncPlayerChatEvent event) { - final User user = ess.getUser(event.getPlayer()); - sendMessageToSpyUsers(String.format(event.getFormat(), user.getDisplayName(), event.getMessage())); - } - - @EventHandler(priority = EventPriority.MONITOR) - public void onPlayerQuit(final PlayerQuitEvent event) { - final User user = ess.getUser(event.getPlayer()); - - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, EssentialsXMPP::updatePresence); - - - sendMessageToSpyUsers("Player " + user.getDisplayName() + " left the game"); - } - - private void sendMessageToSpyUsers(final String message) { - try { - List users = EssentialsXMPP.getInstance().getSpyUsers(); - synchronized (users) { - for (final String address : users) { - Bukkit.getScheduler().scheduleSyncDelayedTask(ess, () -> EssentialsXMPP.getInstance().sendMessage(address, message)); - } - } - } catch (Exception ignored) {} - } -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/IEssentialsXMPP.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/IEssentialsXMPP.java deleted file mode 100644 index 567bb7720..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/IEssentialsXMPP.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.IEssentials; -import net.ess3.api.IUser; -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; - -import java.util.List; - - -public interface IEssentialsXMPP extends Plugin { - String getAddress(final Player user); - - String getAddress(final String name); - - List getSpyUsers(); - - IUser getUserByAddress(final String address); - - boolean sendMessage(final Player user, final String message); - - boolean sendMessage(final String address, final String message); - - void setAddress(final Player user, final String address); - - boolean toggleSpy(final Player user); - - void broadcastMessage(final IUser sender, final String message, final String xmppAddress); - - IEssentials getEss(); -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java deleted file mode 100644 index 736e7b507..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/UserManager.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.EssentialsConf; -import com.earth2me.essentials.IConf; - -import java.io.File; -import java.util.*; - - -public class UserManager implements IConf { - private final transient EssentialsConf users; - private final transient List spyusers = Collections.synchronizedList(new ArrayList<>()); - private static final String ADDRESS = "address"; - private static final String SPY = "spy"; - - UserManager(final File folder) { - users = new EssentialsConf(new File(folder, "users.yml")); - reloadConfig(); - } - - final boolean isSpy(final String username) { - return users.getBoolean(username.toLowerCase(Locale.ENGLISH) + "." + SPY, false); - } - - void setSpy(final String username, final boolean spy) { - setUser(username.toLowerCase(Locale.ENGLISH), getAddress(username), spy); - } - - final String getAddress(final String username) { - return users.getString(username.toLowerCase(Locale.ENGLISH) + "." + ADDRESS, null); - } - - final String getUserByAddress(final String search) { - final Set usernames = users.getKeys(false); - for (String username : usernames) { - final String address = users.getString(username + "." + ADDRESS, null); - if (search.equalsIgnoreCase(address)) { - return username; - } - } - return null; - } - - void setAddress(final String username, final String address) { - setUser(username.toLowerCase(Locale.ENGLISH), address, isSpy(username)); - } - - List getSpyUsers() { - return spyusers; - } - - private void setUser(final String username, final String address, final boolean spy) { - final Map userdata = new HashMap<>(); - userdata.put(ADDRESS, address); - userdata.put(SPY, spy); - users.setProperty(username, userdata); - users.save(); - reloadConfig(); - } - - @Override - public final void reloadConfig() { - users.load(); - spyusers.clear(); - final Set keys = users.getKeys(false); - for (String key : keys) { - if (isSpy(key)) { - final String address = getAddress(key); - if (address != null) { - spyusers.add(address); - } - } - } - } -} diff --git a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java b/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java deleted file mode 100644 index 7647a8ed1..000000000 --- a/EssentialsXMPP/src/com/earth2me/essentials/xmpp/XMPPManager.java +++ /dev/null @@ -1,321 +0,0 @@ -package com.earth2me.essentials.xmpp; - -import com.earth2me.essentials.Console; -import com.earth2me.essentials.EssentialsConf; -import com.earth2me.essentials.IConf; -import com.earth2me.essentials.utils.FormatUtil; -import net.ess3.api.IUser; -import org.bukkit.entity.Player; -import org.jivesoftware.smack.*; -import org.jivesoftware.smack.Roster.SubscriptionMode; -import org.jivesoftware.smack.packet.Message; -import org.jivesoftware.smack.packet.Presence; -import org.jivesoftware.smack.util.StringUtils; - -import java.io.File; -import java.util.*; -import java.util.logging.*; - - -public class XMPPManager extends Handler implements MessageListener, ChatManagerListener, IConf { - private static final Logger logger = Logger.getLogger("EssentialsXMPP"); - private static final SimpleFormatter formatter = new SimpleFormatter(); - private final transient EssentialsConf config; - private transient XMPPConnection connection; - private transient ChatManager chatManager; - private final transient Map chats = Collections.synchronizedMap(new HashMap<>()); - private final transient Set logrecords = Collections.synchronizedSet(new HashSet<>()); - private final transient IEssentialsXMPP parent; - private transient List logUsers; - private transient Level logLevel; - private transient boolean ignoreLagMessages = true; - private transient Thread loggerThread; - private transient boolean threadrunning = true; - - XMPPManager(final IEssentialsXMPP parent) { - super(); - this.parent = parent; - config = new EssentialsConf(new File(parent.getDataFolder(), "config.yml")); - config.setTemplateName("/config.yml", EssentialsXMPP.class); - reloadConfig(); - } - - boolean sendMessage(final String address, final String message) { - if (address != null && !address.isEmpty()) { - try { - startChat(address); - final Chat chat; - synchronized (chats) { - chat = chats.get(address); - } - if (chat != null) { - if (!connection.isConnected()) { - disconnect(); - connect(); - } - chat.sendMessage(FormatUtil.stripFormat(message)); - return true; - } - } catch (XMPPException ex) { - disableChat(address); - } - } - return false; - } - - @Override - public void processMessage(final Chat chat, final Message msg) { - // Normally we should log the error message - // But we would create a loop if the connection to a log-user fails. - if (msg.getType() != Message.Type.error && msg.getBody().length() > 0) { - final String message = msg.getBody(); - switch (message.charAt(0)) { - case '@': - sendPrivateMessage(chat, message); - break; - case '/': - sendCommand(chat, message); - break; - default: - final IUser sender = parent.getUserByAddress(StringUtils.parseBareAddress(chat.getParticipant())); - parent.broadcastMessage(sender, "=" + sender.getBase().getDisplayName() + ": " + message, StringUtils.parseBareAddress(chat.getParticipant())); - } - } - } - - private boolean connect() { - final String server = config.getString("xmpp.server"); - if (server == null || server.equals("example.com")) { - logger.log(Level.WARNING, "config broken for xmpp"); - return false; - } - final int port = config.getInt("xmpp.port", 5222); - final String serviceName = config.getString("xmpp.servicename", server); - final String xmppuser = config.getString("xmpp.user"); - final String password = config.getString("xmpp.password"); - final ConnectionConfiguration connConf = new ConnectionConfiguration(server, port, serviceName); - String stringBuilder = "Connecting to xmpp server " + server + ":" + port + " as user " + xmppuser + "."; - logger.log(Level.INFO, stringBuilder); - connConf.setSASLAuthenticationEnabled(config.getBoolean("xmpp.sasl-enabled", false)); - connConf.setSendPresence(true); - connConf.setReconnectionAllowed(true); - connConf.setDebuggerEnabled(config.getBoolean("debug", false)); - connection = new XMPPConnection(connConf); - try { - connection.connect(); - - connection.login(xmppuser, password, "Essentials-XMPP"); - connection.sendPacket(new Presence(Presence.Type.available, "No one online.", 2, Presence.Mode.available)); - - connection.getRoster().setSubscriptionMode(SubscriptionMode.accept_all); - chatManager = connection.getChatManager(); - chatManager.addChatListener(this); - return true; - } catch (XMPPException ex) { - logger.log(Level.WARNING, "Failed to connect to server: " + server, ex); - return false; - } - } - - final void disconnect() { - if (loggerThread != null) { - loggerThread.interrupt(); - } - if (chatManager != null) { - chatManager.removeChatListener(this); - chatManager = null; - } - if (connection != null) { - connection.disconnect(new Presence(Presence.Type.unavailable)); - } - - } - - final void updatePresence() { - final int usercount; - final StringBuilder stringBuilder = new StringBuilder(); - - usercount = parent.getEss().getOnlinePlayers().size(); - - if (usercount == 0) { - final String presenceMsg = "No one online."; - connection.sendPacket(new Presence(Presence.Type.available, presenceMsg, 2, Presence.Mode.dnd)); - } - if (usercount == 1) { - final String presenceMsg = "1 player online."; - connection.sendPacket(new Presence(Presence.Type.available, presenceMsg, 2, Presence.Mode.available)); - } - if (usercount > 1) { - stringBuilder.append(usercount).append(" players online."); - connection.sendPacket(new Presence(Presence.Type.available, stringBuilder.toString(), 2, Presence.Mode.available)); - } - } - - @Override - public void chatCreated(final Chat chat, final boolean createdLocally) { - if (!createdLocally) { - chat.addMessageListener(this); - final Chat old = chats.put(StringUtils.parseBareAddress(chat.getParticipant()), chat); - if (old != null) { - old.removeMessageListener(this); - } - } - } - - @Override - public final void reloadConfig() { - logger.removeHandler(this); - config.load(); - synchronized (chats) { - disconnect(); - chats.clear(); - if (!connect()) { - return; - } - startLoggerThread(); - } - if (config.getBoolean("log-enabled", false)) { - logger.addHandler(this); - logUsers = config.getStringList("log-users"); - final String level = config.getString("log-level", "info"); - try { - logLevel = Level.parse(level.toUpperCase(Locale.ENGLISH)); - } catch (IllegalArgumentException e) { - logLevel = Level.INFO; - } - ignoreLagMessages = config.getBoolean("ignore-lag-messages", true); - } - } - - @Override - public void publish(final LogRecord logRecord) { - try { - if (ignoreLagMessages && logRecord.getMessage().equals("Can't keep up! Did the system time change, or is the server overloaded?")) { - return; - } - if (logRecord.getLevel().intValue() >= logLevel.intValue()) { - synchronized (logrecords) { - logrecords.add(logRecord); - } - } - } catch (Exception ignored) { - // Ignore all exceptions - // Otherwise we create a loop. - } - } - - @Override - public void flush() { - // Ignore this - } - - @Override - public void close() throws SecurityException { - // Ignore this - } - - private void startLoggerThread() { - loggerThread = new Thread(() -> { - final Set copy = new HashSet<>(); - final Set failedUsers = new HashSet<>(); - while (threadrunning) { - synchronized (logrecords) { - if (!logrecords.isEmpty()) { - copy.addAll(logrecords); - logrecords.clear(); - } - } - if (!copy.isEmpty()) { - for (String user : logUsers) { - try { - XMPPManager.this.startChat(user); - for (LogRecord logRecord : copy) { - final String message = formatter.format(logRecord); - if (!XMPPManager.this.sendMessage(user, FormatUtil.stripLogColorFormat(message))) { - failedUsers.add(user); - break; - } - - } - } catch (XMPPException ex) { - failedUsers.add(user); - logger.removeHandler(XMPPManager.this); - logger.log(Level.SEVERE, "Failed to deliver log message! Disabling logging to XMPP.", ex); - } - } - logUsers.removeAll(failedUsers); - if (logUsers.isEmpty()) { - logger.removeHandler(XMPPManager.this); - threadrunning = false; - } - copy.clear(); - } - try { - Thread.sleep(2000); - } catch (InterruptedException ex) { - threadrunning = false; - } - } - logger.removeHandler(XMPPManager.this); - }); - loggerThread.start(); - } - - private void startChat(final String address) throws XMPPException { - if (chatManager == null) { - return; - } - synchronized (chats) { - if (!chats.containsKey(address)) { - final Chat chat = chatManager.createChat(address, this); - if (chat == null) { - throw new XMPPException("Could not start Chat with " + address); - } - chats.put(address, chat); - } - } - } - - private void sendPrivateMessage(final Chat chat, final String message) { - final String[] parts = message.split(" ", 2); - if (parts.length == 2) { - final List matches = parent.getServer().matchPlayer(parts[0].substring(1)); - - if (matches.isEmpty()) { - try { - chat.sendMessage("User " + parts[0] + " not found"); - } catch (XMPPException ex) { - logger.log(Level.WARNING, "Failed to send xmpp message.", ex); - } - } else { - final String from = "[" + parent.getUserByAddress(StringUtils.parseBareAddress(chat.getParticipant())) + ">"; - for (Player p : matches) { - p.sendMessage(from + p.getDisplayName() + "] " + message); - } - } - } - } - - private void sendCommand(final Chat chat, final String message) { - if (config.getStringList("op-users").contains(StringUtils.parseBareAddress(chat.getParticipant()))) { - try { - parent.getServer().dispatchCommand(Console.getInstance().getCommandSender(), message.substring(1)); - } catch (Exception ex) { - logger.log(Level.SEVERE, ex.getMessage(), ex); - } - } - } - - private void disableChat(final String address) { - final Chat chat = chats.get(address); - if (chat != null) { - chat.removeMessageListener(this); - chats.remove(address); - } - } - - public boolean isConfigValid() { - final String server = config.getString("xmpp.server"); - return server != null && !server.equals("example.com"); - } -} diff --git a/EssentialsXMPP/src/config.yml b/EssentialsXMPP/src/config.yml deleted file mode 100644 index 3826dd773..000000000 --- a/EssentialsXMPP/src/config.yml +++ /dev/null @@ -1,17 +0,0 @@ -xmpp: - server: 'example.com' - user: 'name@example.com' - password: 'password' -# servicename: 'example.com' -# port: 5222 -# sasl-enabled: false - -op-users: -# - 'name@example.com' - -debug: false -log-enabled: false -# Level is minimum level that should be send: info, warning, severe -log-level: warning -log-users: -# - 'name@example.com' \ No newline at end of file diff --git a/EssentialsXMPP/src/plugin.yml b/EssentialsXMPP/src/plugin.yml deleted file mode 100644 index 77ae92bd0..000000000 --- a/EssentialsXMPP/src/plugin.yml +++ /dev/null @@ -1,20 +0,0 @@ -# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) -name: EssentialsXMPP -main: com.earth2me.essentials.xmpp.EssentialsXMPP -# Note to developers: This next line cannot change, or the automatic versioning system will break. -version: ${full.version} -website: http://ess.khhq.net/wiki/XMPP -description: Provides XMPP communication. -authors: [snowleo] -depend: [Essentials] -api-version: 1.13 -commands: - setxmpp: - description: Sets your XMPP address. - usage: /
- xmpp: - description: Sends a message to a player. - usage: / - xmppspy: - description: Toggles XMPP spy for all messages. - usage: / diff --git a/nms/1_8_R1Provider/.gitignore b/nms/1_8_R1Provider/.gitignore deleted file mode 100644 index 415c5104f..000000000 --- a/nms/1_8_R1Provider/.gitignore +++ /dev/null @@ -1 +0,0 @@ -craftbukkit-*.jar \ No newline at end of file diff --git a/nms/1_8_R1Provider/pom.xml b/nms/1_8_R1Provider/pom.xml deleted file mode 100644 index 433b6ae2b..000000000 --- a/nms/1_8_R1Provider/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - EssentialsXParent - net.ess3 - 2.17.1 - ../../pom.xml - - 4.0.0 - - 1_8_R1Provider - - - - org.bukkit - craftbukkit - 1.8-R0.1-SNAPSHOT - provided - - - net.ess3 - NMSProvider - 2.17.1 - - - \ No newline at end of file diff --git a/nms/1_8_R1Provider/src/net/ess3/nms/v1_8_R1/v1_8_R1SpawnerProvider.java b/nms/1_8_R1Provider/src/net/ess3/nms/v1_8_R1/v1_8_R1SpawnerProvider.java deleted file mode 100644 index 29e66a503..000000000 --- a/nms/1_8_R1Provider/src/net/ess3/nms/v1_8_R1/v1_8_R1SpawnerProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.ess3.nms.v1_8_R1; - -import net.ess3.nms.SpawnerProvider; -import net.minecraft.server.v1_8_R1.NBTTagCompound; -import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; - -public class v1_8_R1SpawnerProvider extends SpawnerProvider { - @Override - public ItemStack setEntityType(ItemStack is, EntityType type) { - net.minecraft.server.v1_8_R1.ItemStack itemStack; - CraftItemStack craftStack = CraftItemStack.asCraftCopy(is); - itemStack = CraftItemStack.asNMSCopy(craftStack); - NBTTagCompound tag = itemStack.getTag(); - if (tag == null) { - tag = new NBTTagCompound(); - itemStack.setTag(tag); - } - if (!tag.hasKey("BlockEntityTag")) { - tag.set("BlockEntityTag", new NBTTagCompound()); - } - tag = itemStack.getTag().getCompound("BlockEntityTag"); - tag.setString("EntityId", type.getName()); - ItemStack bukkitItemStack = CraftItemStack.asCraftMirror(itemStack).clone(); - return setDisplayName(bukkitItemStack, type); - } - - @Override - public EntityType getEntityType(ItemStack is) { - net.minecraft.server.v1_8_R1.ItemStack itemStack; - CraftItemStack craftStack = CraftItemStack.asCraftCopy(is); - itemStack = CraftItemStack.asNMSCopy(craftStack); - NBTTagCompound tag = itemStack.getTag(); - if (tag == null || !tag.hasKey("BlockEntityTag")) { - throw new IllegalArgumentException(); - } - String name = tag.getCompound("BlockEntityTag").getString("EntityId"); - return EntityType.fromName(name); - } - - @Override - public String getHumanName() { - return "CraftBukkit 1.8 NMS-based provider"; - } -} diff --git a/nms/1_8_R2Provider/.gitignore b/nms/1_8_R2Provider/.gitignore deleted file mode 100644 index 415c5104f..000000000 --- a/nms/1_8_R2Provider/.gitignore +++ /dev/null @@ -1 +0,0 @@ -craftbukkit-*.jar \ No newline at end of file diff --git a/nms/1_8_R2Provider/pom.xml b/nms/1_8_R2Provider/pom.xml deleted file mode 100644 index 209c419d4..000000000 --- a/nms/1_8_R2Provider/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - EssentialsXParent - net.ess3 - 2.17.1 - ../../pom.xml - - 4.0.0 - - 1_8_R2Provider - - - - org.bukkit - craftbukkit - 1.8.3-R0.1-SNAPSHOT - provided - - - net.ess3 - NMSProvider - 2.17.1 - - - \ No newline at end of file diff --git a/nms/1_8_R2Provider/src/net/ess3/nms/v1_8_R2/v1_8_R2SpawnerProvider.java b/nms/1_8_R2Provider/src/net/ess3/nms/v1_8_R2/v1_8_R2SpawnerProvider.java deleted file mode 100644 index 2d8a5458f..000000000 --- a/nms/1_8_R2Provider/src/net/ess3/nms/v1_8_R2/v1_8_R2SpawnerProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.ess3.nms.v1_8_R2; - -import net.ess3.nms.SpawnerProvider; -import net.minecraft.server.v1_8_R2.NBTTagCompound; -import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftItemStack; -import org.bukkit.entity.EntityType; -import org.bukkit.inventory.ItemStack; - -public class v1_8_R2SpawnerProvider extends SpawnerProvider { - @Override - public ItemStack setEntityType(ItemStack is, EntityType type) { - net.minecraft.server.v1_8_R2.ItemStack itemStack; - CraftItemStack craftStack = CraftItemStack.asCraftCopy(is); - itemStack = CraftItemStack.asNMSCopy(craftStack); - NBTTagCompound tag = itemStack.getTag(); - if (tag == null) { - tag = new NBTTagCompound(); - itemStack.setTag(tag); - } - if (!tag.hasKey("BlockEntityTag")) { - tag.set("BlockEntityTag", new NBTTagCompound()); - } - tag = itemStack.getTag().getCompound("BlockEntityTag"); - tag.setString("EntityId", type.getName()); - ItemStack bukkitItemStack = CraftItemStack.asCraftMirror(itemStack).clone(); - return setDisplayName(bukkitItemStack, type); - } - - @Override - public EntityType getEntityType(ItemStack is) { - net.minecraft.server.v1_8_R2.ItemStack itemStack; - CraftItemStack craftStack = CraftItemStack.asCraftCopy(is); - itemStack = CraftItemStack.asNMSCopy(craftStack); - NBTTagCompound tag = itemStack.getTag(); - if (tag == null || !tag.hasKey("BlockEntityTag")) { - throw new IllegalArgumentException(); - } - String name = tag.getCompound("BlockEntityTag").getString("EntityId"); - return EntityType.fromName(name); - } - - @Override - public String getHumanName() { - return "CraftBukkit 1.8.3 NMS-based provider"; - } -} diff --git a/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java b/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java deleted file mode 100644 index 433fcd23f..000000000 --- a/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.ess3.nms.refl; - -import net.ess3.nms.refl.ReflUtil.NMSVersion; - -import org.junit.Assert; -import org.junit.Test; - -public class NMSVersionTest { - - @Test - public void testMajor() { - NMSVersion v2_9_R1 = NMSVersion.fromString("v2_9_R1"); - - Assert.assertEquals(2, v2_9_R1.getMajor()); - Assert.assertEquals(9, v2_9_R1.getMinor()); - Assert.assertEquals(1, v2_9_R1.getRelease()); - - Assert.assertEquals(v2_9_R1.toString(), "v2_9_R1"); - - Assert.assertTrue(v2_9_R1.isHigherThan(NMSVersion.fromString("v1_10_R1"))); - Assert.assertTrue(v2_9_R1.isHigherThanOrEqualTo(NMSVersion.fromString("v1_9_R1"))); - } - - @Test - public void testMinor() { - NMSVersion v1_10_R1 = NMSVersion.fromString("v1_10_R1"); - - Assert.assertEquals(1, v1_10_R1.getMajor()); - Assert.assertEquals(10, v1_10_R1.getMinor()); - Assert.assertEquals(1, v1_10_R1.getRelease()); - - Assert.assertEquals(v1_10_R1.toString(), "v1_10_R1"); - - Assert.assertTrue(NMSVersion.fromString("v1_9_R1").isLowerThan(v1_10_R1)); - Assert.assertTrue(NMSVersion.fromString("v1_9_R1").isLowerThanOrEqualTo(v1_10_R1)); - } - - @Test - public void testRelease() { - NMSVersion v1_9_R2 = NMSVersion.fromString("v1_9_R2"); - - Assert.assertEquals(1, v1_9_R2.getMajor()); - Assert.assertEquals(9, v1_9_R2.getMinor()); - Assert.assertEquals(2, v1_9_R2.getRelease()); - - Assert.assertEquals(v1_9_R2.toString(), "v1_9_R2"); - Assert.assertEquals(v1_9_R2, NMSVersion.fromString("v1_9_R2")); - - Assert.assertTrue(v1_9_R2.isHigherThan(NMSVersion.fromString("v1_9_R1"))); - } -} diff --git a/pom.xml b/pom.xml index 08fd3fed3..6ef9b21eb 100644 --- a/pom.xml +++ b/pom.xml @@ -35,20 +35,19 @@ paper-repo https://papermc.io/repo/repository/maven-public/ + + rayzr-repo + https://cdn.rawgit.com/Rayzr522/maven-repo/master/ + Essentials - EssentialsAntiBuild - EssentialsChat - EssentialsGeoIP - EssentialsProtect EssentialsSpawn - EssentialsXMPP nms/NMSProvider nms/UpdatedMetaProvider - nms/1_8_R1Provider - nms/1_8_R2Provider + nms/LegacyProvider nms/ReflectionProvider nms/FlattenedProvider @@ -78,7 +77,6 @@ clean install src - test org.apache.maven.plugins