Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 11th, 2012  |  syntax: None  |  size: 26.40 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package kforte318.DRoller;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9. import java.util.logging.Logger;
  10. import java.util.*;
  11. import java.util.Map.Entry;
  12.  
  13. import javax.persistence.PersistenceException;
  14.  
  15. import com.nijiko.permissions.PermissionHandler;
  16. import com.nijikokun.bukkit.Permissions.Permissions;
  17. import org.bukkit.plugin.Plugin;
  18.  
  19. import org.bukkit.ChatColor;
  20. import org.bukkit.command.Command;
  21. import org.bukkit.command.CommandSender;
  22. import org.bukkit.entity.Player;
  23. import org.bukkit.plugin.java.JavaPlugin;
  24.  
  25. public class DRoller extends JavaPlugin {
  26.  
  27.         HashMap<String, Integer> difficultyClass = new HashMap<String, Integer>();
  28.         HashMap<String, Integer> playerHealth = new HashMap<String, Integer>();
  29.         HashMap<String, Integer> playerExperience = new HashMap<String, Integer>();
  30.  
  31.         Random randomGenerator = new Random();
  32.         public static PermissionHandler Permissions;
  33.         public Logger log = Logger.getLogger("Minecraft");
  34.  
  35.         private void setupDatabase() {
  36.                 try {
  37.                         getDatabase().find(PlayerSkillMods.class).findRowCount();
  38.                 } catch (PersistenceException ex) {
  39.                         System.out.println("[DnDCraft] Installing Skills database due to first time usage");
  40.                         installDDL();
  41.                 }
  42.         }
  43.  
  44.         private void createHealthFile() {
  45.  
  46.                 File healthFile = new File(getDataFolder() + "/playerhealth.txt");
  47.  
  48.                 if (!healthFile.exists()) {
  49.  
  50.                         new File(getDataFolder().toString()).mkdir();
  51.  
  52.                         try {
  53.                                 healthFile.createNewFile();
  54.                         }
  55.                         catch (IOException ex) {
  56.                                 System.out.println("You Dun Goofed!");
  57.                         }
  58.                 }      
  59.         }
  60.  
  61.         private void createExperienceFile() {
  62.  
  63.                 File expFile = new File(getDataFolder() + "/playerexp.txt");
  64.  
  65.                 if (!expFile.exists()) {
  66.  
  67.                         new File(getDataFolder().toString()).mkdir();
  68.  
  69.                         try {
  70.                                 expFile.createNewFile();
  71.                         }
  72.                         catch (IOException ex) {
  73.                                 System.out.println("You Dun Goofed!");
  74.                         }
  75.                 }      
  76.  
  77.         }
  78.  
  79.         private void saveToFileHealth() {
  80.                 BufferedWriter writer = null;
  81.                 try {
  82.                         writer = new BufferedWriter(new FileWriter(new File(getDataFolder(), "playerhealth.txt")));
  83.                         for (Entry<String, Integer> entry : playerHealth.entrySet()) {
  84.                                 writer.write(entry.getKey() + ";" + entry.getValue());
  85.                                 writer.newLine();
  86.                         }
  87.                 } catch (Exception e) {
  88.                         e.printStackTrace();
  89.                 } finally {
  90.                         if (writer != null) {
  91.                                 try {
  92.                                         writer.close();
  93.                                 } catch (IOException e) { }
  94.                         }
  95.                 }
  96.         }
  97.  
  98.         private void saveToFileExperience() {
  99.                 BufferedWriter writer = null;
  100.                 try {
  101.                         writer = new BufferedWriter(new FileWriter(new File(getDataFolder(), "playerexp.txt")));
  102.                         for (Entry<String, Integer> entry : playerExperience.entrySet()) {
  103.                                 writer.write(entry.getKey() + ";" + entry.getValue());
  104.                                 writer.newLine();
  105.                         }
  106.                 } catch (Exception e) {
  107.                         e.printStackTrace();
  108.                 } finally {
  109.                         if (writer != null) {
  110.                                 try {
  111.                                         writer.close();
  112.                                 } catch (IOException e) { }
  113.                         }
  114.                 }
  115.         }
  116.  
  117.         public void loadFromFileHealth() {
  118.                 BufferedReader reader = null;
  119.                 try {
  120.                         reader = new BufferedReader(new FileReader(new File(getDataFolder(), "playerhealth.txt")));
  121.                         String line = reader.readLine();
  122.                         while (line != null) {
  123.                                 String[] values = line.split(";");
  124.                                 if (values.length == 2) {
  125.                                         String player = values[0];
  126.                                         Integer health = Integer.parseInt(values[1]);
  127.                                         if (player != null) {
  128.                                                 playerHealth.put(player, health);
  129.                                         }
  130.                                 }
  131.                                 line = reader.readLine();
  132.                         }
  133.                         System.out.println("[DnDCraft] Player Health Values Loaded.");
  134.                 } catch (IOException e) { }
  135.         }
  136.  
  137.         public void loadFromFileExperience() {
  138.                 BufferedReader reader = null;
  139.                 try {
  140.                         reader = new BufferedReader(new FileReader(new File(getDataFolder(), "playerexp.txt")));
  141.                         String line = reader.readLine();
  142.                         while (line != null) {
  143.                                 String[] values = line.split(";");
  144.                                 if (values.length == 2) {
  145.                                         String player = values[0];
  146.                                         Integer exp = Integer.parseInt(values[1]);
  147.                                         if (player != null) {
  148.                                                 playerExperience.put(player, exp);
  149.                                         }
  150.                                 }
  151.                                 line = reader.readLine();
  152.                         }
  153.                         System.out.println("[DnDCraft] Player Experience Values Loaded.");
  154.                 } catch (IOException e) { }
  155.         }
  156.  
  157.         @Override
  158.         public void onDisable() {
  159.                 System.out.println("[DnDCraft] Disabled.");
  160.         }
  161.  
  162.         @Override
  163.         public void onEnable() {
  164.                 System.out.println("[DnDCraft] Enabled.");
  165.  
  166.                 setupPermissions();
  167.                 setupDatabase();
  168.                 createHealthFile();
  169.                 createExperienceFile();
  170.                 loadFromFileHealth();
  171.                 loadFromFileExperience();
  172.         }
  173.  
  174.         @Override
  175.  
  176.         public List<Class<?>> getDatabaseClasses(){
  177.                 List<Class<?>> classList = new ArrayList<Class<?>>();
  178.                 classList.add(PlayerSkillMods.class);
  179.                 System.out.println("[DnDCraft] Skills Loaded."); //experimental
  180.                 return classList;
  181.         }
  182.  
  183.         private void setupPermissions() {
  184.                 Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
  185.                 if (DRoller.Permissions == null) {
  186.                         if (test != null) {
  187.                                 DRoller.Permissions = ((Permissions)test).getHandler();
  188.                         } else {
  189.                                 log.info("Permission system not detected, defaulting to OP");
  190.                         }
  191.                 }
  192.         }
  193.  
  194.         public boolean onCommand(CommandSender sender, Command cmd, String commandlabel, String[] args) {
  195.                 if (sender instanceof Player) {
  196.                         Player player = (Player)sender;
  197.                         String commandname = cmd.getName().toLowerCase();
  198.  
  199.                         if (commandname.equalsIgnoreCase("roll")) {
  200.                                 if (args.length == 0) {
  201.                                         int sided = 20;
  202.                                         int result = 1 + randomGenerator.nextInt(sided);
  203.  
  204.                                         if (result == 20) {
  205.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  206.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.GOLD.toString() + "Natural 20!");   
  207.                                         }
  208.  
  209.                                         else if (result == 1) {
  210.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  211.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.DARK_RED.toString() + "Critical Fumble!");
  212.                                         }
  213.  
  214.                                         else
  215.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  216.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result);
  217.                                 }
  218.  
  219.                                 if (args.length == 1) {
  220.                                         int sided = Integer.parseInt(args[0]);
  221.                                         int result = 1 + randomGenerator.nextInt(sided);
  222.  
  223.                                         if (sided >= 101) {
  224.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll above a d100.");
  225.                                         }
  226.  
  227.                                         else if (sided <=1) {
  228.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll below a d2.");
  229.                                         }
  230.  
  231.                                         else {
  232.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  233.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result);
  234.                                         }
  235.                                 }
  236.  
  237.                                 if (args.length == 2) {
  238.                                         int sided = Integer.parseInt(args[0]);
  239.                                         int result = 1 + randomGenerator.nextInt(sided);
  240.                                         int modifierStatic = Integer.parseInt(args[1]);
  241.                                         int finalResult = result + modifierStatic;
  242.  
  243.                                         if (sided >= 101) {
  244.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll above a d100.");
  245.                                         }
  246.  
  247.                                         else if (sided <=1) {
  248.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll below a d2.");
  249.                                         }
  250.  
  251.                                         else {
  252.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  253.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result + ChatColor.YELLOW.toString() + " + "  
  254.                                                                 + modifierStatic +" (" + finalResult + ")");
  255.                                         }              
  256.                                 }
  257.                         }
  258.  
  259.                         if (commandname.equalsIgnoreCase("rollhide")) {
  260.  
  261.                                 if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  262.                                         player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  263.                                 }
  264.  
  265.                                 if (DRoller.Permissions.has(player, "DCraft.DM")) {
  266.  
  267.                                         if (args.length == 0) {
  268.                                                 int sided = 20;
  269.                                                 int result = 1 + randomGenerator.nextInt(sided);
  270.  
  271.                                                 if (result == 20) {
  272.                                                         player.sendMessage("[" + ChatColor.DARK_GRAY.toString() + "Hidden" + ChatColor.WHITE.toString() + "] " + "[" + ChatColor.AQUA.toString() + "d" + sided
  273.                                                                         + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString() + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a "
  274.                                                                         + ChatColor.GOLD.toString() + "Natural 20!");  
  275.                                                 }
  276.  
  277.                                                 else if (result == 1) {
  278.                                                         player.sendMessage("[" + ChatColor.DARK_GRAY.toString() + "Hidden" + ChatColor.WHITE.toString() + "] " + "[" + ChatColor.AQUA.toString() + "d" + sided
  279.                                                                         + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString() + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a "
  280.                                                                         + ChatColor.DARK_RED.toString() + "Critical Fumble!");
  281.                                                 }
  282.  
  283.                                                 else
  284.                                                         player.sendMessage("[" + ChatColor.DARK_GRAY.toString() + "Hidden" + ChatColor.WHITE.toString() + "] " + "[" + ChatColor.AQUA.toString() + "d" + sided
  285.                                                                         + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString() + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a "
  286.                                                                         + ChatColor.BLUE.toString() + result);
  287.                                         }
  288.  
  289.                                         if (args.length == 1) {
  290.                                                 int sided = Integer.parseInt(args[0]);
  291.                                                 int result = 1 + randomGenerator.nextInt(sided);
  292.  
  293.                                                 if (sided >= 101) {
  294.                                                         player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll above a d100.");
  295.                                                 }
  296.  
  297.                                                 else if (sided <=1) {
  298.                                                         player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you can't roll below a d2.");
  299.                                                 }
  300.  
  301.                                                 else {
  302.                                                         player.sendMessage("[" + ChatColor.AQUA.toString() + "Hidden" + ChatColor.WHITE.toString() + "] " + "[" + ChatColor.AQUA.toString() + "d" + sided
  303.                                                                         + ChatColor.WHITE.toString() + "] " + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result);      
  304.                                                 }
  305.                                         }
  306.                                 }
  307.                         }
  308.  
  309.  
  310.                         if (commandname.equalsIgnoreCase("skill")) {
  311.  
  312.                                 if (args.length == 1 || args.length == 2) {
  313.  
  314.                                         String skill = args[0];
  315.                                         skill = skill.toLowerCase();
  316.                                         int mod = 0;
  317.                                         PlayerSkillMods modifier = this.getDatabase().find(PlayerSkillMods.class).where().ieq("playerName",player.getName()).ieq("skillName", skill).findUnique();
  318.  
  319.                                         if (args.length != 1)
  320.                                         {
  321.                                                 try
  322.                                                 {
  323.                                                         mod = Integer.parseInt(args[1]);
  324.                                                 }
  325.                                                 catch (NumberFormatException e)
  326.                                                 {
  327.                                                         player.sendMessage(ChatColor.RED.toString() + "Invalid Modifier Value!");
  328.                                                         return true;
  329.                                                 }      
  330.  
  331.                                         }
  332.  
  333.                                         if (modifier == null) {
  334.                                                 modifier = new PlayerSkillMods();
  335.                                                 modifier.setPlayerName(player.getName());
  336.                                                 modifier.setSkillName(skill);
  337.                                         }
  338.  
  339.                                         modifier.setSkillMod(mod);      
  340.                                         this.getDatabase().save(modifier);
  341.  
  342.                                         player.sendMessage(ChatColor.BLUE.toString() + "You have set skill " + ChatColor.RED.toString() + skill + ChatColor.BLUE.toString() + "'s modifier to "
  343.                                                         + ChatColor.YELLOW.toString() + mod);
  344.  
  345.                                 }
  346.                         }
  347.  
  348.                         if (commandname.equalsIgnoreCase("healthset")) {
  349.                                 if (args.length == 1) {
  350.  
  351.                                         String playerName = player.getName();
  352.                                         int health = Integer.parseInt(args[0]);
  353.  
  354.                                         playerHealth.put(playerName, health);
  355.                                         saveToFileHealth();
  356.  
  357.                                         player.sendMessage(ChatColor.BLUE.toString() + "Your health has been set to " + ChatColor.GREEN + health);
  358.  
  359.                                         for (Player player2 : getServer().getOnlinePlayers()) {
  360.                                                 if (player2 != player) {
  361.                                                         if (DRoller.Permissions.has(player2, "DCraft.DM")) {
  362.                                                                 player2.sendMessage(ChatColor.YELLOW + playerName + ChatColor.BLUE.toString() + " has set their health to " + ChatColor.GREEN + health);
  363.                                                         }
  364.                                                 }
  365.                                         }
  366.                                 }
  367.  
  368.                                 if (args.length == 2) {
  369.  
  370.                                         if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  371.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  372.                                         }
  373.  
  374.                                         if (DRoller.Permissions.has(player, "DCraft.DM")) {
  375.  
  376.                                                 String playerName = args[1];
  377.                                                 int health = Integer.parseInt(args[0]);
  378.  
  379.                                                 playerHealth.put(playerName, health);
  380.                                                 saveToFileHealth();
  381.  
  382.                                                 sender.sendMessage(ChatColor.BLUE.toString() + "You have set " + ChatColor.YELLOW.toString() + playerName + "'s " + ChatColor.BLUE.toString()
  383.                                                                 + "health to " + ChatColor.GREEN + health);
  384.  
  385.                                                 getServer().getPlayer(playerName).sendMessage(ChatColor.BLUE.toString() + "Your health has been set to " + ChatColor.GREEN + health
  386.                                                                 + ChatColor.BLUE.toString() + " by " + ChatColor.YELLOW + sender);
  387.                                         }
  388.                                 }
  389.                         }
  390.  
  391.                         if (commandname.equalsIgnoreCase("health")) {
  392.                                 if (args.length == 1) {
  393.  
  394.                                         String playerName = player.getName();
  395.                                         int healthMod = Integer.parseInt(args[0]);
  396.                                         int healthCurrent = playerHealth.get(playerName);
  397.                                         int healthNew = healthCurrent + healthMod;
  398.  
  399.                                         playerHealth.put(playerName, healthNew);
  400.                                         saveToFileHealth();
  401.  
  402.                                         if (healthMod < 0) {
  403.                                                 if (healthNew > 0) {
  404.                                                         player.sendMessage(ChatColor.BLUE.toString() + "You took " + ChatColor.RED + Math.abs(healthMod) + ChatColor.BLUE.toString()
  405.                                                                         + " points of damage!" + ChatColor.WHITE + " [" + ChatColor.RED + healthNew + ChatColor.WHITE + "]");
  406.                                                 }
  407.                                                 if (healthNew == 0) {
  408.                                                         player.sendMessage(ChatColor.BLUE.toString() + "You took " + ChatColor.RED + Math.abs(healthMod) + ChatColor.BLUE.toString()
  409.                                                                         + " points of damage and are " + ChatColor.RED + "downed!" + ChatColor.WHITE + " [" + ChatColor.RED + healthNew + ChatColor.WHITE + "]");
  410.                                                 }
  411.                                                 if (healthNew < 0 && healthNew > -10) {
  412.                                                         player.sendMessage(ChatColor.BLUE.toString() + "You took " + ChatColor.RED + Math.abs(healthMod) + ChatColor.BLUE.toString()
  413.                                                                         + " points of damage and are " + ChatColor.DARK_RED + "unconscious!" + ChatColor.WHITE + " [" + ChatColor.DARK_RED + healthNew + ChatColor.WHITE + "]");
  414.                                                 }
  415.                                                 if (healthNew <= -10) {
  416.                                                         player.sendMessage(ChatColor.BLUE.toString() + "You took " + ChatColor.RED + Math.abs(healthMod) + ChatColor.BLUE.toString()
  417.                                                                         + " points of damage and are " + ChatColor.DARK_GRAY + "dead!" + ChatColor.WHITE + " [" + ChatColor.DARK_GRAY + healthNew + ChatColor.WHITE + "]");
  418.                                                 }
  419.                                         }
  420.  
  421.                                         if (healthMod > 0) {
  422.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You gained " + ChatColor.GREEN + healthMod + ChatColor.BLUE.toString() + " health points!"
  423.                                                                 + ChatColor.WHITE + " [" + ChatColor.GREEN + healthNew + ChatColor.WHITE + "]");
  424.                                         }
  425.                                 }
  426.                         }
  427.  
  428.                         if (commandname.equalsIgnoreCase("healthcheck")) {
  429.  
  430.                                 if (args.length == 0) {
  431.                                         String playerName = player.getName();
  432.                                         int health = playerHealth.get(playerName);
  433.  
  434.                                         if (health >= 6) {
  435.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.GREEN + health + ChatColor.BLUE + " health points.");
  436.                                         }
  437.                                         if (health <= 5 && health >= 1) {
  438.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.RED + health + ChatColor.BLUE + " health points.");
  439.                                         }
  440.                                         if (health <= 0 && health >= -9) {
  441.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.DARK_RED + health + ChatColor.BLUE + " health points.");
  442.                                         }
  443.                                         if (health <= -10) {
  444.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.DARK_GRAY + health + ChatColor.BLUE + " health points.");
  445.                                         }
  446.                                 }
  447.  
  448.                                 if (args.length == 1) {
  449.                                         if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  450.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  451.                                         }
  452.  
  453.                                         if (DRoller.Permissions.has(player, "DCraft.DM")) {
  454.  
  455.                                                 String playerName = args[1];
  456.                                                 int health = playerHealth.get(playerName);
  457.  
  458.                                                 if (health >= 6) {
  459.                                                         player.sendMessage(ChatColor.YELLOW + playerName + ChatColor.BLUE + " has " + ChatColor.GREEN + health + ChatColor.BLUE + " health points.");
  460.                                                 }
  461.                                                 if (health <= 5 && health >= 1) {
  462.                                                         player.sendMessage(ChatColor.YELLOW + playerName + ChatColor.BLUE + " has " + ChatColor.RED + health + ChatColor.BLUE + " health points.");
  463.                                                 }
  464.                                                 if (health <= 0 && health >= -9) {
  465.                                                         player.sendMessage(ChatColor.YELLOW + playerName + ChatColor.BLUE + " has " + ChatColor.DARK_RED + health + ChatColor.BLUE + " health points.");
  466.                                                 }
  467.                                                 if (health <= -10) {
  468.                                                         player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.DARK_GRAY + health + ChatColor.BLUE + " health points.");
  469.                                                 }
  470.                                         }
  471.                                 }
  472.                         }
  473.  
  474.                         if (commandname.equalsIgnoreCase("expset")) {
  475.  
  476.                                 if (args.length == 2) {
  477.  
  478.                                         if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  479.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  480.                                         }
  481.  
  482.                                         if (DRoller.Permissions.has(player, "DCraft.DM")) {
  483.  
  484.                                                 String playerName = args[0];
  485.                                                 int exp = Integer.parseInt(args[1]);
  486.  
  487.                                                 playerExperience.put(playerName, exp);
  488.                                                 saveToFileExperience();
  489.  
  490.                                                 sender.sendMessage(ChatColor.BLUE.toString() + "You have set " + ChatColor.YELLOW.toString() + playerName + "'s " + ChatColor.BLUE
  491.                                                                 + "experience to " + ChatColor.AQUA + exp);
  492.  
  493.                                                 getServer().getPlayer(playerName).sendMessage(ChatColor.BLUE.toString() + "Your experience has been set to " + ChatColor.AQUA + exp);
  494.                                         }
  495.                                 }
  496.                         }
  497.  
  498.                         if (commandname.equalsIgnoreCase("exp")) {
  499.                                 if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  500.                                         if (args.length == 2) {
  501.  
  502.                                                 String playerName = (args[0]);
  503.                                                 int expMod = Integer.parseInt(args[1]);
  504.                                                 int expCurrent = playerExperience.get(playerName);
  505.                                                 int expNew = expCurrent + expMod;
  506.  
  507.                                                 playerExperience.put(playerName, expNew);
  508.                                                 saveToFileExperience();
  509.  
  510.                                                 if (expMod < 0) {
  511.                                                         getServer().getPlayer(playerName).sendMessage(ChatColor.BLUE.toString() + "You lost " + ChatColor.RED + Math.abs(expMod) + ChatColor.BLUE.toString()
  512.                                                                         + " experience points!" + ChatColor.WHITE + " [" + ChatColor.AQUA + expNew + ChatColor.WHITE + "]");
  513.                                                         sender.sendMessage(ChatColor.BLUE.toString() + "You have taken " + ChatColor.RED + Math.abs(expMod) + ChatColor.BLUE + " points of experience from "
  514.                                                                         + ChatColor.YELLOW + playerName + ChatColor.WHITE + " [" + ChatColor.AQUA + expNew + ChatColor.WHITE + "]");
  515.                                                 }
  516.  
  517.                                                 if (expMod > 0) {
  518.                                                         getServer().getPlayer(playerName).sendMessage(ChatColor.BLUE.toString() + "You gained " + ChatColor.GREEN + expMod + ChatColor.BLUE.toString() + " health points!"
  519.                                                                         + ChatColor.WHITE + " [" + ChatColor.AQUA + expNew + ChatColor.WHITE + "]");
  520.                                                         sender.sendMessage(ChatColor.BLUE.toString() + "You have given " + ChatColor.GREEN + Math.abs(expMod) + ChatColor.BLUE + " points of experience to "
  521.                                                                         + ChatColor.YELLOW + playerName + ChatColor.WHITE + " [" + ChatColor.AQUA + expNew + ChatColor.WHITE + "]");
  522.                                                 }
  523.                                         }
  524.                                 }
  525.                         }
  526.  
  527.                         if (commandname.equalsIgnoreCase("expcheck")) {
  528.  
  529.                                 if (args.length == 0) {
  530.                                         String playerName = player.getName();
  531.                                         int exp = playerExperience.get(playerName);
  532.  
  533.                                         player.sendMessage(ChatColor.BLUE.toString() + "You have " + ChatColor.AQUA + exp + ChatColor.BLUE + " experience points.");
  534.                                 }
  535.  
  536.                                 if (args.length == 1) {
  537.                                         if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  538.                                                 player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  539.                                         }
  540.  
  541.                                         if (DRoller.Permissions.has(player, "DCraft.DM")) {
  542.                                                 String playerName = args[1];
  543.                                                 int exp = playerExperience.get(playerName);
  544.  
  545.                                                 player.sendMessage(ChatColor.YELLOW + playerName + ChatColor.BLUE + " has " + ChatColor.AQUA + exp + ChatColor.BLUE + " experience points.");
  546.                                         }
  547.                                 }
  548.                         }
  549.  
  550.                         if (commandname.equalsIgnoreCase("rollskill")) {
  551.  
  552.                                 if (args.length == 1) {
  553.  
  554.                                         int sided = 20;
  555.                                         int mod = 0;
  556.                                         int result = 1 + randomGenerator.nextInt(sided);
  557.  
  558.                                         String skill = args[0];
  559.                                         skill = skill.toLowerCase();
  560.                                         PlayerSkillMods modifier = this.getDatabase().find(PlayerSkillMods.class).where().ieq("playerName",player.getName()).ieq("skillName", skill).findUnique();
  561.                                         int diffClass = difficultyClass.get(skill);
  562.  
  563.                                         if (modifier != null) {
  564.                                                 mod = modifier.getSkillMod();
  565.                                         }
  566.  
  567.                                         int finalResult = result + mod;
  568.  
  569.                                         if (result == 20) {
  570.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + skill.toUpperCase() + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  571.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.GOLD.toString() + "Natural 20!");   
  572.                                         }
  573.  
  574.                                         else if (result == 1) {
  575.                                                 getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + skill.toUpperCase() + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  576.                                                                 + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.DARK_RED.toString() + "Critical Fumble!");
  577.                                         }
  578.  
  579.                                         else {
  580.                                                 if (difficultyClass.containsKey(skill)) {
  581.                                                         if (difficultyClass.get(skill) != 0) {
  582.                                                                 if (finalResult >= diffClass) {
  583.                                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + skill.toUpperCase() + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  584.                                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result + " + " + mod
  585.                                                                                         + ChatColor.YELLOW.toString() + " (" + finalResult + ")" + ChatColor.WHITE + " [" + ChatColor.GOLD + "PASS" + ChatColor.WHITE + "]");
  586.                                                                 }
  587.  
  588.                                                                 if (finalResult < diffClass) {
  589.                                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + skill.toUpperCase() + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  590.                                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result + " + " + mod
  591.                                                                                         + ChatColor.YELLOW.toString() + " (" + finalResult + ")" + ChatColor.WHITE + " [" + ChatColor.DARK_RED + "FAIL" + ChatColor.WHITE + "]");
  592.                                                                 }
  593.                                                         }      
  594.                                                 }
  595.  
  596.                                                 if (!difficultyClass.containsKey(skill)) {
  597.                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + skill.toUpperCase() + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  598.                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result + " + " + mod
  599.                                                                         + ChatColor.YELLOW.toString() + " (" + finalResult + ")");
  600.                                                 }
  601.                                         }
  602.                                 }
  603.                         }
  604.  
  605.                         if (commandname.equalsIgnoreCase("skilldc")) {
  606.                                 if (!DRoller.Permissions.has(player, "DCraft.DM")) {
  607.                                         player.sendMessage(ChatColor.LIGHT_PURPLE.toString() + "Sorry, you don't have the permission to access this command!");
  608.                                 }
  609.  
  610.                                 if (DRoller.Permissions.has(player, "DCraft.DM")) {
  611.  
  612.                                         if (args.length == 2) {
  613.                                                 String skillName = args[0];
  614.                                                 skillName = skillName.toLowerCase();
  615.                                                 int skillDC = Integer.parseInt(args[1]);
  616.                                                 difficultyClass.put(skillName, skillDC);
  617.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have set skill " + ChatColor.RED.toString() + skillName + ChatColor.BLUE.toString() + "'s DC to "
  618.                                                                 + ChatColor.YELLOW.toString() + skillDC);
  619.                                         }
  620.  
  621.                                         if (args.length == 1) {
  622.                                                 String skillName = args[0];
  623.                                                 skillName = skillName.toLowerCase();
  624.                                                 int skillDC = 0;
  625.                                                 difficultyClass.put(skillName, skillDC);
  626.                                                 player.sendMessage(ChatColor.BLUE.toString() + "You have disabled skill " + ChatColor.RED.toString() + skillName + ChatColor.BLUE.toString() + "'s DC");
  627.  
  628.                                         }
  629.                                 }
  630.                         }
  631.  
  632.                         if (commandname.equalsIgnoreCase("rollmult")) {
  633.  
  634.                                 if (args.length == 1) {
  635.                                         int sided = 20;
  636.                                         int sets = Integer.parseInt(args[0]);
  637.  
  638.                                         for (int i=0; i<sets; i++) {
  639.                                                 int result = 1 + randomGenerator.nextInt(sided);
  640.  
  641.                                                 if (result == 20) {
  642.                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  643.                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.GOLD.toString() + "Natural 20!");   
  644.                                                 }
  645.  
  646.                                                 else if (result == 1) {
  647.                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  648.                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.DARK_RED.toString() + "Critical Fumble!");
  649.                                                 }
  650.  
  651.                                                 else
  652.                                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  653.                                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a " + ChatColor.BLUE.toString() + result);
  654.  
  655.                                         }
  656.                                 }
  657.  
  658.                                 if (args.length == 2) {
  659.                                         int sided = Integer.parseInt(args[1]);
  660.                                         int sets = Integer.parseInt(args[0]);
  661.                                         int[] rollResults;
  662.                                         rollResults = new int[sets];
  663.                                         int rollSum = 0;
  664.  
  665.                                         for (int i=0; i<sets; i++) {
  666.                                                 rollResults[i] = 1 + randomGenerator.nextInt(sided);
  667.                                                 rollSum += rollResults[i];
  668.                                         }
  669.  
  670.                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + sets + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  671.                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a total of " + ChatColor.BLUE.toString() + rollSum);
  672.                                 }
  673.  
  674.                                 if (args.length == 3) {
  675.                                         int sided = Integer.parseInt(args[1]);
  676.                                         int sets = Integer.parseInt(args[0]);
  677.                                         int[] rollResults;
  678.                                         rollResults = new int[sets];
  679.                                         int rollSum = 0;
  680.  
  681.                                         for (int i=0; i<sets; i++) {
  682.                                                 rollResults[i] = 1 + randomGenerator.nextInt(sided);
  683.                                                 rollSum += rollResults[i];     
  684.                                         }
  685.  
  686.                                         int modifierStatic = Integer.parseInt(args[2]);
  687.                                         int finalResult = rollSum + modifierStatic;
  688.                                         getServer().broadcastMessage("[" + ChatColor.AQUA.toString() + sets + "d" + sided + ChatColor.WHITE.toString() + "] " + ChatColor.BLUE.toString()
  689.                                                         + ((Player)sender).getName() + ChatColor.RED.toString() + " rolled a total of " + ChatColor.BLUE.toString() + rollSum + ChatColor.YELLOW.toString()
  690.                                                         + " + " +  + modifierStatic + " (" + finalResult + ")");
  691.                                 }
  692.                         }
  693.                 }
  694.                 return false;
  695.         }
  696. }