diff --git a/Changelog.txt b/Changelog.txt index 7d7ea479b..95e2fbdc8 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -9,14 +9,15 @@ Key: Version 1.3.06-dev + Added permissions check to skill functions - + Added API functions for obtaining offline profiles & profiles via player names - + Changed Archery's Daze to deal 4 DMG on proc (2 Hearts) - + Changed /addlevel command to work for offline users + + Added API functions for obtaining offline profiles & profiles via player names = Fixed mmoupdate not being useable from console + = Fixed bug with repairing wooden tools ! Changed mcremove to no longer kick players when they are removed from database - ! Changed mcremove to work on offline users for FlatFile + ! Changed mcremove to work on offline users for FlatFile ! Changed PlayerProfile constructor to always take a boolean - ! Changed getPlayerProfile function to work for online & offline users + ! Changed getPlayerProfile function to work for online & offline users + ! Changed Archery's Daze to deal 4 DMG on proc (2 Hearts) + ! Changed /addlevel command to work for offline users Version 1.3.05 + Added Skill Shot to Archery which increases damage dealt by 10% every 50 skill levels (caps at 200%) diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java index 85f3f3637..f0d820a09 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McabilityCommand.java @@ -11,6 +11,7 @@ import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.locale.mcLocale; public class McabilityCommand implements CommandExecutor { + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (CommandHelper.noConsoleUsage(sender)) { diff --git a/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java index 8bc95ee09..2e5b81e10 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/MccCommand.java @@ -7,57 +7,66 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.mcPermissions; +import com.gmail.nossr50.commands.CommandHelper; import com.gmail.nossr50.locale.mcLocale; +//TODO: Rework this whole thing. It's ugly. public class MccCommand implements CommandExecutor { - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage("This command does not support console useage."); - return true; - } + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (CommandHelper.noConsoleUsage(sender)) { + return true; + } - Player player = (Player) sender; + Player player = (Player) sender; - player.sendMessage(ChatColor.RED + "---[]" + ChatColor.YELLOW + "mcMMO Commands" + ChatColor.RED + "[]---"); //TODO: Needs more locale. + player.sendMessage(ChatColor.RED + "---[]" + ChatColor.YELLOW + "mcMMO Commands" + ChatColor.RED + "[]---"); //TODO: Needs more locale. - if (mcPermissions.getInstance().party(player)) { - player.sendMessage(mcLocale.getString("m.mccPartyCommands")); - player.sendMessage("/party " + mcLocale.getString("m.mccParty")); - player.sendMessage("/party q " + mcLocale.getString("m.mccPartyQ")); + if (mcPermissions.getInstance().party(player)) { + player.sendMessage(mcLocale.getString("m.mccPartyCommands")); + player.sendMessage("/party " + mcLocale.getString("m.mccParty")); + player.sendMessage("/party q " + mcLocale.getString("m.mccPartyQ")); - if (mcPermissions.getInstance().partyChat(player)) - player.sendMessage("/p " + mcLocale.getString("m.mccPartyToggle")); + if (mcPermissions.getInstance().partyChat(player)) { + player.sendMessage("/p " + mcLocale.getString("m.mccPartyToggle")); + } - player.sendMessage("/invite " + mcLocale.getString("m.mccPartyInvite")); - player.sendMessage("/invite " + mcLocale.getString("m.mccPartyAccept")); + player.sendMessage("/invite " + mcLocale.getString("m.mccPartyInvite")); + player.sendMessage("/invite " + mcLocale.getString("m.mccPartyAccept")); - if (mcPermissions.getInstance().partyTeleport(player)) - player.sendMessage("/ptp " + mcLocale.getString("m.mccPartyTeleport")); - } - player.sendMessage(mcLocale.getString("m.mccOtherCommands")); - player.sendMessage("/mcstats " + ChatColor.RED + mcLocale.getString("m.mccStats")); - player.sendMessage("/mctop " + ChatColor.RED + mcLocale.getString("m.mccLeaderboards")); + if (mcPermissions.getInstance().partyTeleport(player)) { + player.sendMessage("/ptp " + mcLocale.getString("m.mccPartyTeleport")); + } + } - if (mcPermissions.getInstance().mcAbility(player)) - player.sendMessage("/mcability " + ChatColor.RED + mcLocale.getString("m.mccToggleAbility")); + player.sendMessage(mcLocale.getString("m.mccOtherCommands")); + player.sendMessage("/mcstats " + ChatColor.RED + mcLocale.getString("m.mccStats")); + player.sendMessage("/mctop " + ChatColor.RED + mcLocale.getString("m.mccLeaderboards")); - if (mcPermissions.getInstance().adminChat(player)) - player.sendMessage("/a " + ChatColor.RED + mcLocale.getString("m.mccAdminToggle")); + if (mcPermissions.getInstance().mcAbility(player)) { + player.sendMessage("/mcability " + ChatColor.RED + mcLocale.getString("m.mccToggleAbility")); + } - if (mcPermissions.getInstance().inspect(player)) - player.sendMessage("/inspect " + mcLocale.getString("m.mccInspect")); + if (mcPermissions.getInstance().adminChat(player)) { + player.sendMessage("/a " + ChatColor.RED + mcLocale.getString("m.mccAdminToggle")); + } - if (mcPermissions.getInstance().mmoedit(player)) - player.sendMessage("/mmoedit " + mcLocale.getString("m.mccMmoedit")); + if (mcPermissions.getInstance().inspect(player)) { + player.sendMessage("/inspect " + mcLocale.getString("m.mccInspect")); + } - if (mcPermissions.getInstance().mcgod(player)) - player.sendMessage("/mcgod " + ChatColor.RED + mcLocale.getString("m.mccMcGod")); + if (mcPermissions.getInstance().mmoedit(player)) { + player.sendMessage("/mmoedit " + mcLocale.getString("m.mccMmoedit")); + } - player.sendMessage(mcLocale.getString("m.mccSkillInfo")); - player.sendMessage("/mcmmo " + mcLocale.getString("m.mccModDescription")); + if (mcPermissions.getInstance().mcgod(player)) { + player.sendMessage("/mcgod " + ChatColor.RED + mcLocale.getString("m.mccMcGod")); + } - return true; - } + player.sendMessage(mcLocale.getString("m.mccSkillInfo")); + player.sendMessage("/mcmmo " + mcLocale.getString("m.mccModDescription")); + + return true; + } } diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java index 01adb845d..f228473dd 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McgodCommand.java @@ -1,43 +1,38 @@ package com.gmail.nossr50.commands.mc; -import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.Users; -import com.gmail.nossr50.mcPermissions; +import com.gmail.nossr50.commands.CommandHelper; import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.locale.mcLocale; public class McgodCommand implements CommandExecutor { - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage("This command does not support console useage."); //TODO: Needs more locale. - return true; - } + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (CommandHelper.noConsoleUsage(sender)) { + return true; + } - Player player = (Player) sender; - PlayerProfile PP = Users.getProfile(player); + if (CommandHelper.noCommandPermissions(sender, "mcmmo.tools.mcgod")) { + return true; + } - if (!mcPermissions.getInstance().mcgod(player)) { - player.sendMessage(ChatColor.YELLOW + "[mcMMO] " + ChatColor.DARK_RED + mcLocale.getString("mcPlayerListener.NoPermission")); - return true; - } + PlayerProfile PP = Users.getProfile((Player) sender); - if (mcPermissions.getInstance().mcgod(player)) { - if (PP.getGodMode()) { - player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled")); - PP.toggleGodMode(); - } else { - player.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled")); - PP.toggleGodMode(); - } - } + if (PP.getGodMode()) { + sender.sendMessage(mcLocale.getString("mcPlayerListener.GodModeDisabled")); + } + else { + sender.sendMessage(mcLocale.getString("mcPlayerListener.GodModeEnabled")); + } - return true; - } + PP.toggleGodMode(); + + return true; + } } diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java index 10171bade..ff79bf3e7 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McmmoCommand.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.commands.mc; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; import org.getspout.spoutapi.player.SpoutPlayer; import com.gmail.nossr50.config.LoadProperties; @@ -12,32 +12,26 @@ import com.gmail.nossr50.locale.mcLocale; public class McmmoCommand implements CommandExecutor { - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + String description = mcLocale.getString("mcMMO.Description", new Object[] { "mcc" }); + String[] mcSplit = description.split(","); - if (!(sender instanceof Player)) { - sender.sendMessage("This command does not support console useage."); //TODO: Needs more locale. - return true; - } + for (String x : mcSplit) { + sender.sendMessage(x); + } - Player player = (Player) sender; + if (LoadProperties.donateMessage) { + if (LoadProperties.spoutEnabled && sender instanceof SpoutPlayer) { + SpoutPlayer sPlayer = (SpoutPlayer) sender; - String description = mcLocale.getString("mcMMO.Description", new Object[] { "mcc" }); - String[] mcSplit = description.split(","); + sPlayer.sendNotification(ChatColor.YELLOW + "[mcMMO]" + ChatColor.GOLD + " Donate!", ChatColor.GREEN + "nossr50@gmail.com", Material.DIAMOND); + } - for (String x : mcSplit) { - player.sendMessage(x); - } + sender.sendMessage(ChatColor.DARK_AQUA + "Donation Info:"); + sender.sendMessage(ChatColor.GOLD + " - " + ChatColor.GREEN + "nossr50@gmail.com" + ChatColor.GOLD + " Paypal"); + } - if (LoadProperties.spoutEnabled && player instanceof SpoutPlayer) { - SpoutPlayer sPlayer = (SpoutPlayer) player; - if (LoadProperties.donateMessage) - sPlayer.sendMessage(ChatColor.YELLOW + "[mcMMO]"+ChatColor.GOLD+" Donate! Paypal "+ChatColor.GREEN+"nossr50@gmail.com"); //Where'd our notification go? - } else { - if (LoadProperties.donateMessage) - player.sendMessage(ChatColor.YELLOW + "[mcMMO]"+ChatColor.GOLD+" Donate! Paypal "+ChatColor.GREEN+"nossr50@gmail.com"); - } - - return true; - } + return true; + } } diff --git a/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java b/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java index 24056aca5..9111ba15e 100644 --- a/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/mcSpoutListener.java @@ -16,11 +16,11 @@ import com.gmail.nossr50.spout.SpoutStuff; public class mcSpoutListener implements Listener { //Why do we have this here? We never use it... mcMMO plugin = null; - + public mcSpoutListener(mcMMO pluginx) { plugin = pluginx; } - + /** * Monitor SpoutCraftEnable events. * @@ -30,13 +30,13 @@ public class mcSpoutListener implements Listener { public void onSpoutCraftEnable(SpoutCraftEnableEvent event) { SpoutPlayer sPlayer = event.getPlayer(); PlayerProfile PPs = Users.getProfile(sPlayer); - + //TODO: Add custom titles based on skills if (LoadProperties.showPowerLevel) { - sPlayer.setTitle(sPlayer.getName()+ "\n" + ChatColor.YELLOW + "P" + ChatColor.GOLD + "lvl" + sPlayer.setTitle(sPlayer.getName()+ "\n" + ChatColor.YELLOW + "P" + ChatColor.GOLD + "lvl" + ChatColor.WHITE+"." + ChatColor.GREEN + String.valueOf(PPs.getPowerLevel())); } - + if (sPlayer.isSpoutCraftEnabled()) { SpoutStuff.playerHUDs.put(sPlayer, new HUDmmo(sPlayer)); //Setup Party HUD stuff diff --git a/src/main/java/com/gmail/nossr50/skills/Repair.java b/src/main/java/com/gmail/nossr50/skills/Repair.java index 65a33fa19..95187e73b 100644 --- a/src/main/java/com/gmail/nossr50/skills/Repair.java +++ b/src/main/java/com/gmail/nossr50/skills/Repair.java @@ -484,5 +484,6 @@ public class Repair { int slot = inventory.first(Material.WOOD); ItemStack item = inventory.getItem(slot); item.setAmount(item.getAmount() - 1); + inventory.setItem(slot, item); } } diff --git a/src/main/java/com/gmail/nossr50/skills/Skills.java b/src/main/java/com/gmail/nossr50/skills/Skills.java index ac5574b49..68909aace 100644 --- a/src/main/java/com/gmail/nossr50/skills/Skills.java +++ b/src/main/java/com/gmail/nossr50/skills/Skills.java @@ -102,21 +102,12 @@ public class Skills { /* Woodcutting & Axes need to be treated differently. * Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action */ - if (skill == SkillType.WOODCUTTING || skill == SkillType.AXES) { - if ((mcPermissions.getInstance().treeFeller(player) || mcPermissions.getInstance().skullSplitter(player)) && - tool.inHand(inHand) && !PP.getToolPreparationMode(tool)) { - if (LoadProperties.enableAbilityMessages) { - player.sendMessage(tool.getRaiseTool()); + if (ability.getPermissions(player) && tool.inHand(inHand) && !PP.getToolPreparationMode(tool)) { + if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) { + if (!PP.getAbilityMode(ability) && !cooldownOver(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown())) { + player.sendMessage(mcLocale.getString("Skills.TooTired") + ChatColor.YELLOW + " (" + calculateTimeLeft(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown()) + "s)"); + return; } - - PP.setToolPreparationATS(tool, System.currentTimeMillis()); - PP.setToolPreparationMode(tool, true); - } - } - else if (ability.getPermissions(player) && tool.inHand(inHand) && !PP.getToolPreparationMode(tool)) { - if (!PP.getAbilityMode(ability) && !cooldownOver(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown())) { - player.sendMessage(mcLocale.getString("Skills.TooTired") + ChatColor.YELLOW + " (" + calculateTimeLeft(PP.getSkillDATS(ability) * TIME_CONVERSION_FACTOR, ability.getCooldown()) + "s)"); - return; } if (LoadProperties.enableAbilityMessages) { diff --git a/src/main/resources/locale/locale_en_us.properties b/src/main/resources/locale/locale_en_us.properties index 245f8f265..9bf29c668 100644 --- a/src/main/resources/locale/locale_en_us.properties +++ b/src/main/resources/locale/locale_en_us.properties @@ -302,7 +302,7 @@ m.LVL=[[DARK_GRAY]]LVL: [[GREEN]]{0} [[DARK_AQUA]]XP[[YELLOW]]([[GOLD]]{1}[[YELL Combat.BeastLore=[[GREEN]]**BEAST LORE** Combat.BeastLoreOwner=[[DARK_AQUA]]Owner ([[RED]]{0}[[DARK_AQUA]]) Combat.BeastLoreHealth=[[DARK_AQUA]]Health ([[GREEN]]{0}[[DARK_AQUA]]/{1}) -mcMMO.Description=[[DARK_AQUA]]About the [[YELLOW]]mcMMO[[DARK_AQUA]] Project:,[[GOLD]]mcMMO is an [[RED]]open source[[GOLD]] RPG mod created in February 2011,[[GOLD]]by [[BLUE]]nossr50[[GOLD]]. The goal is to provide a quality RPG experience.,[[DARK_AQUA]]Tips:,[[GOLD]] - [[GREEN]]Use [[RED]]/mcc[[GREEN]] to see commands,[[GOLD]] - [[GREEN]]Type [[RED]]/SKILLNAME[[GREEN]] to see detailed skill info,[[DARK_AQUA]]Developers:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](Project Lead),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Senior Developer),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Developer),[[DARK_AQUA]]Useful Links:,[[GOLD]] - [[GREEN]]issues.mcmmo.org[[GOLD]] Bug Reporting,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,[[GOLD]] - [[GREEN]]http://bit.ly/H6XwFb[[GOLD]] Bukkit Forum Thread,[[DARK_AQUA]]Donation Info: +mcMMO.Description=[[DARK_AQUA]]About the [[YELLOW]]mcMMO[[DARK_AQUA]] Project:,[[GOLD]]mcMMO is an [[RED]]open source[[GOLD]] RPG mod created in February 2011,[[GOLD]]by [[BLUE]]nossr50[[GOLD]]. The goal is to provide a quality RPG experience.,[[DARK_AQUA]]Tips:,[[GOLD]] - [[GREEN]]Use [[RED]]/mcc[[GREEN]] to see commands,[[GOLD]] - [[GREEN]]Type [[RED]]/SKILLNAME[[GREEN]] to see detailed skill info,[[DARK_AQUA]]Developers:,[[GOLD]] - [[GREEN]]nossr50 [[BLUE]](Project Lead),[[GOLD]] - [[GREEN]]GJ [[BLUE]](Senior Developer),[[GOLD]] - [[GREEN]]NuclearW [[BLUE]](Developer),[[DARK_AQUA]]Useful Links:,[[GOLD]] - [[GREEN]]issues.mcmmo.org[[GOLD]] Bug Reporting,[[GOLD]] - [[GREEN]]#mcmmo @ irc.esper.net[[GOLD]] IRC Chat,[[GOLD]] - [[GREEN]]http://bit.ly/H6XwFb[[GOLD]] Bukkit Forum Thread Party.Locked=[[RED]]Party is locked, only party leader may invite. Party.IsntLocked=[[GRAY]]Party is not locked Party.Unlocked=[[GRAY]]Party is unlocked