I need help with configuration

Discussion in 'Plugin Development' started by beatcomet, Jul 14, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    beatcomet

    Hi guys, I need some help here,
    I need help checking if a config node exists, but I have no idea how (I'm not using fixed nodes, I depands on the command executer).
    If it's better to use anything other that a config file just tell me :)
    Here is how I need it to work :

    1. A player uses a command
    2. Check if the node exists, if not set a node with the player's name with a value of 1.

    This is it, the rest should be easy to do.

    thanks guys :)
     
  2. Offline

    ItsHarry

    Use a hashmap.

    HashMap<player, boolean> hashmap = new HashMap<player, boolean>();
    hasmap.put(player, true); //Puts the value true for the player in the hashmap

    if (hashmap.get(player)) { //returns true if value is "true" for the player
    //stuff
    }
     
  3. Offline

    beatcomet

    How do I check if player exists in the hasmap?
     
  4. Offline

    ItsHarry

    if (hashmap.get(player) == null) { //The get method returns null if the player is not in there
     
  5. Offline

    Hretsam

    Something like (for a yml configuration):
    Code:
    if (config.getString("node", null) == null){
                config.setProperty("node", "1");
    }
    
     
  6. Offline

    beatcomet

    Can I do something like this :

    Code:java
    1.  
    2. HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
    3. String name = player.getName();
    4.  
    5.  
    6. if(hashmap.get(name) == null
    7. {
    8. hashmap.put(name, 1)
    9. }
    10. if(hashmap.get(name) == 1)
    11. {
    12. player.sendMessage("you can do it")
    13. hashmap.put(name, 0);
    14. }
    15. if(hashmap.get(name) == 0)
    16. {
    17. player.sendMessage("you cannot use it any more")
    18. }
    19.  
     
  7. Offline

    Hretsam

    why not use "hashmap.containsKey(name);" ?
     
  8. Offline

    beatcomet

    should I use instead of using the null check?
     
  9. Offline

    Hretsam

    Yes
     
  10. Yes, it's better ;)
     
  11. Offline

    ItsHarry

    Oops, yes. containsKey is better :D
     
  12. Offline

    beatcomet

    Need help here, I'm trying to make something but it's not working...
    I'm trying to limit the amount of times a player can redeem a code buy using the HashMap, but It allows me to redeem it just once no matter what I do.

    Code:java
    1. package me.beatcomet.RC;
    2.  
    3. import java.io.File;
    4. import java.util.HashMap;
    5. import java.util.Random;
    6. import java.util.logging.Logger;
    7.  
    8. import org.bukkit.ChatColor;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.inventory.ItemStack;
    13. import org.bukkit.plugin.PluginDescriptionFile;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15. import org.bukkit.util.config.Configuration;
    16.  
    17. import com.nijiko.permissions.PermissionHandler;
    18. import com.nijikokun.bukkit.Permissions.Permissions;
    19. import org.bukkit.plugin.Plugin;
    20.  
    21. public class RC extends JavaPlugin{
    22.  
    23.  
    24. Logger log = Logger.getLogger("Minecraft");
    25. File configFile = new File("plugins/" + "RC" + "/codes.xD1");
    26. Configuration config = new Configuration(configFile);
    27. HashMap<Player, Integer> hashmap = new HashMap<Player, Integer>();
    28.  
    29.  
    30. public static PermissionHandler permissionHandler;
    31.  
    32.  
    33. private void setupPermissions() {
    34. if (permissionHandler != null) {
    35. return;
    36. }
    37.  
    38. Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions");
    39.  
    40. if (permissionsPlugin == null) {
    41. log.info("Permission system not detected, defaulting to OP");
    42. return;
    43. }
    44.  
    45. permissionHandler = ((Permissions) permissionsPlugin).getHandler();
    46. log.info("Found and will use plugin "+((Permissions)permissionsPlugin).getDescription().getFullName());
    47. }
    48.  
    49.  
    50. public void onDisable(){
    51. PluginDescriptionFile pdf = this.getDescription();
    52. log.info(pdf.getName() + " Version " + pdf.getVersion() + " is DISABLED!");
    53. }
    54.  
    55. public void onEnable(){
    56. PluginDescriptionFile pdf = this.getDescription();
    57. log.info(pdf.getName() + " Version " + pdf.getVersion() + " is ENABLED!");
    58. setupPermissions();
    59.  
    60. new File("plugins/" + "RC").mkdir();
    61. if (!configFile.exists()) {
    62. try {
    63. configFile.createNewFile();
    64.  
    65. } catch (Exception e) {
    66. // sending console message in case the data file could not be
    67. // created
    68. log.info("[RC] Error when creating data file.");
    69. }
    70. }
    71. // Loading data file
    72. config.load();
    73. if(config.getKeys("props")== null){
    74. config.setProperty("props.lng", 8);
    75. config.setProperty("props.max", 1);
    76. }
    77. config.save();
    78. }
    79.  
    80. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    81. if(!(sender instanceof Player)){
    82. log.info("You cannot reddem or set codes using console commands!");
    83. return true;
    84. }
    85. if(sender instanceof Player){
    86. Player p = (Player) sender;
    87. String type;
    88. String amount;
    89. String name;
    90. String max;
    91. int lngg = (Integer) config.getProperty("props.lng");
    92. if(commandLabel.equalsIgnoreCase("code") && args.length == 5 && RC.permissionHandler.has(p, "code.set")){
    93. if(args[0].equalsIgnoreCase("set")){
    94. name = args[1];
    95. type = args[2];
    96. amount = args[3];
    97. max = args[4];
    98. config.setProperty(name + "." + "id", Integer.parseInt(type));
    99. config.setProperty(name + "." + "amount", Integer.parseInt(amount));
    100. config.setProperty(name + "." + "Uses left", Integer.parseInt(max));
    101. config.save();
    102. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + name + ChatColor.AQUA + " Has Beed Added To The Code List!");
    103. }return true;
    104. }if(commandLabel.equalsIgnoreCase("code") && args.length == 2 && args[0].equalsIgnoreCase("max") && RC.permissionHandler.has(p, "code.max")){
    105. config.setProperty("props.max", Integer.parseInt(args[1]) );
    106. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + "Max amount of uses per player" + ChatColor.AQUA + " Has Beed Set to " + (args[1]) + "!");
    107. config.save();
    108. }
    109. if(commandLabel.equalsIgnoreCase("code") && args.length == 1 && args[0].equalsIgnoreCase("generate") && RC.permissionHandler.has(p, "code.generate")){
    110. Random rand = new Random();
    111. int gid;
    112. int gamount = rand.nextInt(20)+1;
    113. int gmax = rand.nextInt(12 - 5 +1) + 5;
    114. String gname = "";
    115. String iletter = "";
    116. int letter;
    117.  
    118. while (gname.length() < lngg){
    119. letter = rand.nextInt(36-1+1)+1;
    120. switch (letter){
    121. case 1:
    122. iletter = "A";
    123. break;
    124. case 2:
    125. iletter = "B";
    126. break;
    127. case 3:
    128. iletter = "C";
    129. break;
    130. case 4:
    131. iletter = "D";
    132. break;
    133. case 5:
    134. iletter = "E";
    135. break;
    136. case 6:
    137. iletter = "F";
    138. break;
    139. case 7:
    140. iletter = "G";
    141. break;
    142. case 8:
    143. iletter = "H";
    144. break;
    145. case 9:
    146. iletter = "I";
    147. break;
    148. case 10:
    149. iletter = "J";
    150. break;
    151. case 11:
    152. iletter = "K";
    153. break;
    154. case 12:
    155. iletter = "L";
    156. break;
    157. case 13:
    158. iletter = "M";
    159. break;
    160. case 14:
    161. iletter = "N";
    162. break;
    163. case 15:
    164. iletter = "O";
    165. break;
    166. case 16:
    167. iletter = "P";
    168. break;
    169. case 17:
    170. iletter = "Q";
    171. break;
    172. case 18:
    173. iletter = "R";
    174. break;
    175. case 19:
    176. iletter = "S";
    177. break;
    178. case 20:
    179. iletter = "T";
    180. break;
    181. case 21:
    182. iletter = "U";
    183. break;
    184. case 22:
    185. iletter = "V";
    186. break;
    187. case 23:
    188. iletter = "W";
    189. break;
    190. case 24:
    191. iletter = "X";
    192. break;
    193. case 25:
    194. iletter = "Y";
    195. break;
    196. case 26:
    197. iletter = "Z";
    198. break;
    199. case 27:
    200. iletter = "1";
    201. break;
    202. case 28:
    203. iletter = "2";
    204. break;
    205. case 29:
    206. iletter = "3";
    207. break;
    208. case 30:
    209. iletter = "4";
    210. break;
    211. case 31:
    212. iletter = "5";
    213. break;
    214. case 32:
    215. iletter = "6";
    216. break;
    217. case 33:
    218. iletter = "7";
    219. break;
    220. case 34:
    221. iletter = "8";
    222. break;
    223. case 35:
    224. iletter = "9";
    225. break;
    226. case 36:
    227. iletter = "-";
    228. break;
    229. }
    230. gname = gname + iletter;
    231. }
    232.  
    233. int istype = rand.nextInt(4);
    234. if(istype == 1){
    235. gid = rand.nextInt(98);
    236. switch (gid){
    237. case 8:
    238. case 9:
    239. case 10:
    240. case 11:
    241. case 26:
    242. case 18:
    243. case 7:
    244. case 31:
    245. case 34:
    246. case 30:
    247. case 52:
    248. case 51:
    249. case 46:
    250. case 36:
    251. case 54:
    252. case 55:
    253. case 58:
    254. case 61:
    255. case 62:
    256. case 63:
    257. case 64:
    258. case 68:
    259. case 71:
    260. case 73:
    261. case 74:
    262. case 75:
    263. case 78:
    264. case 79:
    265. case 16:
    266. case 95:
    267. case 90:
    268. case 93:
    269. case 94:
    270. gid = 1;
    271. break;
    272. }
    273. config.setProperty(gname+"."+"id", gid);
    274. config.setProperty(gname+"."+"amount", gamount);
    275. config.setProperty(gname+"."+"Uses left", gmax);
    276. config.save();
    277. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + gname + ChatColor.AQUA + " Has Been generated!");
    278. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + config.getProperty(gname+"."+"Uses left") + ChatColor.AQUA + " Uses left!");
    279.  
    280. }if(istype == 2){
    281. gid = rand.nextInt(359-256 +1) + (256);
    282. switch (gid){
    283. case 327:
    284. gid = gid-1;
    285. break;
    286. }
    287. config.setProperty(gname+"."+"id", gid);
    288. config.setProperty(gname+"."+"amount", gamount);
    289. config.setProperty(gname+"."+"Uses left", gmax);
    290. config.save();
    291. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + gname + ChatColor.AQUA + " Has Been genrated!");
    292. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + config.getProperty(gname+"."+"Uses left") + ChatColor.AQUA + " Uses left!");
    293.  
    294. }if(istype == 3){
    295. gid = rand.nextInt(2257 - 2256 + 1) + (2256);
    296. config.setProperty(gname+"."+"id", gid);
    297. config.setProperty(gname+"."+"amount", gamount);
    298. config.setProperty(gname+"."+"Uses left", gmax);
    299. config.save();
    300. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + gname + ChatColor.AQUA + " Has Been genrated!");
    301. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + config.getProperty(gname+"."+"Uses left") + ChatColor.AQUA + " Uses left!");
    302.  
    303.  
    304. }return true;
    305. }
    306. if(commandLabel.equalsIgnoreCase("code") && args.length == 2 && RC.permissionHandler.has(p, "code.status") && args[0].equalsIgnoreCase("status")){
    307. name = args[1];
    308. if(config.getProperty(name+"."+"Uses left") == null){
    309. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " No such code found");
    310. }else{
    311. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + name + ChatColor.AQUA + " Can be redeemed " + config.getProperty(name+"."+"Uses left") + " more Times!" );
    312. }return true;
    313. }
    314. if(commandLabel.equalsIgnoreCase("lng") && args.length == 1 && RC.permissionHandler.has(p, "code.lenght")){
    315. config.setProperty("props.lng", Integer.parseInt(args[0]));
    316. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + "Changed Length To " + ChatColor.DARK_PURPLE + args[0]);
    317. return true;
    318. }
    319. if(commandLabel.equalsIgnoreCase("redeem")){
    320. String code = args[0];
    321. if(args.length == 0){
    322. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " No code inserted!");
    323. }
    324. if(config.getKeys(code.toUpperCase()) == null){
    325. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " Invalid code inserted!");
    326. return true;
    327. }
    328. if((Integer)config.getProperty(code.toUpperCase()+"."+"Uses left") == 0){
    329. this.config.removeProperty(code.toUpperCase()+"."+"Uses left");
    330. this.config.removeProperty(code.toUpperCase()+"."+"id");
    331. this.config.removeProperty(code.toUpperCase()+"."+"amount");
    332. }
    333. if(args.length > 1){
    334. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " Invalid code inserted!");
    335. }
    336. if(args.length == 1){
    337.  
    338. if(config.getKeys(code) == null || config.getProperty(code+"."+"id") == null || config.getProperty(code+"."+"amount") == null || config.getProperty(code+"."+"Uses left") == null ){
    339. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + "No such code found");
    340. }else{
    341. if(!(hashmap.containsKey(p))){
    342. hashmap.put(p, (Integer) config.getProperty("props.max"));
    343. }
    344. if(hashmap.get(p) >= 1){
    345. int amnt = (Integer) config.getProperty(code.toUpperCase() + "." + "id");
    346. int typeid = (Integer) config.getProperty(code.toUpperCase() + "." + "amount");
    347. int usesleft = (Integer) config.getProperty(code.toUpperCase() + "." + "Uses left");
    348. if(usesleft == 0){
    349. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + args[0] + " Fully used");
    350. }if(usesleft < 0){
    351. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + args[0] + " Fully used");
    352. config.setProperty(code + "." + "Uses left", 0);
    353. }
    354. p.getInventory().addItem(new ItemStack(amnt, typeid));
    355. hashmap.put(p, (Integer)config.getProperty("props.max") - 1);
    356. config.setProperty(code + "." + "Uses left", usesleft - 1);
    357. config.save();
    358. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + args[0] + ChatColor.AQUA + " Redeemed!");
    359. p.sendMessage(ChatColor.DARK_PURPLE + "[RC] " + ChatColor.GREEN + config.getProperty(args[0]+"."+"Uses left") + ChatColor.AQUA + " Uses left!");
    360. return true;
    361. }
    362. if(hashmap.get(p) <= 0){
    363. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " You have already got your item!");
    364. }
    365. }
    366. }return true;
    367. }if(commandLabel.equalsIgnoreCase("code") && args.length == 2 && RC.permissionHandler.has(p, "code.remove")){
    368. if(args[0].equalsIgnoreCase("Remove")){
    369. String key = args[1];
    370. if(config.getKeys(key) != null){
    371. config.removeProperty(args[1]+"."+"amount");
    372. config.removeProperty(args[1]+"."+"id");
    373. config.save();
    374. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.GREEN + key + ChatColor.AQUA + " Removed!");
    375. }
    376. if(config.getKeys(key) == null){
    377. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.GREEN + key + ChatColor.AQUA + " Does Not Exist!");
    378. }
    379. }return true;
    380. }
    381. if(args.length == 2 && commandLabel.equalsIgnoreCase("code") && args[0].equalsIgnoreCase("set")){
    382. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " Invalid command!");
    383. return true;
    384. }if (args.length != 5 && args.length !=2 && commandLabel.equalsIgnoreCase("code") && !(args[0].equalsIgnoreCase("generate"))){
    385. p.sendMessage(ChatColor.DARK_PURPLE + "[RC]" + ChatColor.RED + " Invalid command!");
    386. }return true;
    387. }
    388. return false;
    389. }
    390. }
     
Thread Status:
Not open for further replies.

Share This Page