diff --git a/.gitignore b/.gitignore index 9035e9eae..fd2e7e598 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ /EssentialsXMPP/dist/ /EssentialsXMPP/build/ /EssentialsProtect/dist/ -/EssentialsProtect/build/ \ No newline at end of file +/EssentialsProtect/build/ +/EssentialsPermissionsCommands/nbproject/private/ \ No newline at end of file diff --git a/BuildAll/nbproject/build-impl.xml b/BuildAll/nbproject/build-impl.xml index 61cea7f34..576a464dd 100644 --- a/BuildAll/nbproject/build-impl.xml +++ b/BuildAll/nbproject/build-impl.xml @@ -624,15 +624,8 @@ is divided into following sections: - - - - - - - - - + + @@ -1116,15 +1109,8 @@ is divided into following sections: - - - - - - - - - + + diff --git a/BuildAll/nbproject/genfiles.properties b/BuildAll/nbproject/genfiles.properties index 5bff626f0..c5989c1d3 100644 --- a/BuildAll/nbproject/genfiles.properties +++ b/BuildAll/nbproject/genfiles.properties @@ -1,8 +1,8 @@ -build.xml.data.CRC32=51b33957 +build.xml.data.CRC32=2eb9432b build.xml.script.CRC32=7a797370 build.xml.stylesheet.CRC32=28e38971@1.43.1.45 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=51b33957 -nbproject/build-impl.xml.script.CRC32=7a6cee4f +nbproject/build-impl.xml.data.CRC32=2eb9432b +nbproject/build-impl.xml.script.CRC32=f6f34008 nbproject/build-impl.xml.stylesheet.CRC32=0c01fd8e@1.43.1.45 diff --git a/BuildAll/nbproject/project.properties b/BuildAll/nbproject/project.properties index d0076cd5f..ec2dbb574 100644 --- a/BuildAll/nbproject/project.properties +++ b/BuildAll/nbproject/project.properties @@ -31,9 +31,8 @@ jar.compress=false javac.classpath=\ ${reference.Essentials.jar}:\ ${reference.EssentialsChat.jar}:\ - ${reference.EssentialsGroupBridge.jar}:\ - ${reference.EssentialsGroupManager.jar}:\ ${reference.EssentialsProtect.jar}:\ + ${reference.EssentialsPermissionsCommands.jar}:\ ${reference.EssentialsSpawn.jar}:\ ${reference.EssentialsGeoIP.jar}:\ ${reference.EssentialsXMPP.jar} @@ -68,16 +67,14 @@ platform.active=default_platform project.Essentials=../Essentials project.EssentialsChat=../EssentialsChat project.EssentialsGeoIP=../EssentialsGeoIP -project.EssentialsGroupBridge=../EssentialsGroupBridge -project.EssentialsGroupManager=../EssentialsGroupManager +project.EssentialsPermissionsCommands=../EssentialsPermissionsCommands project.EssentialsProtect=../EssentialsProtect project.EssentialsSpawn=../EssentialsSpawn project.EssentialsXMPP=../EssentialsXMPP reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar reference.EssentialsChat.jar=${project.EssentialsChat}/dist/EssentialsChat.jar reference.EssentialsGeoIP.jar=${project.EssentialsGeoIP}/dist/EssentialsGeoIP.jar -reference.EssentialsGroupBridge.jar=${project.EssentialsGroupBridge}/dist/EssentialsGroupBridge.jar -reference.EssentialsGroupManager.jar=${project.EssentialsGroupManager}/dist/EssentialsGroupManager.jar +reference.EssentialsPermissionsCommands.jar=${project.EssentialsPermissionsCommands}/dist/EssentialsPermissionsCommands.jar reference.EssentialsProtect.jar=${project.EssentialsProtect}/dist/EssentialsProtect.jar reference.EssentialsSpawn.jar=${project.EssentialsSpawn}/dist/EssentialsSpawn.jar reference.EssentialsXMPP.jar=${project.EssentialsXMPP}/dist/original-EssentialsXMPP.jar diff --git a/BuildAll/nbproject/project.xml b/BuildAll/nbproject/project.xml index 420233ac9..16460d7fc 100644 --- a/BuildAll/nbproject/project.xml +++ b/BuildAll/nbproject/project.xml @@ -40,15 +40,7 @@ jar - EssentialsGroupBridge - jar - - jar - clean - jar - - - EssentialsGroupManager + EssentialsPermissionsCommands jar jar diff --git a/Essentials/nbproject/project.properties b/Essentials/nbproject/project.properties index 0f92879ab..850d0d4d8 100644 --- a/Essentials/nbproject/project.properties +++ b/Essentials/nbproject/project.properties @@ -31,11 +31,11 @@ file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=..\\lib\\craftbukkit-0.0.1-SNAPSHO file.reference.iCo4.jar=../lib/iCo4.jar file.reference.iCo5.jar=../lib/iCo5.jar file.reference.junit-4.5.jar=..\\lib\\junit_4\\junit-4.5.jar -file.reference.Permissions.jar=..\\lib\\Permissions.jar +file.reference.Permissions3.jar=../lib/Permissions3.jar includes=** jar.compress=false javac.classpath=\ - ${file.reference.Permissions.jar}:\ + ${file.reference.Permissions3.jar}:\ ${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}:\ ${file.reference.BOSEconomy.jar}:\ ${file.reference.iCo4.jar}:\ diff --git a/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java new file mode 100644 index 000000000..9e3b24b0d --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java @@ -0,0 +1,45 @@ +package com.earth2me.essentials; + +import org.bukkit.entity.Player; + + +public class ConfigPermissionsHandler implements IPermissionsHandler +{ + private final transient IEssentials ess; + + public ConfigPermissionsHandler(final IEssentials ess) + { + this.ess = ess; + } + + public String getGroup(final Player base) + { + return "default"; + } + + public boolean canBuild(final Player base, final String group) + { + return true; + } + + public boolean inGroup(final Player base, final String group) + { + return false; + } + + public boolean hasPermission(final Player base, final String node) + { + final String[] cmds = node.split("\\.", 2); + return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1]); + } + + public String getPrefix(final Player base) + { + return ""; + } + + public String getSuffix(final Player base) + { + return ""; + } +} diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 2dfb09344..2b30c5b02 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -62,6 +62,7 @@ public class Essentials extends JavaPlugin implements IEssentials private final Methods paymentMethod = new Methods(); private final static boolean enableErrorLogging = false; private final EssentialsErrorHandler errorHandler = new EssentialsErrorHandler(); + private IPermissionsHandler permissionsHandler; public static IEssentials getStatic() { @@ -139,6 +140,20 @@ public class Essentials extends JavaPlugin implements IEssentials logger.log(Level.INFO, Util.i18n("bukkitFormatChanged")); } + Plugin permissionsPlugin = pm.getPlugin("Permissions"); + + if (permissionsPlugin != null) + { + if (permissionsPlugin.getDescription().getVersion().charAt(0) == '3') { + this.permissionsHandler = new Permissions3Handler(permissionsPlugin); + } else { + this.permissionsHandler = new Permissions2Handler(permissionsPlugin); + } + } + else + { + this.permissionsHandler = new ConfigPermissionsHandler(this); + } final ServerListener serverListener = new EssentialsPluginListener(paymentMethod); pm.registerEvent(Type.PLUGIN_ENABLE, serverListener, Priority.Low, this); @@ -753,10 +768,14 @@ public class Essentials extends JavaPlugin implements IEssentials { return tntListener; } - + public EssentialsDependancyChecker getDependancyChecker() { return essDep; } + public IPermissionsHandler getPermissionsHandler() + { + return permissionsHandler; + } } diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java index 10d3f16de..824de99a9 100644 --- a/Essentials/src/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/IEssentials.java @@ -71,4 +71,6 @@ public interface IEssentials TNTExplodeListener getTNTListener(); EssentialsDependancyChecker getDependancyChecker(); + + IPermissionsHandler getPermissionsHandler(); } diff --git a/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java new file mode 100644 index 000000000..a7bcc80b7 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java @@ -0,0 +1,21 @@ +package com.earth2me.essentials; + +import org.bukkit.entity.Player; + + +public interface IPermissionsHandler +{ + + String getGroup(Player base); + + boolean canBuild(Player base, String group); + + boolean inGroup(Player base, String group); + + boolean hasPermission(Player base, String node); + + String getPrefix(Player base); + + String getSuffix(Player base); + +} diff --git a/Essentials/src/com/earth2me/essentials/Permissions2Handler.java b/Essentials/src/com/earth2me/essentials/Permissions2Handler.java new file mode 100644 index 000000000..c588bb5fa --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/Permissions2Handler.java @@ -0,0 +1,48 @@ +package com.earth2me.essentials; + +import com.nijiko.permissions.PermissionHandler; +import com.nijikokun.bukkit.Permissions.Permissions; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + + +public class Permissions2Handler implements IPermissionsHandler +{ + private final transient PermissionHandler permissionHandler; + + Permissions2Handler(final Plugin permissionsPlugin) + { + permissionHandler = ((Permissions)permissionsPlugin).getHandler(); + } + + public String getGroup(final Player base) + { + return permissionHandler.getGroup(base.getWorld().getName(), base.getName()); + } + + public boolean canBuild(final Player base, final String group) + { + return permissionHandler.canGroupBuild(base.getWorld().getName(), getGroup(base)); + } + + public boolean inGroup(final Player base, final String group) + { + return permissionHandler.inGroup(base.getWorld().getName(), base.getName(), group); + } + + public boolean hasPermission(final Player base, final String node) + { + return permissionHandler.permission(base, node); + } + + public String getPrefix(final Player base) + { + return permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base)); + } + + public String getSuffix(final Player base) + { + return permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base)); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/Permissions3Handler.java b/Essentials/src/com/earth2me/essentials/Permissions3Handler.java new file mode 100644 index 000000000..99c95da0a --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/Permissions3Handler.java @@ -0,0 +1,48 @@ +package com.earth2me.essentials; + +import com.nijiko.permissions.PermissionHandler; +import com.nijikokun.bukkit.Permissions.Permissions; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + + +public class Permissions3Handler implements IPermissionsHandler +{ + private final transient PermissionHandler permissionHandler; + + Permissions3Handler(final Plugin permissionsPlugin) + { + permissionHandler = ((Permissions)permissionsPlugin).getHandler(); + } + + public String getGroup(final Player base) + { + return permissionHandler.getPrimaryGroup(base.getWorld().getName(), base.getName()); + } + + public boolean canBuild(final Player base, final String group) + { + return permissionHandler.canUserBuild(base.getWorld().getName(), base.getName()); + } + + public boolean inGroup(final Player base, final String group) + { + return permissionHandler.inGroup(base.getWorld().getName(), base.getName(), group); + } + + public boolean hasPermission(final Player base, final String node) + { + return permissionHandler.has(base, node); + } + + public String getPrefix(final Player base) + { + return permissionHandler.getUserPrefix(base.getWorld().getName(), base.getName()); + } + + public String getSuffix(final Player base) + { + return permissionHandler.getUserSuffix(base.getWorld().getName(), base.getName()); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/PlayerExtension.java b/Essentials/src/com/earth2me/essentials/PlayerExtension.java index 901edd345..c090dff2f 100644 --- a/Essentials/src/com/earth2me/essentials/PlayerExtension.java +++ b/Essentials/src/com/earth2me/essentials/PlayerExtension.java @@ -53,38 +53,17 @@ public class PlayerExtension extends PlayerWrapper public String getGroup() { - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.getGroup(getWorld().getName(), getName()); - } - catch (Throwable ex) - { - return "default"; - } + return ess.getPermissionsHandler().getGroup(base); } public boolean inGroup(String group) { - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.inGroup(getWorld().getName(), getName(), group); - } - catch (Throwable ex) - { - return false; - } + return ess.getPermissionsHandler().inGroup(base, group); } public boolean canBuild() { - try - { - return isOp() || com.nijikokun.bukkit.Permissions.Permissions.Security.canGroupBuild(getWorld().getName(), getGroup()); - } - catch (Throwable ex) - { - return true; - } + return ess.getPermissionsHandler().canBuild(base, getGroup()); } public EntityPlayer getHandle() diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 8365aabe3..befbf111f 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -48,16 +48,8 @@ public class User extends UserData implements Comparable, IReplyTo, IUser { return false; } - - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.permission(base, node); - } - catch (Throwable ex) - { - String[] cmds = node.split("\\.", 2); - return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1]); - } + + return ess.getPermissionsHandler().hasPermission(this, node); } public void healCooldown() throws Exception diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java index 0271fff6f..428413661 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java @@ -6,30 +6,25 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; -import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class EssentialsChat extends JavaPlugin { - private static final Logger logger = Logger.getLogger("Minecraft"); - - public EssentialsChat() - { - super(); - } + private static final Logger LOGGER = Logger.getLogger("Minecraft"); public void onEnable() { - PluginManager pm = getServer().getPluginManager(); - EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer()); - pm.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Monitor, this); - pm.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this); - if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) { - logger.log(Level.WARNING, Util.i18n("versionMismatchAll")); + final PluginManager pluginManager = getServer().getPluginManager(); + final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer()); + pluginManager.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Lowest, this); + pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this); + if (!this.getDescription().getVersion().equals(Essentials.getStatic().getDescription().getVersion())) + { + LOGGER.log(Level.WARNING, Util.i18n("versionMismatchAll")); } - logger.info(Util.format("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), Essentials.AUTHORS)); + LOGGER.info(Util.format("loadinfo", this.getDescription().getName(), this.getDescription().getVersion(), Essentials.AUTHORS)); } public void onDisable() diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java index d3dff8538..211733818 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java @@ -1,7 +1,14 @@ package com.earth2me.essentials.chat; import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.IEssentials; +import com.earth2me.essentials.User; +import com.earth2me.essentials.Util; +import java.util.logging.Logger; +import org.bukkit.Location; import org.bukkit.Server; +import org.bukkit.World; +import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerListener; @@ -10,52 +17,109 @@ import org.bukkit.event.player.PlayerRespawnEvent; public class EssentialsChatPlayerListener extends PlayerListener { - private final Server server; + private static final Logger LOGGER = Logger.getLogger("Minecraft"); + private final transient IEssentials ess = Essentials.getStatic(); + private final transient Server server; - public EssentialsChatPlayerListener(Server server) + public EssentialsChatPlayerListener(final Server server) { this.server = server; } @Override - @SuppressWarnings("CallToThreadDumpStack") - public void onPlayerJoin(PlayerJoinEvent event) + public void onPlayerJoin(final PlayerJoinEvent event) { - try - { - EssentialsChatWorker.onPlayerJoin(server, event); - } - catch (Throwable ex) - { - ex.printStackTrace(); - } + final User user = ess.getUser(event.getPlayer()); + updateDisplayName(user); + } + + private void updateDisplayName(final User user) + { + final String prefix = ess.getPermissionsHandler().getPrefix(user).replace('&', '§').replace("{WORLDNAME}", user.getWorld().getName()); + final String suffix = ess.getPermissionsHandler().getSuffix(user).replace('&', '§').replace("{WORLDNAME}", user.getWorld().getName()); + + user.setDisplayName(prefix + user.getNick() + suffix + (suffix.length() > 1 && suffix.substring(suffix.length() - 2, suffix.length() - 1).equals("§") ? "" : "§f")); } @Override - @SuppressWarnings("CallToThreadDumpStack") - public void onPlayerRespawn(PlayerRespawnEvent event) + public void onPlayerChat(final PlayerChatEvent event) { - try + if (event.isCancelled()) { - EssentialsChatWorker.onPlayerRespawn(server, event); + return; } - catch (Throwable ex) - { - ex.printStackTrace(); - } - } + final User user = ess.getUser(event.getPlayer()); + updateDisplayName(user); - @Override - @SuppressWarnings("CallToThreadDumpStack") - public void onPlayerChat(PlayerChatEvent event) - { - try + if (user.isAuthorized("essentials.chat.color")) { - EssentialsChatWorker.onPlayerChat(server, event); + event.setMessage(event.getMessage().replaceAll("&([0-9a-f])", "§$1")); } - catch (Throwable ex) + + event.setFormat(ess.getSettings().getChatFormat(user.getGroup()).replace('&', '§').replace("§§", "&").replace("{DISPLAYNAME}", "%1$s").replace("{GROUP}", user.getGroup()).replace("{MESSAGE}", "%2$s").replace("{WORLDNAME}", user.getWorld().getName()).replace("{SHORTWORLDNAME}", user.getWorld().getName().substring(0, 1).toUpperCase())); + + final int radius = ess.getSettings().getChatRadius(); + if (radius < 1) { - ex.printStackTrace(); + return; + } + + if (event.getMessage().startsWith("!") && event.getMessage().length() > 1) + { + if (user.isAuthorized("essentials.chat.shout")) + { + event.setMessage(event.getMessage().substring(1)); + event.setFormat(Util.format("shoutFormat", event.getFormat())); + return; + } + user.sendMessage(Util.i18n("notAllowedToShout")); + event.setCancelled(true); + return; + } + + if (event.getMessage().startsWith("?") && event.getMessage().length() > 1) + { + if (user.isAuthorized("essentials.chat.question")) + { + event.setMessage(event.getMessage().substring(1)); + event.setFormat(Util.format("questionFormat", event.getFormat())); + return; + } + user.sendMessage(Util.i18n("notAllowedToQuestion")); + event.setCancelled(true); + return; + } + + event.setCancelled(true); + LOGGER.info(Util.format("localFormat", user.getName(), event.getMessage())); + + final Location loc = user.getLocation(); + final World world = loc.getWorld(); + final int x = loc.getBlockX(); + final int y = loc.getBlockY(); + final int z = loc.getBlockZ(); + + for (Player p : server.getOnlinePlayers()) + { + final User u = ess.getUser(p); + if (u.isIgnoredPlayer(user.getName()) && !user.isOp()) + { + continue; + } + if (u.equals(user) && !u.isAuthorized("essentials.chat.spy")) + { + final Location l = u.getLocation(); + final int dx = Math.abs(x - l.getBlockX()); + final int dy = Math.abs(y - l.getBlockY()); + final int dz = Math.abs(z - l.getBlockZ()); + final int delta = dx + dy + dz; + if (delta > radius || world != l.getWorld()) + { + continue; + } + } + + u.sendMessage(String.format(event.getFormat(), user.getDisplayName(), event.getMessage())); } } } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatWorker.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatWorker.java deleted file mode 100644 index f43ed29a7..000000000 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatWorker.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.earth2me.essentials.chat; - -import com.earth2me.essentials.Essentials; -import com.earth2me.essentials.User; -import com.earth2me.essentials.Util; -import com.nijikokun.bukkit.Permissions.Permissions; -import java.util.logging.Logger; -import org.bukkit.Location; -import org.bukkit.Server; -import org.bukkit.World; -import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerChatEvent; -import org.bukkit.event.player.PlayerEvent; -import org.bukkit.event.player.PlayerRespawnEvent; - - -public class EssentialsChatWorker -{ - private static final Logger logger = Logger.getLogger("Minecraft"); - - public static void onPlayerRespawn(Server server, PlayerRespawnEvent event) - { - User user = Essentials.getStatic().getUser(event.getPlayer()); - updateDisplayName(user); - } - - public static void onPlayerJoin(Server server, PlayerEvent event) - { - User user = Essentials.getStatic().getUser(event.getPlayer()); - updateDisplayName(user); - } - - private static void updateDisplayName(User user) - { - try - { - String group = user.getGroup(); - try - { - String prefix = Permissions.Security.getGroupPrefix(user.getWorld().getName(), group).replace('&', '§').replace("{WORLDNAME}", user.getWorld().getName()); - String suffix = Permissions.Security.getGroupSuffix(user.getWorld().getName(), group).replace('&', '§').replace("{WORLDNAME}", user.getWorld().getName()); - - user.setDisplayName(prefix + user.getNick() + suffix + (suffix.length() > 1 && suffix.substring(suffix.length() -2).equals("§") ? "" : "§f")); - } - catch (Throwable ex) - { - logger.warning(Util.format("missingPrefixSuffix", group)); - } - } - catch (Throwable ex) - { - logger.warning(Util.i18n("permissionsError")); - } - } - - public static void onPlayerChat(Server server, PlayerChatEvent event) - { - if (event.isCancelled()) return; - User user = Essentials.getStatic().getUser(event.getPlayer()); - updateDisplayName(user); - - if (user.isAuthorized("essentials.chat.color")) - event.setMessage(event.getMessage().replaceAll("&([0-9a-f])", "§$1")); - - event.setFormat(Essentials.getStatic().getSettings().getChatFormat(user.getGroup()).replace('&', '§').replace("§§", "&").replace("{DISPLAYNAME}", "%1$s").replace("{GROUP}", user.getGroup()).replace("{MESSAGE}", "%2$s").replace("{WORLDNAME}", user.getWorld().getName()).replace("{SHORTWORLDNAME}", user.getWorld().getName().substring(0, 1).toUpperCase())); - - int radius = Essentials.getStatic().getSettings().getChatRadius(); - if (radius < 1) return; - - if (event.getMessage().startsWith("!") && event.getMessage().length() > 1) - { - if (user.isAuthorized("essentials.chat.shout")) - { - event.setMessage(event.getMessage().substring(1)); - event.setFormat(Util.format("shoutFormat", event.getFormat())); - return; - } - user.sendMessage(Util.i18n("notAllowedToShout")); - event.setCancelled(true); - return; - } - - if (event.getMessage().startsWith("?") && event.getMessage().length() > 1) - { - if (user.isAuthorized("essentials.chat.question")) - { - event.setMessage(event.getMessage().substring(1)); - event.setFormat(Util.format("questionFormat", event.getFormat())); - return; - } - user.sendMessage(Util.i18n("notAllowedToQuestion")); - event.setCancelled(true); - return; - } - - event.setCancelled(true); - logger.info(Util.format("localFormat", user.getName(), event.getMessage())); - - Location loc = user.getLocation(); - World w = loc.getWorld(); - int x = loc.getBlockX(); - int y = loc.getBlockY(); - int z = loc.getBlockZ(); - - for (Player p : server.getOnlinePlayers()) - { - User u = Essentials.getStatic().getUser(p); - if (u.isIgnoredPlayer(user.getName()) && !user.isOp()) { - continue; - } - if (u != user && !u.isAuthorized("essentials.chat.spy")) - { - Location l = u.getLocation(); - int dx = Math.abs(x - l.getBlockX()); - int dy = Math.abs(y - l.getBlockY()); - int dz = Math.abs(z - l.getBlockZ()); - int delta = dx + dy + dz; - if (delta > radius || w != l.getWorld()) continue; - } - - u.sendMessage(String.format(event.getFormat(), user.getDisplayName(), event.getMessage())); - } - } -} diff --git a/EssentialsGeoIP/nbproject/project.properties b/EssentialsGeoIP/nbproject/project.properties index ed96af206..bc9576f9a 100644 --- a/EssentialsGeoIP/nbproject/project.properties +++ b/EssentialsGeoIP/nbproject/project.properties @@ -1,9 +1,9 @@ annotation.processing.enabled=true annotation.processing.enabled.in.editor=false -annotation.processing.processor.options= -annotation.processing.processors.list= annotation.processing.run.all.processors=true annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=EssentialsGeoIP +application.vendor=snowleo build.classes.dir=${build.dir}/classes build.classes.excludes=**/*.java,**/*.form # This directory is removed when the project is cleaned: @@ -24,6 +24,7 @@ debug.test.classpath=\ dist.dir=dist dist.jar=${dist.dir}/EssentialsGeoIP.jar dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= excludes= file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=../lib/craftbukkit-0.0.1-SNAPSHOT.jar includes=** diff --git a/EssentialsPermissionsCommands/build.xml b/EssentialsPermissionsCommands/build.xml new file mode 100644 index 000000000..507230993 --- /dev/null +++ b/EssentialsPermissionsCommands/build.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + Builds, tests, and runs the project EssentialsPermissionsCommands. + + + diff --git a/EssentialsPermissionsCommands/manifest.mf b/EssentialsPermissionsCommands/manifest.mf new file mode 100644 index 000000000..328e8e5bc --- /dev/null +++ b/EssentialsPermissionsCommands/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/EssentialsPermissionsCommands/nbproject/build-impl.xml b/EssentialsPermissionsCommands/nbproject/build-impl.xml new file mode 100644 index 000000000..5147dc1c2 --- /dev/null +++ b/EssentialsPermissionsCommands/nbproject/build-impl.xml @@ -0,0 +1,1080 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + + + + + + java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + Must select one file in the IDE or set profile.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EssentialsPermissionsCommands/nbproject/genfiles.properties b/EssentialsPermissionsCommands/nbproject/genfiles.properties new file mode 100644 index 000000000..bb1e587db --- /dev/null +++ b/EssentialsPermissionsCommands/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=9c3a069f +build.xml.script.CRC32=0a912bb3 +build.xml.stylesheet.CRC32=28e38971@1.43.1.45 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=9c3a069f +nbproject/build-impl.xml.script.CRC32=dd030a92 +nbproject/build-impl.xml.stylesheet.CRC32=0c01fd8e@1.43.1.45 diff --git a/EssentialsPermissionsCommands/nbproject/project.properties b/EssentialsPermissionsCommands/nbproject/project.properties new file mode 100644 index 000000000..d92776f5b --- /dev/null +++ b/EssentialsPermissionsCommands/nbproject/project.properties @@ -0,0 +1,79 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=EssentialsPermissionsCommands +application.vendor=snowleo +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/EssentialsPermissionsCommands.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +file.reference.bukkit-0.0.1-SNAPSHOT.jar=../lib/bukkit-0.0.1-SNAPSHOT.jar +file.reference.Permissions3.jar=../lib/Permissions3.jar +includes=** +jar.compress=false +javac.classpath=\ + ${reference.Essentials.jar}:\ + ${file.reference.Permissions3.jar}:\ + ${file.reference.bukkit-0.0.1-SNAPSHOT.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=1.6 +javac.target=1.6 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +main.class= +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +project.Essentials=../Essentials +reference.Essentials.jar=${project.Essentials}/dist/Essentials.jar +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value +# or test-sys-prop.name=value to set system properties for unit tests): +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/EssentialsPermissionsCommands/nbproject/project.xml b/EssentialsPermissionsCommands/nbproject/project.xml new file mode 100644 index 000000000..89e773c31 --- /dev/null +++ b/EssentialsPermissionsCommands/nbproject/project.xml @@ -0,0 +1,28 @@ + + + org.netbeans.modules.java.j2seproject + + + EssentialsPermissionsCommands + + + + + + + + + ../lib/nblibraries.properties + + + + Essentials + jar + + jar + clean + jar + + + + diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java new file mode 100644 index 000000000..1f41b890a --- /dev/null +++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/Commandmanuadd.java @@ -0,0 +1,22 @@ +package com.earth2me.essentials.permissions; + +import com.earth2me.essentials.commands.EssentialsCommand; +import org.bukkit.Server; +import org.bukkit.command.CommandSender; + + +public class Commandmanuadd extends EssentialsCommand +{ + public Commandmanuadd() + { + super("manuadd"); + } + + @Override + protected void run(Server server, CommandSender sender, String commandLabel, String[] args) throws Exception + { + + } + + +} diff --git a/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java new file mode 100644 index 000000000..f8af12f28 --- /dev/null +++ b/EssentialsPermissionsCommands/src/com/earth2me/essentials/permissions/EssentialsPermissionsCommands.java @@ -0,0 +1,26 @@ +package com.earth2me.essentials.permissions; + +import com.earth2me.essentials.Essentials; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.java.JavaPlugin; + + +public class EssentialsPermissionsCommands extends JavaPlugin +{ + @Override + public void onEnable() + { + } + + @Override + public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) + { + return Essentials.getStatic().onCommandEssentials(sender, command, label, args, EssentialsPermissionsCommands.class.getClassLoader(), "com.earth2me.essentials.permissions.Command"); + } + + @Override + public void onDisable() + { + } +} diff --git a/EssentialsPermissionsCommands/src/plugin.yml b/EssentialsPermissionsCommands/src/plugin.yml new file mode 100644 index 000000000..3d75176a7 --- /dev/null +++ b/EssentialsPermissionsCommands/src/plugin.yml @@ -0,0 +1,166 @@ +# This determines the command prefix when there are conflicts (/name:home, /name:help, etc.) +name: Essentials +main: com.earth2me.essentials.permissions.EssentialsPermissionsCommands +# Note to developers: This next line cannot change, or the automatic versioning system will break. +version: TeamCity +website: http://www.earth2me.net:8001/ +description: Adds commands aliases to Permissions 3 +authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology] +depend: [Permissions, Essentials] +commands: + manuadd: + description: Move a player to desired group.(Adds to the file if not exists) + usage: / + permission: groupmanager.manuadd + manudel: + description: Remove any user specific configuration. Make him default group. + usage: / + permission: groupmanager.manudel + manuaddsub: + description: Add a group to a player's subgroup list. + usage: / + permission: groupmanager.manuaddsub + manudelsub: + description: Remove a group to a player's subgroup list. + usage: / + permission: groupmanager.manudelsub + mangadd: + description: Add group to the system. + usage: / + permission: groupmanager.mangadd + mangdel: + description: Removes group from the system(all it's users become default) + usage: / + permission: groupmanager.mangdel + manuaddp: + description: Add permission diretly to the player. + usage: / + permission: groupmanager.manuaddp + manudelp: + description: Removes permission diretly from the player. + usage: / + permission: groupmanager.manudelp + manulistp: + description: List all permissions from a player. + usage: / + permission: groupmanager.manulistp + manucheckp: + description: Verify if user has a permission, and where it comes from. + usage: / + permission: groupmanager.manucheckp + mangaddp: + description: Add permission to a group. + usage: / + permission: groupmanager.mangaddp + mangdelp: + description: Removes permission from a group. + usage: / + permission: groupmanager.mangdelp + manglistp: + description: Lists all permissions from a group. + usage: / + permission: groupmanager.manglistp + mangcheckp: + description: Check if group has a permission, and where it comes from. + usage: / + permission: groupmanager.mangcheckp + mangaddi: + description: Add a group to another group inheritance list. + usage: / + permission: groupmanager.mangaddi + mangdeli: + description: Remove a group from another group inheritance list. + usage: / + permission: groupmanager.mangdeli + manuaddv: + description: Add, or replaces, a variable to a user (like prefix or suffix). + usage: / + permission: groupmanager.manuaddv + manudelv: + description: Remove a variable from a user. + usage: / + permission: groupmanager.manudelv + manulistv: + description: List variables a user has (like prefix or suffix). + usage: / + permission: groupmanager.manulistv + manucheckv: + description: Verify a value of a variable of user, and where it comes from. + usage: / + permission: groupmanager.manucheckv + mangaddv: + description: Add, or replaces, a variable to a group (like prefix or suffix). + usage: / + permission: groupmanager.mangaddv + mangdelv: + description: Remove a variable from a group. + usage: / + permission: groupmanager.mangdelv + manglistv: + description: List variables a group has (like prefix or suffix). + usage: / + permission: groupmanager.manglistv + mangcheckv: + description: Verify a value of a variable of group, and where it comes from. + usage: / + permission: groupmanager.mangckeckv + manwhois: + description: Tell the group that user belongs. + usage: / + permission: groupmanager.manwhois + tempadd: + description: Creates a temporary permission copy for that user. + usage: / + permission: groupmanager.tempadd + tempdel: + description: Remove the temporary permission copy for player. + usage: / + permission: groupmanager.tempdel + templist: + description: List players in overload-permissions mode made by /tempadd. + usage: / + permission: groupmanager.templist + tempdelall: + description: Remove all overrides made by command /tempadd. + usage: / + permission: groupmanager.tempdelall + mansave: + description: Save all permissions on file. + usage: / + permission: groupmanager.mansave + manload: + description: Reload current world and config.yml. Or load given world. + usage: / [world] + permission: groupmanager.manload + listgroups: + description: List the groups available. + usage: / + permission: groupmanager.listgroups + manpromote: + description: Promote a player in the same heritage line to a higher rank. + usage: / + permission: groupmanager.manpromote + mandemote: + description: Demote a player in the same heritage line to a lower rank. + usage: / + permission: groupmanager.mandemote + mantogglevalidate: + description: Toggle on/off the validating if player is online. + usage: / + permission: groupmanager.mantogglevalidate + mantogglesave: + description: Toggle on/ff the autosave. + usage: / + permission: groupmanager.mantogglesave + manworld: + description: Prints the selected world name + usage: / + permission: groupmanager.manworld + manselect: + description: Select a world to work with next commands. + usage: / + permission: groupmanager.manselect + manclear: + description: Clear world selection. Next commands will work on your world. + usage: / + permission: groupmanager.manclear \ No newline at end of file diff --git a/lib/Permissions3.jar b/lib/Permissions3.jar new file mode 100755 index 000000000..7e2741283 Binary files /dev/null and b/lib/Permissions3.jar differ