Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.44 KB | None | 0 0
  1. package com.ruse.world.content.clan;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.DataOutputStream;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.util.Collections;
  10. import java.util.Comparator;
  11. import java.util.Map.Entry;
  12.  
  13. import com.ruse.model.GameMode;
  14. import com.ruse.model.Item;
  15. import com.ruse.util.Misc;
  16. import com.ruse.util.NameUtils;
  17. import com.ruse.world.content.minigames.impl.TheSix;
  18. import com.ruse.world.entity.impl.npc.NPC;
  19. import com.ruse.world.entity.impl.player.Player;
  20.  
  21. /**
  22. * 100% Runescape clanchat system.
  23. * @author Gabriel Hannason
  24. */
  25. public class ClanChatManager {
  26.  
  27. private static final String FILE_DIRECTORY = "./data/saves/clans/";
  28.  
  29. private static ClanChat[] clans = new ClanChat[3000];
  30.  
  31. public static ClanChat[] getClans() {
  32. return clans;
  33. }
  34.  
  35. public static ClanChat getClanChat(int index) {
  36. return clans[index];
  37. }
  38.  
  39. public static ClanChat getClanChatChannel(Player player) {
  40. for(ClanChat clan : clans) {
  41. if(clan == null || clan.getOwnerName() == null)
  42. continue;
  43. if(clan.getOwnerName().equals(player.getUsername())) {
  44. return clan;
  45. }
  46. }
  47. return null;
  48. }
  49.  
  50. public static void init() {
  51. try {
  52. for (File file : (new File(FILE_DIRECTORY)).listFiles()) {
  53. if(!file.exists())
  54. continue;
  55. DataInputStream input = new DataInputStream(new FileInputStream(file));
  56. String name = input.readUTF();
  57. String owner = input.readUTF();
  58. int index = input.readShort();
  59. ClanChat clan = new ClanChat(owner, name, index);
  60. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_ENTER, ClanChatRank.forId(input.read()));
  61. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_KICK, ClanChatRank.forId(input.read()));
  62. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_TALK, ClanChatRank.forId(input.read()));
  63. // int totalRanks = input.readShort();
  64. //for (int i = 0; i < totalRanks; i++) {
  65. // clan.getRankedNames().put(input.readUTF(), ClanChatRank.forId(input.read()));
  66. //}
  67. // int totalBans = input.readShort();
  68. // for (int i = 0; i < totalBans; i++) {
  69. // clan.addBannedName(input.readUTF());
  70. // }
  71. clans[index] = clan;
  72. input.close();
  73. }
  74. } catch (IOException exception) {
  75. exception.printStackTrace();
  76. }
  77. }
  78.  
  79. public static void writeFile(ClanChat clan) {
  80. try {
  81. File file = new File(FILE_DIRECTORY + clan.getName());
  82. if (file.exists())
  83. file.createNewFile();
  84. DataOutputStream output = new DataOutputStream(new FileOutputStream(file));
  85. output.writeUTF(clan.getName());
  86. output.writeUTF(clan.getOwnerName());
  87. output.writeShort(clan.getIndex());
  88. output.write(clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER] != null ? clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER].ordinal() : -1);
  89. output.write(clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK] != null ? clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK].ordinal() : -1);
  90. output.write(clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK] != null ? clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK].ordinal() : -1);
  91. output.writeShort(clan.getRankedNames().size());
  92. for (Entry<String, ClanChatRank> iterator : clan.getRankedNames().entrySet()) {
  93. String name = iterator.getKey();
  94. int rank = iterator.getValue().ordinal();
  95. output.writeUTF(name);
  96. output.write(rank);
  97. }
  98. output.writeShort(clan.getBannedNames().size());
  99. for(String ban : clan.getBannedNames()) {
  100. output.writeUTF(ban);
  101. }
  102. output.close();
  103. } catch (IOException e) {
  104. e.printStackTrace();
  105. }
  106. }
  107.  
  108. public static void save() {
  109. for (ClanChat clan : clans) {
  110. if (clan != null) {
  111. writeFile(clan);
  112. }
  113. }
  114. }
  115.  
  116. public static void createClan(Player player) {
  117. player.getPacketSender().sendInterfaceRemoval();
  118. if(getClanChatChannel(player) != null) {
  119. player.getPacketSender().sendMessage("You have already created a clanchat channel.");
  120. return;
  121. }
  122. File file = new File(FILE_DIRECTORY + player.getUsername());
  123. if (file.exists())
  124. file.delete();
  125. ClanChat createdCc = create(player);
  126. if(createdCc != null) {
  127. if(player.getCurrentClanChat() == null) {
  128. join(player, createdCc);
  129. }
  130. player.getPacketSender().sendMessage("You now have a clanchat channel. To enter the chat, simply use your name as keyword.");
  131. }
  132. }
  133.  
  134. public static void deleteClan(Player player) {
  135. player.getPacketSender().sendInterfaceRemoval();
  136. if (player.getCurrentClanChat() != null) {
  137. player.getPacketSender().sendMessage("Please leave the clanchat channel you are currently in before doing this.");
  138. return;
  139. }
  140. if(getClanChatChannel(player) == null) {
  141. player.getPacketSender().sendMessage("You have not created a clanchat channel yet.");
  142. return;
  143. }
  144. delete(player);
  145. }
  146.  
  147. public static ClanChat create(Player player) {
  148. File file = new File(FILE_DIRECTORY + player.getUsername());
  149. if (file.exists()) {
  150. player.getPacketSender().sendMessage("Your clan channel is already public!");
  151. return null;
  152. }
  153. int index = getIndex();
  154. if (index == -1) { // Too many clans
  155. player.getPacketSender().sendMessage("An error occured! Please contact an administrator and report this.");
  156. return null;
  157. }
  158. clans[index] = new ClanChat(player, player.getUsername(), index);
  159. clans[index].getRankedNames().put(player.getUsername(), ClanChatRank.OWNER);
  160. writeFile(clans[index]);
  161. return clans[index];
  162. }
  163.  
  164. public static void join(Player player, String channel) {
  165. if(channel == null || channel.equals("null"))
  166. return;
  167. if (player.getCurrentClanChat() != null) {
  168. player.getPacketSender().sendMessage("You are already in a clan channel.");
  169. return;
  170. }
  171. channel = channel.toLowerCase();
  172. for (ClanChat clan : clans) {
  173. if (clan != null) {
  174. if(clan.getName().toLowerCase().equals(channel)) {
  175. join(player, clan);
  176. return;
  177. }
  178. }
  179. }
  180. for (ClanChat clan : clans) {
  181. if (clan != null) {
  182. if(clan.getOwnerName().toLowerCase().equals(channel)) {
  183. join(player, clan);
  184. return;
  185. }
  186. }
  187. }
  188. player.getPacketSender().sendMessage("That channel does not exist.");
  189. }
  190.  
  191. public static void updateList(ClanChat clan) {
  192. Collections.sort(clan.getMembers(), new Comparator<Player>() {
  193. @Override
  194. public int compare(Player o1, Player o2) {
  195. ClanChatRank rank1 = clan.getRank(o1);
  196. ClanChatRank rank2 = clan.getRank(o2);
  197. if(rank1 == null && rank2 == null) {
  198. return 1;
  199. }
  200. if(rank1 == null && rank2 != null) {
  201. return 1;
  202. } else if(rank1 != null && rank2 == null) {
  203. return -1;
  204. }
  205. if(rank1.ordinal() == rank2.ordinal()) {
  206. return 1;
  207. }
  208. if(rank1 == ClanChatRank.OWNER) {
  209. return -1;
  210. } else if(rank2 == ClanChatRank.OWNER) {
  211. return 1;
  212. }
  213. if(rank1.ordinal() > rank2.ordinal()) {
  214. return -1;
  215. }
  216. return 1;
  217. }
  218. });
  219. for (Player member : clan.getMembers()) {
  220. if (member != null) {
  221. int childId = 29344;
  222. for (Player others : clan.getMembers()) {
  223. if (others != null) {
  224. ClanChatRank rank = clan.getRank(others);
  225. int image = -1;
  226. if(rank != null) {
  227. image = 841 + rank.ordinal();
  228. }
  229. String prefix = image >= 0 ? ("<img=" + (image) + "> ") : "";
  230. member.getPacketSender().sendString(childId, prefix + others.getUsername());
  231. childId++;
  232. }
  233. }
  234. for (int i = childId; i < 29444; i++) {
  235. member.getPacketSender().sendString(i, "");
  236. }
  237. ClanChatRank rank = clan.getRank(member);
  238. if(rank != null) {
  239. if(rank == ClanChatRank.OWNER || rank == ClanChatRank.STAFF) {
  240. member.getPacketSender().sendClanChatListOptionsVisible(2); //Kick/demote/promote options
  241. } else if(clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK] != null && rank.ordinal() >= clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK].ordinal()) {
  242. member.getPacketSender().sendClanChatListOptionsVisible(1); //only kick option
  243. } else {
  244. member.getPacketSender().sendClanChatListOptionsVisible(0); //no options
  245. }
  246. }
  247. }
  248. }
  249. }
  250.  
  251. public static void sendMessage(Player player, String message) {
  252. ClanChat clan = player.getCurrentClanChat();
  253. if (clan == null) {
  254. player.getPacketSender().sendMessage("You're not in a clanchat channel.");
  255. return;
  256. }
  257. ClanChatRank rank = clan.getRank(player);
  258. if(clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK] != null) {
  259. if (rank == null || rank.ordinal() < clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK].ordinal()) {
  260. player.getPacketSender().sendMessage("You do not have the required rank to speak in this channel.");
  261. return;
  262. }
  263. }
  264. String bracketColor = "<col=16777215>";
  265. String clanNameColor = "<col=255>";
  266. String nameColor = "@bla@";
  267. String chatColor = "<col=993D00>";
  268. for (Player memberPlayer : clan.getMembers()) {
  269. if (memberPlayer != null) {
  270. if(memberPlayer.getRelations().getIgnoreList().contains(player.getLongUsername()))
  271. continue;
  272. int img = player.getRights().ordinal();
  273. if(!player.getRights().isStaff() && !player.getRights().isMember()) {
  274. if(player.getGameMode() == GameMode.IRONMAN) {
  275. img = 840;
  276. } else if(player.getGameMode() == GameMode.HARDCORE_IRONMAN) {
  277. img = 839;
  278. }
  279. }
  280.  
  281. String rankImg = img > 0 ? " <img="+img+"> " : " ";
  282. memberPlayer.getPacketSender().sendMessage(":clan:" + bracketColor + "[" + clanNameColor + clan.getName() + bracketColor + "]" + nameColor + ""+rankImg+"" +
  283. NameUtils.capitalizeWords(player.getUsername()) +
  284. ": " + chatColor +
  285. NameUtils.capitalize(message));
  286. }
  287. }
  288. }
  289.  
  290. public static void sendMessage(ClanChat clan, String message) {
  291. for (Player member : clan.getMembers()) {
  292. if (member != null) {
  293. member.getPacketSender().sendMessage(message);
  294. }
  295. }
  296. }
  297.  
  298. public static void leave(Player player, boolean kicked) {
  299. final ClanChat clan = player.getCurrentClanChat();
  300. if (clan == null) {
  301. player.getPacketSender().sendMessage("You are not in a clanchat channel.");
  302. return;
  303. }
  304. if(player.doingClanBarrows()) {
  305. TheSix.leave(player, true);
  306. }
  307. player.getPacketSender().sendString(29340, "Talking in: N/A");
  308. player.getPacketSender().sendString(29450, "Owner: N/A");
  309. player.getPacketSender().sendString(29454, "Lootshare: N/A");
  310. player.setCurrentClanChat(null);
  311. clan.removeMember(player.getUsername());
  312. for (int i = 29344; i < 29444; i++) {
  313. player.getPacketSender().sendString(i, "");
  314. }
  315. player.getPacketSender().sendClanChatListOptionsVisible(0);
  316. updateList(clan);
  317. player.getPacketSender().sendMessage(kicked ? "You have been kicked from the channel." : "You have left the channel.");
  318. }
  319.  
  320. private static void join(Player player, ClanChat clan) {
  321. if (clan.getOwnerName().equals(player.getUsername())) {
  322. if (clan.getOwner() == null) {
  323. clan.setOwner(player);
  324. }
  325. clan.giveRank(player, ClanChatRank.OWNER);
  326. }
  327. player.getPacketSender().sendMessage("Attempting to join channel...");
  328. if (clan.getMembers().size() >= 100) {
  329. player.getPacketSender().sendMessage("This clan channel is currently full.");
  330. return;
  331. }
  332. if(clan.isBanned(player.getUsername())) {
  333. player.getPacketSender().sendMessage("You're currently banned from using this channel. Bans expire every 20 minutes.");
  334. return;
  335. }
  336. checkFriendsRank(player, clan, false);
  337. ClanChatRank rank = clan.getRank(player);
  338. if (player.getRights().isStaff()) {
  339. if(rank == null || rank != ClanChatRank.OWNER) {
  340. rank = ClanChatRank.STAFF;
  341. clan.giveRank(player, ClanChatRank.STAFF);
  342. }
  343. } else {
  344. if(rank != null && rank == ClanChatRank.STAFF) {
  345. clan.giveRank(player, null);
  346. }
  347. }
  348. if (clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER] != null) {
  349. if (rank == null || clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER].ordinal() > rank.ordinal()) {
  350. player.getPacketSender().sendMessage("Your rank is not high enough to enter this channel.");
  351. return;
  352. }
  353. }
  354. player.setCurrentClanChat(clan);
  355. player.setClanChatName(clan.getName());
  356. String clanName = NameUtils.capitalizeWords(clan.getName());
  357. clan.addMember(player);
  358. player.getPacketSender().sendString(29340, "Talking in: @whi@" + clanName);
  359. player.getPacketSender().sendString(29450, "Owner: " + NameUtils.capitalizeWords(clan.getOwnerName()));
  360. player.getPacketSender().sendString(29454, "Lootshare: "+getLootshareStatus(clan));
  361. player.getPacketSender().sendMessage("Now talking in "+clan.getOwnerName()+"'s channel.");
  362. player.getPacketSender().sendMessage("To talk start each line of chat with the / symbol.");
  363. updateList(clan);
  364. }
  365.  
  366. public static void checkFriendsRank(Player player, ClanChat chat, boolean update) {
  367. ClanChatRank rank = chat.getRank(player);
  368. if(rank == null) {
  369. if(chat.getOwner() != null && chat.getOwner().getRelations().isFriendWith(player.getUsername())) {
  370. chat.giveRank(player, ClanChatRank.FRIEND);
  371. if(update) {
  372. updateList(chat);
  373. }
  374. }
  375. } else {
  376. if(rank == ClanChatRank.FRIEND && chat.getOwner() != null && !chat.getOwner().getRelations().isFriendWith(player.getUsername())) {
  377. chat.giveRank(player, null);
  378. if(update) {
  379. updateList(chat);
  380. }
  381. }
  382. }
  383. }
  384.  
  385. public static void delete(Player player) {
  386. ClanChat clan = getClanChatChannel(player);
  387. File file = new File(FILE_DIRECTORY + clan.getName());
  388. for (Player member : clan.getMembers()) {
  389. if (member != null) {
  390. leave(member, true);
  391. member.setClanChatName("");
  392. }
  393. }
  394. if(player.getClanChatName().equalsIgnoreCase(clan.getName())) {
  395. player.setClanChatName("");
  396. }
  397. player.getPacketSender().sendMessage("Your clanchat channel was successfully deleted.");
  398. clans[clan.getIndex()] = null;
  399. file.delete();
  400. }
  401.  
  402. public static void setName(Player player, String newName) {
  403. final ClanChat clan = getClanChatChannel(player);
  404. if (clan == null) {
  405. player.getPacketSender().sendMessage("You need to have a clan channel to do this.");
  406. return;
  407. }
  408. if(newName.length() == 0)
  409. return;
  410. if (newName.length() > 12)
  411. newName = newName.substring(0, 11);
  412. if(new File(FILE_DIRECTORY + newName).exists()) {
  413. player.getPacketSender().sendMessage("That clanchat name is already taken.");
  414. return;
  415. }
  416. if(clan.getLastAction().elapsed(1000) || player.getRights().isStaff()) {
  417. new File(FILE_DIRECTORY + clan.getName()).delete();
  418. clan.setName(NameUtils.capitalizeWords(newName));
  419. for(Player member : clan.getMembers()) {
  420. if(member == null)
  421. continue;
  422. member.setClanChatName(clan.getName());
  423. member.getPacketSender().sendString(29340, "Talking in: @whi@" + clan.getName());
  424. }
  425. clanChatSetupInterface(player, false);
  426. writeFile(clan);
  427. clan.getLastAction().reset();
  428. } else {
  429. player.getPacketSender().sendMessage("You need to wait a few seconds between every clanchat action.");
  430. }
  431. }
  432.  
  433. public static void kick(Player player, Player target) {
  434. ClanChat clan = player.getCurrentClanChat();
  435. if (clan == null) {
  436. player.getPacketSender().sendMessage("You're not in a clan channel.");
  437. return;
  438. }
  439. final ClanChatRank rank = clan.getRank(player);
  440. if (rank == null || rank != ClanChatRank.STAFF && clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK] != null && rank.ordinal() < clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK].ordinal()) {
  441. player.getPacketSender().sendMessage("You do not have the required rank to kick this player.");
  442. return;
  443. }
  444. for (Player member : clan.getMembers()) {
  445. if (member != null && member.equals(target)) {
  446. ClanChatRank memberRank = clan.getRank(member);
  447. if (memberRank != null) {
  448. if(memberRank == ClanChatRank.STAFF) {
  449. player.getPacketSender().sendMessage("That player cannot be kicked.");
  450. break;
  451. }
  452. if(rank.ordinal() < memberRank.ordinal()) {
  453. player.getPacketSender().sendMessage("You cannot kick a player who has a higher rank than you!");
  454. break;
  455. }
  456. }
  457. clan.addBannedName(member.getUsername());
  458. leave(member, true);
  459. sendMessage(player.getCurrentClanChat(), "<col=16777215>[<col=255>"+clan.getName() +"<col=16777215>]<col=3300CC> "+member.getUsername()+" has been kicked from the channel by "+player.getUsername()+".");
  460. break;
  461. }
  462. }
  463. }
  464.  
  465. public static void handleMemberOption(Player player, int index, int menuId) {
  466. if ((player.getCurrentClanChat() == null || !player.getCurrentClanChat().getOwnerName().equals(player.getUsername())) && menuId != 1) {
  467. player.getPacketSender().sendMessage("Only the clanchat owner can do that.");
  468. return;
  469. }
  470. Player target = getPlayer(index, player.getCurrentClanChat());
  471. if(target == null || target.equals(player)) {
  472. return;
  473. }
  474. switch(menuId) {
  475. case 8:
  476. case 7:
  477. case 6:
  478. case 5:
  479. case 4:
  480. case 3:
  481. ClanChatRank rank = ClanChatRank.forMenuId(menuId);
  482. ClanChatRank targetRank = player.getCurrentClanChat().getRank(target);
  483. if(targetRank != null) {
  484. if(targetRank == rank) {
  485. player.getPacketSender().sendMessage("That player already has that rank.");
  486. return;
  487. }
  488. if(targetRank == ClanChatRank.STAFF) {
  489. player.getPacketSender().sendMessage("That player cannot be promoted or demoted.");
  490. return;
  491. }
  492. }
  493. if(player.getCurrentClanChat().getLastAction().elapsed(1000) || player.getRights().isStaff()) {
  494. player.getCurrentClanChat().giveRank(target, rank);
  495. updateList(player.getCurrentClanChat());
  496. sendMessage(player.getCurrentClanChat(), "<col=16777215>[<col=255>"+player.getCurrentClanChat().getName() +"<col=16777215>]<col=3300CC> "+target.getUsername()+" has been given the rank: "+Misc.formatText(rank.name().toLowerCase())+".");
  497. player.getCurrentClanChat().getLastAction().reset();
  498. } else {
  499. player.getPacketSender().sendMessage("You need to wait a few seconds between every clanchat action.");
  500. }
  501. break;
  502. case 2:
  503. targetRank = player.getCurrentClanChat().getRank(target);
  504. if(targetRank == null) {
  505. player.getPacketSender().sendMessage("That player has no rank.");
  506. return;
  507. }
  508. if(targetRank == ClanChatRank.STAFF) {
  509. player.getPacketSender().sendMessage("That player cannot be promoted or demoted.");
  510. return;
  511. }
  512. if(player.getCurrentClanChat().getLastAction().elapsed(1000) || player.getRights().isStaff()) {
  513. player.getCurrentClanChat().getRankedNames().remove(target.getUsername());
  514. checkFriendsRank(target, player.getCurrentClanChat(), false);
  515. updateList(player.getCurrentClanChat());
  516. sendMessage(player.getCurrentClanChat(), "<col=16777215>[<col=255>"+player.getCurrentClanChat().getName() +"<col=16777215>]<col=3300CC> "+target.getUsername()+" has been demoted from his rank.");
  517. player.getCurrentClanChat().getLastAction().reset();
  518. } else {
  519. player.getPacketSender().sendMessage("You need to wait a few seconds between every clanchat action.");
  520. }
  521. break;
  522. case 1:
  523. kick(player, target);
  524. break;
  525. }
  526. }
  527.  
  528. public static boolean dropShareLoot(Player player, NPC npc, Item itemDropped) {
  529. /* ClanChat clan = player.getFields().getClanChat();
  530. if (clan != null) {
  531. boolean received = false;
  532. List<Player> players = getPlayersWithinPosition(clan, npc.getPosition());
  533. String green = "<col=" + ClanChatMessageColor.GREEN.getRGB()[player.getFields().rgbIndex] + ">";
  534. if (clan.isItemSharing() && itemDropped.getId() != 995) {
  535. Player rewarded = players.size() > 0 ? players.get(MathUtils.random(players.size() - 1)) : null;
  536. if (rewarded != null) {
  537. rewarded.getPacketSender().sendMessage(green + "You have received " + itemDropped.getAmount() + "x " + itemDropped.getDefinition().getName() + ".");
  538. received = true;
  539. }
  540. }
  541. if (clan.isCoinSharing() && itemDropped.getId() == 995) {
  542. for (Item drop : npc.getDrops()) {
  543. if ((drop.getDefinition().getValue() * drop.getAmount()) < 10000) {
  544. GroundItem groundItem = new GroundItem(drop, npc.getPosition().copy());
  545. GameServer.getWorld().register(groundItem, player);
  546. continue;
  547. }
  548. int amount = (int) (ItemDefinition.forId(drop.getId()).getValue() / players.size());
  549. Item split = new Item(995, amount);
  550. for (Player member : players) {
  551. GroundItem groundItem = new GroundItem(split.copy(), npc.getPosition().copy());
  552. GameServer.getWorld().register(groundItem, member);
  553. member.getPacketSender().sendMessage(green + "You have received " + amount + "x " + split.getDefinition().getName() + " as part of a split drop.");
  554. }
  555. }
  556. } else if(!clan.isItemSharing() && !clan.isCoinSharing() || !received)
  557. return false;
  558. } else
  559. return false;*/
  560. return false;
  561. }
  562.  
  563. public static void toggleLootShare(Player player) {
  564. final ClanChat clan = player.getCurrentClanChat();
  565. if (clan == null) {
  566. player.getPacketSender().sendMessage("You're not in a clan channel.");
  567. return;
  568. }
  569. if(!player.getRights().isStaff()) {
  570. if(clan.getOwner() == null)
  571. return;
  572. if (!clan.getOwner().equals(player)) {
  573. player.getPacketSender().sendMessage("Only the owner of the channel has the power to do this.");
  574. return;
  575. }
  576. }
  577. if(clan.getLastAction().elapsed(1000) || player.getRights().isStaff()) {
  578. clan.setLootShare(!clan.getLootShare());
  579. sendMessage(clan, "<col=16777215>[<col=255>"+clan.getName() +"<col=16777215>] <col=3300CC>"+player.getUsername()+" has "+(clan.getLootShare() ? "enabled" : "disabled")+" Lootshare.");
  580. for (Player member : clan.getMembers()) {
  581. if (member != null) {
  582. member.getPacketSender().sendString(29454, "Lootshare: "+getLootshareStatus(clan));
  583. }
  584. }
  585. clan.getLastAction().reset();
  586. } else {
  587. player.getPacketSender().sendMessage("You need to wait a few seconds between every clanchat action.");
  588. }
  589. }
  590.  
  591. private static String getLootshareStatus(ClanChat clan) {
  592. return clan.getLootShare() ? "@gre@On" : "Off";
  593. }
  594.  
  595. private static int getIndex() {
  596. for (int i = 0; i < clans.length; i++) {
  597. if (clans[i] == null) {
  598. return i;
  599. }
  600. }
  601. return -1;
  602. }
  603.  
  604. public static boolean handleClanChatSetupButton(Player player, int id) {
  605. if(player.getInterfaceId() == 40172) {
  606. final ClanChat clan = getClanChatChannel(player);
  607. if (clan == null) {
  608. return true;
  609. }
  610. switch(id) {
  611. case -18281:
  612. case -17529:
  613. case -17530:
  614. case -17531:
  615. case -17532:
  616. case -17533:
  617. case -17534:
  618. case -17535:
  619. case -17536:
  620. int l = -17529 - id;
  621. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_ENTER, id == -18281 ? null : ClanChatRank.forId(l));
  622. player.getPacketSender().sendMessage("You have changed your clanchat channel's settings.");
  623. if (clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER] != null) {
  624. for(Player member : clan.getMembers()) {
  625. if(member == null)
  626. continue;
  627. ClanChatRank rank = clan.getRank(member);
  628. if (rank == null || clan.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER].ordinal() > rank.ordinal() && rank != ClanChatRank.STAFF) {
  629. member.getPacketSender().sendMessage("Your rank is not high enough to be in this channel.");
  630. leave(member, false);
  631. player.getPacketSender().sendMessage("@red@Warning! Changing that setting kicked the player "+member.getUsername()+" from the chat because").sendMessage("@red@ they do not have the required rank to be in the chat.");;
  632. }
  633. }
  634. }
  635. clanChatSetupInterface(player, false);
  636. writeFile(clan);
  637. return true;
  638. case -18278:
  639. case -17519:
  640. case -17520:
  641. case -17521:
  642. case -17522:
  643. case -17523:
  644. case -17524:
  645. case -17525:
  646. case -17526:
  647. l = -17519 - id;
  648. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_TALK, id == -18278 ? null : ClanChatRank.forId(l));
  649. player.getPacketSender().sendMessage("You have changed your clanchat channel's settings.");
  650. clanChatSetupInterface(player, false);
  651. writeFile(clan);
  652. return true;
  653. case -18275:
  654. case -17510:
  655. case -17511:
  656. case -17512:
  657. case -17513:
  658. case -17514:
  659. case -17515:
  660. l = (-17510 - id) + 1;
  661. clan.setRankRequirements(ClanChat.RANK_REQUIRED_TO_KICK, id == -18275 ? null : ClanChatRank.forId(l));
  662. player.getPacketSender().sendMessage("You have changed your clanchat channel's settings.");
  663. clanChatSetupInterface(player, false);
  664. updateList(clan);
  665. writeFile(clan);
  666. return true;
  667. }
  668. }
  669. return false;
  670. }
  671.  
  672. public static void clanChatSetupInterface(Player player, boolean check) {
  673. player.getPacketSender().sendInterfaceRemoval();
  674. ClanChat channel = getClanChatChannel(player);
  675. if(check) {
  676. if(channel == null) {
  677. player.getPacketSender().sendMessage("You have not created a clanchat channel yet.");
  678. return;
  679. }
  680. }
  681. player.getPacketSender().sendString(47814, channel.getName());
  682. if (channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER] == null) {
  683. player.getPacketSender().sendString(47815, "Anyone");
  684. } else {
  685. player.getPacketSender().sendString(47815, Misc.formatText(channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_ENTER].name().toLowerCase())+"+");
  686. }
  687.  
  688. if (channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK] == null) {
  689. player.getPacketSender().sendString(47816, "Anyone");
  690. } else {
  691. player.getPacketSender().sendString(47816, Misc.formatText(channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_TALK].name().toLowerCase())+"+");
  692. }
  693.  
  694. if (channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK] == null) {
  695. player.getPacketSender().sendString(47817, "Only me");
  696. } else {
  697. player.getPacketSender().sendString(47817, Misc.formatText(channel.getRankRequirement()[ClanChat.RANK_REQUIRED_TO_KICK].name().toLowerCase())+"+");
  698. }
  699.  
  700. player.getPacketSender().sendInterface(40172);
  701. }
  702.  
  703. public static void handleLogin(Player player) {
  704. resetInterface(player);
  705. ClanChatManager.join(player, player.getClanChatName());
  706. }
  707.  
  708. public static void resetInterface(Player player) {
  709. player.getPacketSender().sendString(29340, "Talking in: N/A");
  710. player.getPacketSender().sendString(29450, "Owner: N/A");
  711. player.getPacketSender().sendString(29454, "Lootshare: N/A");
  712. for (int i = 29344; i < 29444; i++) {
  713. player.getPacketSender().sendString(i, "");
  714. }
  715. }
  716.  
  717. public static Player getPlayer(int index, ClanChat clan) {
  718. int clanIndex = 0;
  719. for (Player members : clan.getMembers()) {
  720. if (members != null) {
  721. if(clanIndex == index) {
  722. return members;
  723. }
  724. clanIndex++;
  725. }
  726. }
  727. return null;
  728. }
  729. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement