Energyxxer

CPM Utility Pack

Oct 29th, 2016
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. pluginManager.register("Energyxxer's Utility Pack",function(lib){
  2.  
  3.     const SCORE_CHAR_LIMIT = 16;
  4.  
  5.     var block = lib.getBlock();
  6.    
  7.     var command = block.command + " ";
  8.    
  9.     if(command.startsWith("$assignID ")) {
  10.  
  11.         var usage = "$assignID <selector> <objective> [buffered]";
  12.  
  13.         command = command.substring("$assignID ".length).trim();
  14.        
  15.         var args = command.split(" ");
  16.  
  17.         //Argument variables:
  18.         var selectorRaw = args[0];
  19.         var objective = args[1];
  20.         var buffered = true;
  21.  
  22.         //Make sure nothing is missing
  23.  
  24.         if(args[0] == null || args[0].length == 0) {
  25.             lib.throw("Error: Selector not found in function at line " + lib.getLineNumber() + ". Usage: " + usage);
  26.             lib.break();
  27.             return;
  28.         }
  29.         if(args[1] == null || args[1].length == 0) {
  30.             lib.throw("Error: Scoreboard objective not found in function at line " + lib.getLineNumber() + ". Usage: " + usage);
  31.             lib.break();
  32.             return;
  33.         }
  34.  
  35.         //Validate buffered
  36.        
  37.         if(args[2] != null) {
  38.             if(["true","false"].contains(args[2])) {
  39.                 buffered = [true,false][["true","false"].indexOf(args[2])];
  40.             } else {
  41.                 lib.throw("Error: \"" + args[2] + "\" is neither true nor false! At line " + lib.getLineNumber() + ". Usage: " + usage);
  42.                 lib.break();
  43.                 return;
  44.             }
  45.         }
  46.  
  47.         //Validate selector and objective
  48.  
  49.         var selector = new Selector(selectorRaw);
  50.         if(!selector.valid) {
  51.             lib.throw("Error: \"" + selectorRaw + "\" is not a valid selector! At line " + lib.getLineNumber() + ". Usage: " + usage);
  52.             lib.break();
  53.             return;
  54.         }
  55.  
  56.         if(objective.length > SCORE_CHAR_LIMIT) {
  57.             lib.throw("Error: \"" + objective + "\" is not a valid objective name; it must not exceed " + SCORE_CHAR_LIMIT + " characters of length. At line " + lib.getLineNumber() + ". Usage: " + usage);
  58.             lib.break();
  59.             return;
  60.         }
  61.  
  62.         //All checking done, proceed to generate commands.
  63.        
  64.         lib.newCommand("scoreboard players add " + selector.toString() + " " + objective + " 0", block.type, block.conditional, block.auto);
  65.  
  66.        
  67.        
  68.         var s1 = selector.clone();
  69.         s1.args["score_" + objective] = "0";
  70.         if(buffered) s1.args["c"] = "1";
  71.         lib.newCommand("scoreboard players tag " + s1.toString() + " add assign_" + objective, "Chain", false, true);
  72.         var s2 = selector.clone();
  73.         s2.args["tag"] = "assign_" + objective;
  74.         lib.newCommand("scoreboard players operation " + s2.toString() + " " + objective + " > * " + objective, "Chain", false, true);
  75.         lib.newCommand("scoreboard players add " + s2.toString() + " " + objective + " 1", "Chain", false, true);
  76.         lib.newCommand("scoreboard players tag " + s2.toString() + " remove assign_" + objective, "Chain", false, true);
  77.  
  78.         lib.skip();
  79.         /*scoreboard players add @a r_playerId 0
  80.     scoreboard players tag @e[score_r_playerId=0,c=1] add r_assignId
  81.     scoreboard players operation @e[tag=r_assignId] r_playerId > * r_playerId
  82.     scoreboard players add @e[tag=r_assignId] r_playerId 1
  83.     scoreboard players tag @e[tag=r_assignId] remove r_assignId*/
  84.  
  85.     }
  86. });
Add Comment
Please, Sign In to add comment