Advertisement
Guest User

Untitled

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