diff --git a/src/com/massivecraft/mcore/Lang.java b/src/com/massivecraft/mcore/Lang.java index a1d6567a..ef1c10d8 100644 --- a/src/com/massivecraft/mcore/Lang.java +++ b/src/com/massivecraft/mcore/Lang.java @@ -2,12 +2,12 @@ package com.massivecraft.mcore; public class Lang { - public static final String permForbidden = "You don't have permission to %s."; - public static final String permDoThat = "do that"; + public static final String PERM_DEFAULT_DENIED_FORMAT = "You don't have permission to %s."; + public static final String PERM_DEFAULT_DESCRIPTION = "do that"; - public static final String commandSenderMustBePlayer = "This command can only be used by ingame players."; - public static final String commandSenderMusntBePlayer = "This command can not be used by ingame players."; - public static final String commandToFewArgs = "To few arguments. Use like this:"; - public static final String commandToManyArgs = "Strange arguments %s."; - public static final String commandToManyArgs2 = "Use the command like this:"; + public static final String COMMAND_SENDER_MUST_BE_PLAYER = "This command can only be used by ingame players."; + public static final String COMMAND_SENDER_MUSNT_BE_PLAYER = "This command can not be used by ingame players."; + public static final String COMMAND_TO_FEW_ARGS = "To few arguments. Use like this:"; + public static final String COMMAND_TO_MANY_ARGS = "Strange arguments %s."; + public static final String COMMAND_TO_MANY_ARGS2 = "Use the command like this:"; } diff --git a/src/com/massivecraft/mcore/cmd/MCommand.java b/src/com/massivecraft/mcore/cmd/MCommand.java index 4d9c5cb4..62110064 100644 --- a/src/com/massivecraft/mcore/cmd/MCommand.java +++ b/src/com/massivecraft/mcore/cmd/MCommand.java @@ -91,7 +91,7 @@ public abstract class MCommand String perm = this.getDescPermission(); if (perm != null) { - String pdesc = PermUtil.getPermissionDescription(this.getDescPermission()); + String pdesc = PermUtil.getDescription(this.getDescPermission()); if (pdesc != null) { return pdesc; @@ -320,7 +320,7 @@ public abstract class MCommand { if (sender != null) { - msg(Lang.commandToFewArgs); + msg(Lang.COMMAND_TO_FEW_ARGS); sender.sendMessage(this.getUseageTemplate()); } return false; @@ -332,8 +332,8 @@ public abstract class MCommand { // Get the to many string slice List theToMany = args.subList(this.requiredArgs.size() + this.optionalArgs.size(), args.size()); - msg(Lang.commandToManyArgs, Txt.implodeCommaAndDot(theToMany, Txt.parse("%s"), Txt.parse(", "), Txt.parse(" and "), "")); - msg(Lang.commandToManyArgs2); + msg(Lang.COMMAND_TO_MANY_ARGS, Txt.implodeCommaAndDot(theToMany, Txt.parse("%s"), Txt.parse(", "), Txt.parse(" and "), "")); + msg(Lang.COMMAND_TO_MANY_ARGS2); sender.sendMessage(this.getUseageTemplate()); } return false; diff --git a/src/com/massivecraft/mcore/cmd/req/ReqHasPerm.java b/src/com/massivecraft/mcore/cmd/req/ReqHasPerm.java index d443c50c..f094f466 100644 --- a/src/com/massivecraft/mcore/cmd/req/ReqHasPerm.java +++ b/src/com/massivecraft/mcore/cmd/req/ReqHasPerm.java @@ -36,6 +36,6 @@ public class ReqHasPerm extends ReqAbstract @Override public String createErrorMessage(CommandSender sender, MCommand command) { - return PermUtil.getForbiddenMessage(this.perm); + return PermUtil.getDeniedMessage(this.perm); } } diff --git a/src/com/massivecraft/mcore/cmd/req/ReqIsPlayer.java b/src/com/massivecraft/mcore/cmd/req/ReqIsPlayer.java index d6ce5879..87d76d33 100644 --- a/src/com/massivecraft/mcore/cmd/req/ReqIsPlayer.java +++ b/src/com/massivecraft/mcore/cmd/req/ReqIsPlayer.java @@ -30,7 +30,7 @@ public class ReqIsPlayer extends ReqAbstract @Override public String createErrorMessage(CommandSender sender, MCommand command) { - return Lang.commandSenderMustBePlayer; + return Lang.COMMAND_SENDER_MUST_BE_PLAYER; } } diff --git a/src/com/massivecraft/mcore/cmd/req/ReqIsntPlayer.java b/src/com/massivecraft/mcore/cmd/req/ReqIsntPlayer.java index c013f0fb..31f727f2 100644 --- a/src/com/massivecraft/mcore/cmd/req/ReqIsntPlayer.java +++ b/src/com/massivecraft/mcore/cmd/req/ReqIsntPlayer.java @@ -30,7 +30,7 @@ public class ReqIsntPlayer extends ReqAbstract @Override public String createErrorMessage(CommandSender sender, MCommand command) { - return Lang.commandSenderMusntBePlayer; + return Lang.COMMAND_SENDER_MUSNT_BE_PLAYER; } } diff --git a/src/com/massivecraft/mcore/event/MCorePermissionDeniedFormatEvent.java b/src/com/massivecraft/mcore/event/MCorePermissionDeniedFormatEvent.java new file mode 100644 index 00000000..82d42378 --- /dev/null +++ b/src/com/massivecraft/mcore/event/MCorePermissionDeniedFormatEvent.java @@ -0,0 +1,35 @@ +package com.massivecraft.mcore.event; + +import org.bukkit.event.HandlerList; + +public class MCorePermissionDeniedFormatEvent extends MCoreEvent +{ + // -------------------------------------------- // + // REQUIRED EVENT CODE + // -------------------------------------------- // + + private static final HandlerList handlers = new HandlerList(); + @Override public HandlerList getHandlers() { return handlers; } + public static HandlerList getHandlerList() { return handlers; } + + // -------------------------------------------- // + // FIELD + // -------------------------------------------- // + + private final String permissionName; + public String getPermissionName() { return this.permissionName; } + + private String format; + public String getFormat() { return this.format; } + public void setFormat(String format) { this.format = format; } + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public MCorePermissionDeniedFormatEvent(String permissionName) + { + this.permissionName = permissionName; + this.format = null; + } +} \ No newline at end of file diff --git a/src/com/massivecraft/mcore/util/PermUtil.java b/src/com/massivecraft/mcore/util/PermUtil.java index 2e47cb92..9b4378b1 100644 --- a/src/com/massivecraft/mcore/util/PermUtil.java +++ b/src/com/massivecraft/mcore/util/PermUtil.java @@ -11,6 +11,7 @@ import org.bukkit.permissions.PermissionDefault; import com.massivecraft.mcore.Lang; import com.massivecraft.mcore.MCore; +import com.massivecraft.mcore.event.MCorePermissionDeniedFormatEvent; public class PermUtil { @@ -43,7 +44,7 @@ public class PermUtil if (permissible instanceof CommandSender) { CommandSender sender = (CommandSender)permissible; - sender.sendMessage(getForbiddenMessage(perm)); + sender.sendMessage(getDeniedMessage(perm)); } } return false; @@ -53,24 +54,40 @@ public class PermUtil // DESCRIPTIONS AND MESSAGES // -------------------------------------------- // - public static String getPermissionDescription(String perm) + public static String getDescription(String perm) { - if (perm == null) return Lang.permDoThat; + if (perm == null) return Lang.PERM_DEFAULT_DESCRIPTION; Permission permission = Bukkit.getPluginManager().getPermission(perm); - return getPermissionDescription(permission); + return getDescription(permission); } - - public static String getPermissionDescription(Permission perm) + public static String getDescription(Permission perm) { - if (perm == null) return Lang.permDoThat; + if (perm == null) return Lang.PERM_DEFAULT_DESCRIPTION; String desc = perm.getDescription(); - if (desc == null || desc.length() == 0) return Lang.permDoThat; + if (desc == null || desc.length() == 0) return Lang.PERM_DEFAULT_DESCRIPTION; return desc; } - public static String getForbiddenMessage(String perm) + public static String getDeniedFormat(String perm) { - return Txt.parse(Lang.permForbidden, getPermissionDescription(perm)); + MCorePermissionDeniedFormatEvent event = new MCorePermissionDeniedFormatEvent(perm); + event.run(); + String ret = event.getFormat(); + if (ret == null) ret = Lang.PERM_DEFAULT_DENIED_FORMAT; + return ret; + } + public static String getDeniedFormat(Permission perm) + { + return getDeniedFormat(perm == null ? null : perm.getName()); + } + + public static String getDeniedMessage(String perm) + { + return Txt.parse(getDeniedFormat(perm), getDescription(perm)); + } + public static String getDeniedMessage(Permission perm) + { + return Txt.parse(getDeniedFormat(perm), getDescription(perm)); } // -------------------------------------------- //