diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..8fe0193 --- /dev/null +++ b/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..2a90c04 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + ScoreKeeper + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f686e69 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,5 @@ +#Sun Feb 19 04:11:12 PST 2012 +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b83fc05 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,6 @@ +#Sun Feb 19 04:11:12 PST 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..069baa2 --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,5 @@ +#Sun Feb 19 04:11:11 PST 2012 +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 0000000..f6f4713 --- /dev/null +++ b/Readme.txt @@ -0,0 +1,12 @@ +Commands: +/score-get [playerName] - Displays the player's score. +/score-add [playerName] - Add amount points to the player's score. +/score-subtract [playerName] - Subtracts amount points from the player's score. +/score-reset [playerName] - Resets the player's score to 0. +/score-archive [playerName] - Saves the player's score to a "High Scores" table and resets their current score to 0. + +NOTES: +* All commands will use the executing player in place of [playerName] if it is omitted. +* Permissions support is coming AFTER I get archive to work. +* The commands aside from get are intended for admins and whatnot as some other plugin should be using the methods instead of letting player's execute commands. + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0d0cfe9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + com.majinnaibu.bukkitplugins + ScoreKeeper + jar + 0.2-SNAPSHOT + bukkitplugin + http://maven.apache.org + + UTF-8 + + + + org.bukkit + bukkit + 0.0.1-SNAPSHOT + jar + compile + + + junit + junit + 3.8.1 + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.6 + 1.6 + + + + + + + bukkit-repo + http://repo.bukkit.org/artifactory/repo + + + diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/ScoreKeeperPlugin.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/ScoreKeeperPlugin.java new file mode 100644 index 0000000..953283a --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/ScoreKeeperPlugin.java @@ -0,0 +1,65 @@ +package com.majinnaibu.bukkitplugins.scorekeeper; + +import java.util.HashMap; +import java.util.logging.Logger; + +import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginDescriptionFile; +import org.bukkit.plugin.java.JavaPlugin; + +import com.majinnaibu.bukkitplugins.scorekeeper.commands.ScoreAddCommand; +import com.majinnaibu.bukkitplugins.scorekeeper.commands.ScoreArchiveCommand; +import com.majinnaibu.bukkitplugins.scorekeeper.commands.ScoreGetCommand; +import com.majinnaibu.bukkitplugins.scorekeeper.commands.ScoreResetCommand; +import com.majinnaibu.bukkitplugins.scorekeeper.commands.ScoreSubtractCommand; + +public class ScoreKeeperPlugin extends JavaPlugin { + private final HashMap _playerScores = new HashMap(); + + public final Logger log = Logger.getLogger("Minecraft"); + + + @Override + public void onDisable() { + //TODO: save score data to file + } + + @Override + public void onEnable() { + //PluginManager pm = getServer().getPluginManager(); + //pm.registerEvent(Event.Type.BLOCK_PHYSICS, new BlockListener(){}, Priority.Normal, this); + getCommand("score-get").setExecutor(new ScoreGetCommand(this)); + getCommand("score-add").setExecutor(new ScoreAddCommand(this)); + getCommand("score-subtract").setExecutor(new ScoreSubtractCommand(this)); + getCommand("score-reset").setExecutor(new ScoreResetCommand(this)); + getCommand("score-archive").setExecutor(new ScoreArchiveCommand(this)); + + //TODO: load score data from file + + PluginDescriptionFile pdFile = this.getDescription(); + log.info(pdFile.getName() + " version " + pdFile.getVersion() + " is enabled!"); + } + + public int getPlayerScore(Player player) { + if(!_playerScores.containsKey(player)){ + _playerScores.put(player, 0); + } + + return _playerScores.get(player); + } + + public void addScore(Player player, int amount) { + int score = getPlayerScore(player); + _playerScores.put(player, score + amount); + } + + public void subtractScore(Player player, int amount) { + int score = getPlayerScore(player); + _playerScores.put(player, score - amount); + } + + public void resetPlayerScore(Player targetPlayer) { + // TODO Auto-generated method stub + + } +} diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreAddCommand.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreAddCommand.java new file mode 100644 index 0000000..a275def --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreAddCommand.java @@ -0,0 +1,75 @@ +package com.majinnaibu.bukkitplugins.scorekeeper.commands; + +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.majinnaibu.bukkitplugins.scorekeeper.ScoreKeeperPlugin; + +public class ScoreAddCommand implements CommandExecutor { + private final ScoreKeeperPlugin _plugin; + + public ScoreAddCommand(ScoreKeeperPlugin scoreKeeperPlugin) { + _plugin = scoreKeeperPlugin; + } + + @Override + public boolean onCommand( + CommandSender sender, + Command command, + String label, + String[] split + ) { + boolean rcon = !(sender instanceof Player); + int amount = 0; + Player targetPlayer = null; + + if(split.length == 1){ + if(rcon){ + echoUsage(sender, rcon); + return true; + }else{ + targetPlayer = (Player)sender; + try{ + amount = Integer.parseInt(split[0]); + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + } + }else if(split.length == 2){ + targetPlayer = _plugin.getServer().getPlayer(split[0]); + if(targetPlayer == null){ + echoError(sender, rcon, "Can't find a player with that name"); + return true; + } + + try{ + amount = Integer.parseInt(split[1]); + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + }else{ + echoUsage(sender, rcon); + return true; + } + + _plugin.addScore(targetPlayer, amount); + return true; + } + + private void echoError(CommandSender sender, boolean rcon, String string) { + sender.sendMessage("[" + ChatColor.RED + "ScoreKeeper" + ChatColor.WHITE + "] " + string); + } + + private void echoUsage(CommandSender sender, boolean rcon) { + if(rcon){ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": score-add " + ChatColor.GREEN + " "); + }else{ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": /score-add " + ChatColor.YELLOW + "[playername] " + ChatColor.GREEN + ""); + } + } +} diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreArchiveCommand.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreArchiveCommand.java new file mode 100644 index 0000000..1d10ccb --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreArchiveCommand.java @@ -0,0 +1,36 @@ +package com.majinnaibu.bukkitplugins.scorekeeper.commands; + +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.majinnaibu.bukkitplugins.scorekeeper.ScoreKeeperPlugin; + +public class ScoreArchiveCommand implements CommandExecutor { + private final ScoreKeeperPlugin _plugin; + + public ScoreArchiveCommand(ScoreKeeperPlugin scoreKeeperPlugin) { + _plugin = scoreKeeperPlugin; + } + + @Override + public boolean onCommand( + CommandSender sender, + Command command, + String label, + String[] split + ) { + sender.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] archive command unimplemented "); + + if(sender instanceof Player){ + Player player = (Player) sender; + int score = _plugin.getPlayerScore(player); + player.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] Your score is " + ChatColor.GREEN + score); + return true; + }else{ + return false; + } + } +} diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreGetCommand.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreGetCommand.java new file mode 100644 index 0000000..8760191 --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreGetCommand.java @@ -0,0 +1,75 @@ +package com.majinnaibu.bukkitplugins.scorekeeper.commands; + +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.majinnaibu.bukkitplugins.scorekeeper.ScoreKeeperPlugin; + +public class ScoreGetCommand implements CommandExecutor { + private final ScoreKeeperPlugin _plugin; + + public ScoreGetCommand(ScoreKeeperPlugin scoreKeeperPlugin) { + _plugin = scoreKeeperPlugin; + } + + @Override + public boolean onCommand( + CommandSender sender, + Command command, + String label, + String[] split + ) { + boolean rcon = !(sender instanceof Player); + Player targetPlayer = null; + + if(split.length == 0){ + if(!rcon){ + targetPlayer = (Player)sender; + }else{ + echoUsage(sender, rcon); + return true; //false; + } + }else if(split.length == 1){ + targetPlayer = _plugin.getServer().getPlayer(split[0]); + }else if(split.length > 1){ + echoUsage(sender, rcon); + return true; //false; + } + + if(targetPlayer == null){ + echoError(sender, rcon, "Can't find a player with that name"); + return true; + } + + int score = _plugin.getPlayerScore(targetPlayer); + + if(!rcon){ + if(sender == targetPlayer){ + targetPlayer.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] Your score is " + ChatColor.GREEN + score); + }else{ + sender.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] " + targetPlayer.getName() + "'s score is " + ChatColor.GREEN + score); + } + + return true; + }else{ + sender.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] " + targetPlayer.getName() + "'s score is " + ChatColor.GREEN + score); + return true; + } + } + + private void echoError(CommandSender sender, boolean rcon, String string) { + sender.sendMessage("[" + ChatColor.RED + "ScoreKeeper" + ChatColor.WHITE + "] " + string); + } + + private void echoUsage(CommandSender sender, boolean rcon) { + if(rcon){ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": score-get " + ChatColor.GREEN + ""); + }else{ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": /score-get " + ChatColor.YELLOW + "[playername]"); + } + + } +} diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreResetCommand.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreResetCommand.java new file mode 100644 index 0000000..169ac40 --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreResetCommand.java @@ -0,0 +1,76 @@ +package com.majinnaibu.bukkitplugins.scorekeeper.commands; + +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.majinnaibu.bukkitplugins.scorekeeper.ScoreKeeperPlugin; + +public class ScoreResetCommand implements CommandExecutor { + private final ScoreKeeperPlugin _plugin; + + public ScoreResetCommand(ScoreKeeperPlugin scoreKeeperPlugin) { + _plugin = scoreKeeperPlugin; + } + + @Override + public boolean onCommand( + CommandSender sender, + Command command, + String label, + String[] split + ) { + sender.sendMessage("[" + ChatColor.AQUA + "ScoreKeeper" + ChatColor.WHITE + "] archive command unimplemented "); + + boolean rcon = !(sender instanceof Player); + Player targetPlayer = null; + + if(split.length == 1){ + if(rcon){ + echoUsage(sender, rcon); + return true; + }else{ + targetPlayer = (Player)sender; + try{ + + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + } + }else if(split.length == 2){ + targetPlayer = _plugin.getServer().getPlayer(split[0]); + if(targetPlayer == null){ + echoError(sender, rcon, "Can't find a player with that name"); + return true; + } + + try{ + + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + }else{ + echoUsage(sender, rcon); + return true; + } + + _plugin.resetPlayerScore(targetPlayer); + return true; + } + + private void echoError(CommandSender sender, boolean rcon, String string) { + sender.sendMessage("[" + ChatColor.RED + "ScoreKeeper" + ChatColor.WHITE + "] " + string); + } + + private void echoUsage(CommandSender sender, boolean rcon) { + if(rcon){ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": score-reset " + ChatColor.GREEN + ""); + }else{ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": /score-reset " + ChatColor.YELLOW + "[playername]"); + } + } +} diff --git a/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreSubtractCommand.java b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreSubtractCommand.java new file mode 100644 index 0000000..bd97c0d --- /dev/null +++ b/src/main/java/com/majinnaibu/bukkitplugins/scorekeeper/commands/ScoreSubtractCommand.java @@ -0,0 +1,75 @@ +package com.majinnaibu.bukkitplugins.scorekeeper.commands; + +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.majinnaibu.bukkitplugins.scorekeeper.ScoreKeeperPlugin; + +public class ScoreSubtractCommand implements CommandExecutor { + private final ScoreKeeperPlugin _plugin; + + public ScoreSubtractCommand(ScoreKeeperPlugin scoreKeeperPlugin) { + _plugin = scoreKeeperPlugin; + } + + @Override + public boolean onCommand( + CommandSender sender, + Command command, + String label, + String[] split + ) { + boolean rcon = !(sender instanceof Player); + int amount = 0; + Player targetPlayer = null; + + if(split.length == 1){ + if(rcon){ + echoUsage(sender, rcon); + return true; + }else{ + targetPlayer = (Player)sender; + try{ + amount=Integer.parseInt(split[0]); + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + } + }else if(split.length == 2){ + targetPlayer = _plugin.getServer().getPlayer(split[0]); + if(targetPlayer == null){ + echoError(sender, rcon, "Can't find a player with that name"); + return true; + } + + try{ + amount = Integer.parseInt(split[1]); + }catch(NumberFormatException ex){ + echoError(sender, rcon, "amount must be an integer"); + return true; + } + }else{ + echoUsage(sender, rcon); + return true; + } + + _plugin.subtractScore(targetPlayer, amount); + return true; + } + + private void echoError(CommandSender sender, boolean rcon, String string) { + sender.sendMessage("[" + ChatColor.RED + "ScoreKeeper" + ChatColor.WHITE + "] " + string); + } + + private void echoUsage(CommandSender sender, boolean rcon) { + if(rcon){ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": score-subtract " + ChatColor.GREEN + " "); + }else{ + sender.sendMessage(ChatColor.DARK_PURPLE + "Usage" + ChatColor.WHITE + ": /score-subtract " + ChatColor.YELLOW + "[playername] " + ChatColor.GREEN + ""); + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..c894174 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,20 @@ +name: ScoreKeeper +main: com.majinnaibu.bukkit.plugins.scorekeeper.ScoreKeeperPlugin +version: 0.0a +commands: + score-get: + description: Displays the player's score. + usage: /score-get [playername] + score-add: + description: Adds point to the player's score. + usage: /score-add [playername] + score-subtract: + description: Subtracts points from the player's score. + usage: /score-subtract [playername] + score-reset: + description: Resets the player's score + usage: /score-reset [playername] + score-archive: + description: Archives and resets the player's score + usage: /score-archive [playername] + \ No newline at end of file