vminecraft.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. //This is where the bulk of the plugin is
  2. import java.util.logging.Logger;
  3. import java.util.logging.Level;
  4. public class vminecraft extends Plugin {
  5. @Override
  6. public void disable() {
  7. //throw new UnsupportedOperationException("Not supported yet.");
  8. //I have to include this to compile, not sure why.
  9. }
  10. @Override
  11. public void enable() {
  12. //throw new UnsupportedOperationException("Not supported yet.");
  13. //I have to include this to compile, not sure why.
  14. }
  15. static final Logger log = Logger.getLogger("Minecraft");
  16. public boolean onChat(Player player, String message){
  17. String playerb = player.getName(); //Used to get names from players, can't remember why I can't just use 'player'
  18. String temp2 = "<" + etc.getInstance().getUserColor(playerb) + player.getName() + Colors.White +"> "; //Inserts a name before the message
  19. String adminchat = Colors.LightGreen + "{" + etc.getInstance().getUserColor(playerb) + player.getName() + Colors.LightGreen +"}" + Colors.White + " "; //Inserts names admin chat style before the message
  20. String message2 = ""; //Used for greentext and FFF
  21. String check = temp2+message; //Calculates how long your message will be including your name in the equation, this prevents minecraft clients from crashing when a color code is inserted after a linebreak
  22. if (message.startsWith("@") && (etc.getInstance().isUserInGroup(player, "mods") || etc.getInstance().isUserInGroup(player, "admins") || etc.getInstance().isUserInGroup(player, "superadmins"))) {
  23. for (Player p : etc.getServer().getPlayerList()) {
  24. if (p != null) {
  25. if (etc.getInstance().isUserInGroup(p, "mods") || (etc.getInstance().isUserInGroup(p, "admins")) || (etc.getInstance().isUserInGroup(p, "superadmins"))) {
  26. String blaa = "";
  27. for ( int x = 1; x< message.length(); x++) {
  28. blaa+=message.charAt(x);
  29. }
  30. p.sendMessage(adminchat+blaa);
  31. log.log(Level.INFO, "@"+message);
  32. }
  33. }
  34. }
  35. return true;
  36. }
  37. //Greentext
  38. if (message.startsWith(">")) {
  39. message = Colors.LightGreen + message;
  40. message2 = temp2 + message;
  41. other.gmsg(message2);
  42. id.a.log(Level.INFO, message2);
  43. return true;
  44. }
  45. //FFF
  46. if (message.startsWith("FFF")) {
  47. message = Colors.Red + message;
  48. message2 = temp2 + message;
  49. other.gmsg(message2);
  50. id.a.log(Level.INFO, message2);
  51. return true;
  52. }
  53. //QuakeColors
  54. if(message.length()>2 && lengthCheck(check)) {
  55. String temp = "";
  56. for(int x = 0; x< message.length(); x++)
  57. {
  58. if(message.charAt(x)=='^'&&x!=message.length()-1)
  59. {
  60. temp+=colorChange(message.charAt(x+1));
  61. x+=1;
  62. }
  63. else{
  64. temp+=message.charAt(x);
  65. }
  66. }
  67. message = temp2 + temp + " ";
  68. for (Player p : etc.getServer().getPlayerList()) {
  69. if (p != null) {
  70. other.gmsg(message);
  71. log.log(Level.INFO, message);
  72. return true;
  73. }
  74. }
  75. }
  76. return false;
  77. }
  78. public boolean onCommand(Player player, String[] split) {
  79. if (!etc.getInstance().canUseCommand(player.getName(), split[0])) {
  80. return false;
  81. }
  82. //Fabulous
  83. if (split[0].equalsIgnoreCase("/fabulous")) {
  84. etc.getInstance().addCommand("/fabulous", "/fabulous <message>");
  85. if (split.length == 1) {return false;}
  86. String temp = "";
  87. String str = "";
  88. //str = paramString.substring(paramString.indexOf(" ")).trim();
  89. str = id.combineSplit(1, split, " ");
  90. String temp2 = "<" + player.getName() + "> "+str;
  91. String[] rainbow = new String[] {Colors.Red, Colors.Rose, Colors.Yellow, Colors.Green, Colors.Blue, Colors.LightPurple, Colors.Purple};
  92. int counter=0;
  93. if(lengthCheck(temp2))
  94. {
  95. for(int x=0; x<str.length(); x++)
  96. {
  97. temp+=rainbow[counter]+str.charAt(x);
  98. counter++;
  99. if(str.charAt(x)==' ') { counter--;}
  100. if(counter==-1){counter = 6; }
  101. if(counter==7){counter = 0; }
  102. }
  103. str = temp+" ";
  104. String message = "<" + etc.getInstance().getUserColor(player.getName()) + player.getName() + Colors.White + "> " + str;
  105. id.a.log(Level.INFO, "[F]"+str);
  106. other.gmsg(message);
  107. } else {
  108. player.sendMessage(Colors.Rose + "Message is too long");
  109. }
  110. }
  111. //Promote
  112. else if (split[0].equalsIgnoreCase("/promote")) {
  113. log.log(Level.INFO, "Command used by " + player + " " + split[0] +" "+split[1]+" ");
  114. User user2 = etc.getInstance().getUser(split[1]);
  115. if (split.length < 2) {
  116. player.sendMessage(Colors.Rose + "Usage is /promote [player]");
  117. }
  118. if(user2 == null) { //Currently broken
  119. player.sendMessage(Colors.Rose + "Player does not exist.");
  120. return false;
  121. }
  122. //ea player = match(split[1]);
  123. User user = etc.getInstance().getUser(split[1]);
  124. boolean newUser = false;
  125. if (user == null) {
  126. player.sendMessage(Colors.Rose + "Adding new user.");
  127. newUser = true;
  128. user = new User();
  129. user.Name = split[1];
  130. user.Administrator = false;
  131. user.CanModifyWorld = true;
  132. user.IgnoreRestrictions = false;
  133. user.Commands = new String[]{""};
  134. user.Prefix = "";
  135. log.log(Level.INFO, player + " added new user ("+user+")"); //Not sure about keeping this
  136. return false;
  137. }
  138. if (etc.getInstance().isUserInGroup(split[1], "admins") && (etc.getInstance().isUserInGroup(player, "admins") || etc.getInstance().isUserInGroup(player, "superadmins"))) {
  139. player.sendMessage(Colors.Rose + "You cannot promote " + split[1] + " any higher.");
  140. } else if (etc.getInstance().isUserInGroup(split[1], "mods") && etc.getInstance().isUserInGroup(player, "superadmins")) {
  141. user.Groups = ranks.Admins;
  142. etc.getInstance().getDataSource().modifyUser(user);
  143. String message = Colors.Yellow + split[1] + " was promoted to" + Colors.Rose + " Admin";
  144. other.gmsg(message);
  145. } else if (etc.getInstance().isUserInGroup(split[1], "trusted") && etc.getInstance().isUserInGroup(player, "admins")) {
  146. user.Groups = ranks.Mods;
  147. etc.getInstance().getDataSource().modifyUser(user);
  148. String message = Colors.Yellow + split[1] + " was promoted to" + Colors.DarkPurple + " Mods";
  149. other.gmsg(message);
  150. } else if (etc.getInstance().isUserInGroup(split[1], "default") && etc.getInstance().isUserInGroup(player, "mods")) {
  151. user.Groups = ranks.Trusted;
  152. etc.getInstance().getDataSource().modifyUser(user);
  153. String message = Colors.Yellow + split[1] + " was promoted to" + Colors.LightGreen + " Trusted";
  154. other.gmsg(message);
  155. } else player.sendMessage(Colors.Rose + "That didn't work");
  156. if (newUser) {
  157. etc.getInstance().getDataSource().addUser(user);
  158. } else {
  159. etc.getInstance().getDataSource().modifyUser(user);
  160. }
  161. }
  162. //Demote
  163. else if (split[0].equalsIgnoreCase("/demote")) {
  164. log.log(Level.INFO, "Command used by " + player + " " + split[0] +" "+split[1]+" ");
  165. etc.getInstance().addCommand("/demote", "/demote [user]");
  166. if (split.length < 2) {
  167. player.sendMessage(Colors.Rose + "Usage is /demote [player]");
  168. }
  169. if(player == null) { //Currently broken
  170. player.sendMessage(Colors.Rose + "Player does not exist.");
  171. return false;
  172. }
  173. User user = etc.getInstance().getUser(split[1]);
  174. boolean newUser = false;
  175. if (user == null) {
  176. player.sendMessage(Colors.Rose + "Adding new user.");
  177. newUser = true;
  178. user = new User();
  179. user.Name = split[1];
  180. user.Administrator = false;
  181. user.CanModifyWorld = true;
  182. user.IgnoreRestrictions = false;
  183. user.Commands = new String[]{""};
  184. user.Prefix = "";
  185. }
  186. if (etc.getInstance().isUserInGroup(split[1], "admins")&& etc.getInstance().isUserInGroup(player, "superadmins")) {
  187. user.Groups = ranks.Mods;
  188. etc.getInstance().getDataSource().modifyUser(user);
  189. String message = Colors.Yellow + split[1] + " was demoted to" + Colors.DarkPurple + " Mod";
  190. other.gmsg(message);
  191. } else if (etc.getInstance().isUserInGroup(split[1], "mods")&& etc.getInstance().isUserInGroup(player, "admins")) {
  192. user.Groups = ranks.Trusted;
  193. etc.getInstance().getDataSource().modifyUser(user);
  194. String message = Colors.Yellow + split[1] + " was demoted to" + Colors.LightGreen + " Trusted";
  195. other.gmsg(message);
  196. } else if (etc.getInstance().isUserInGroup(split[1], "trusted")&& etc.getInstance().isUserInGroup(player, "mods")) {
  197. user.Groups = ranks.Def;
  198. etc.getInstance().getDataSource().modifyUser(user);
  199. String message = Colors.Yellow + split[1] + " was demoted to" + Colors.White + " Default";
  200. other.gmsg(message);
  201. } else if (etc.getInstance().isUserInGroup(split[1], "default")) {
  202. player.sendMessage(Colors.Rose + "You cannot demote " + split[1] + " any lower.");
  203. } else player.sendMessage(Colors.Rose + "That didn't work");
  204. if (newUser) {
  205. etc.getInstance().getDataSource().addUser(user);
  206. } else {
  207. etc.getInstance().getDataSource().modifyUser(user);
  208. }
  209. //Whois will display info about a player
  210. } else if (split[0].equalsIgnoreCase("/whois")) {
  211. String admin ="";
  212. String group ="";
  213. String ignore ="";
  214. log.log(Level.INFO, "Command used by " + player + " " + split[0] +" "+split[1]+" ");
  215. etc.getInstance().addCommand("/whois", "/whois [user]");
  216. if (split.length < 2) {
  217. player.sendMessage(Colors.Rose + "Usage is /whois [player]");
  218. }
  219. if (etc.getInstance().canIgnoreRestrictions(split[1])) {
  220. ignore = "True";
  221. } else {
  222. ignore ="False";
  223. }
  224. if (etc.getInstance().isAdmin(split[1])) {
  225. admin = "True";
  226. } else {
  227. admin = "False";
  228. }
  229. if (etc.getInstance().isUserInGroup(split[1], "superadmins")){
  230. group = "superadmins";
  231. }else if(etc.getInstance().isUserInGroup(split[1], "admins")){
  232. group = "admins";
  233. }else if(etc.getInstance().isUserInGroup(split[1], "mods")){
  234. group = "mods";
  235. }else if(etc.getInstance().isUserInGroup(split[1], "trusted")){
  236. group = "trusted";
  237. }else{
  238. group = "Default";
  239. }
  240. player.sendMessage(Colors.LightGreen + "Info for "+split[1]+": Admin("+admin+") Ignoresrestrictions("+ignore+") Group("+group+").");
  241. } else {
  242. return false;
  243. }
  244. return true;
  245. }
  246. //Calculates how long the specified String is to prevent linebreaks when using scripts that insert color codes, designed to be used with playername included
  247. private boolean lengthCheck(String str)
  248. {
  249. int length = 0;
  250. for(int x = 0; x<str.length(); x++)
  251. {
  252. if("i;,.:|!".indexOf(str.charAt(x)) != -1)
  253. {
  254. length+=2;
  255. }
  256. else if("l'".indexOf(str.charAt(x)) != -1)
  257. {
  258. length+=3;
  259. }
  260. else if("tI[]".indexOf(str.charAt(x)) != -1)
  261. {
  262. length+=4;
  263. }
  264. else if("kf{}<>\"*()".indexOf(str.charAt(x)) != -1)
  265. {
  266. length+=5;
  267. }
  268. else if("hequcbrownxjmpsvazydgTHEQUCKBROWNFXJMPSVLAZYDG1234567890#\\/?$%-=_+&".indexOf(str.charAt(x)) != -1)
  269. {
  270. length+=6;
  271. }
  272. else if("@~".indexOf(str.charAt(x)) != -1)
  273. {
  274. length+=7;
  275. }
  276. else if(str.charAt(x)==' ')
  277. {
  278. length+=4;
  279. }
  280. }
  281. if(length<=316)
  282. {
  283. return true;
  284. } else { return false; }
  285. }
  286. //QuakeColors Part 2
  287. private String colorChange(char colour)
  288. {
  289. String color = "";
  290. switch(colour)
  291. {
  292. case '0':
  293. color = Colors.Black;
  294. break;
  295. case '1':
  296. color = Colors.Navy;
  297. break;
  298. case '2':
  299. color = Colors.Green;
  300. break;
  301. case '3':
  302. color = Colors.Blue;
  303. break;
  304. case '4':
  305. color = Colors.Red;
  306. break;
  307. case '5':
  308. color = Colors.Purple;
  309. break;
  310. case '6':
  311. color = Colors.Gold;
  312. break;
  313. case '7':
  314. color = Colors.LightGray;
  315. break;
  316. case '8':
  317. color = Colors.Gray;
  318. break;
  319. case '9':
  320. color = Colors.DarkPurple;
  321. break;
  322. case 'a':
  323. color = Colors.LightGreen;
  324. break;
  325. case 'b':
  326. color = Colors.LightBlue;
  327. break;
  328. case 'c':
  329. color = Colors.Rose;
  330. break;
  331. case 'd':
  332. color = Colors.LightPurple;
  333. break;
  334. case 'e':
  335. color = Colors.Yellow;
  336. break;
  337. case 'f':
  338. color = Colors.White;
  339. break;
  340. case 'A':
  341. color = Colors.LightGreen;
  342. break;
  343. case 'B':
  344. color = Colors.LightBlue;
  345. break;
  346. case 'C':
  347. color = Colors.Rose;
  348. break;
  349. case 'D':
  350. color = Colors.LightPurple;
  351. break;
  352. case 'E':
  353. color = Colors.Yellow;
  354. break;
  355. case 'F':
  356. color = Colors.White;
  357. break;
  358. default:
  359. color = Colors.White;
  360. break;
  361. }
  362. return color;
  363. }
  364. }