ChatBanHandler.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /*
  2. * Copyright (C) 2004-2015 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package handlers.punishmenthandlers;
  20. import com.l2jserver.gameserver.LoginServerThread;
  21. import com.l2jserver.gameserver.handler.IPunishmentHandler;
  22. import com.l2jserver.gameserver.model.L2World;
  23. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  24. import com.l2jserver.gameserver.model.punishment.PunishmentTask;
  25. import com.l2jserver.gameserver.model.punishment.PunishmentType;
  26. import com.l2jserver.gameserver.network.L2GameClient;
  27. import com.l2jserver.gameserver.network.serverpackets.EtcStatusUpdate;
  28. /**
  29. * This class handles chat ban punishment.
  30. * @author UnAfraid
  31. */
  32. public class ChatBanHandler implements IPunishmentHandler
  33. {
  34. @Override
  35. public void onStart(PunishmentTask task)
  36. {
  37. switch (task.getAffect())
  38. {
  39. case CHARACTER:
  40. {
  41. int objectId = Integer.parseInt(String.valueOf(task.getKey()));
  42. final L2PcInstance player = L2World.getInstance().getPlayer(objectId);
  43. if (player != null)
  44. {
  45. applyToPlayer(task, player);
  46. }
  47. break;
  48. }
  49. case ACCOUNT:
  50. {
  51. String account = String.valueOf(task.getKey());
  52. final L2GameClient client = LoginServerThread.getInstance().getClient(account);
  53. if (client != null)
  54. {
  55. final L2PcInstance player = client.getActiveChar();
  56. if (player != null)
  57. {
  58. applyToPlayer(task, player);
  59. }
  60. }
  61. break;
  62. }
  63. case IP:
  64. {
  65. String ip = String.valueOf(task.getKey());
  66. for (L2PcInstance player : L2World.getInstance().getPlayers())
  67. {
  68. if (player.getIPAddress().equals(ip))
  69. {
  70. applyToPlayer(task, player);
  71. }
  72. }
  73. break;
  74. }
  75. }
  76. }
  77. @Override
  78. public void onEnd(PunishmentTask task)
  79. {
  80. switch (task.getAffect())
  81. {
  82. case CHARACTER:
  83. {
  84. int objectId = Integer.parseInt(String.valueOf(task.getKey()));
  85. final L2PcInstance player = L2World.getInstance().getPlayer(objectId);
  86. if (player != null)
  87. {
  88. removeFromPlayer(player);
  89. }
  90. break;
  91. }
  92. case ACCOUNT:
  93. {
  94. String account = String.valueOf(task.getKey());
  95. final L2GameClient client = LoginServerThread.getInstance().getClient(account);
  96. if (client != null)
  97. {
  98. final L2PcInstance player = client.getActiveChar();
  99. if (player != null)
  100. {
  101. removeFromPlayer(player);
  102. }
  103. }
  104. break;
  105. }
  106. case IP:
  107. {
  108. String ip = String.valueOf(task.getKey());
  109. for (L2PcInstance player : L2World.getInstance().getPlayers())
  110. {
  111. if (player.getIPAddress().equals(ip))
  112. {
  113. removeFromPlayer(player);
  114. }
  115. }
  116. break;
  117. }
  118. }
  119. }
  120. /**
  121. * Applies all punishment effects from the player.
  122. * @param task
  123. * @param player
  124. */
  125. private static void applyToPlayer(PunishmentTask task, L2PcInstance player)
  126. {
  127. long delay = ((task.getExpirationTime() - System.currentTimeMillis()) / 1000);
  128. if (delay > 0)
  129. {
  130. player.sendMessage("You've been chat banned for " + (delay > 60 ? ((delay / 60) + " minutes.") : delay + " seconds."));
  131. }
  132. else
  133. {
  134. player.sendMessage("You've been chat banned forever.");
  135. }
  136. player.sendPacket(new EtcStatusUpdate(player));
  137. }
  138. /**
  139. * Removes any punishment effects from the player.
  140. * @param player
  141. */
  142. private static void removeFromPlayer(L2PcInstance player)
  143. {
  144. player.sendMessage("Your Chat ban has been lifted");
  145. player.sendPacket(new EtcStatusUpdate(player));
  146. }
  147. @Override
  148. public PunishmentType getType()
  149. {
  150. return PunishmentType.CHAT_BAN;
  151. }
  152. }