Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2014
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. package pl.scmc.dead;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.text.ParseException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.Calendar;
  9. import java.util.List;
  10. import java.util.logging.Logger;
  11.  
  12. import org.bukkit.Bukkit;
  13. import org.bukkit.ChatColor;
  14. import org.bukkit.OfflinePlayer;
  15. import org.bukkit.Server;
  16. import org.bukkit.command.Command;
  17. import org.bukkit.command.CommandSender;
  18. import org.bukkit.configuration.ConfigurationSection;
  19. import org.bukkit.configuration.file.YamlConfiguration;
  20. import org.bukkit.entity.Player;
  21. import org.bukkit.event.EventHandler;
  22. import org.bukkit.event.Listener;
  23. import org.bukkit.event.entity.PlayerDeathEvent;
  24. import org.bukkit.event.player.PlayerLoginEvent;
  25. import org.bukkit.event.player.PlayerLoginEvent.Result;
  26. import org.bukkit.plugin.PluginManager;
  27. import org.bukkit.plugin.java.JavaPlugin;
  28. import org.bukkit.scheduler.BukkitScheduler;
  29.  
  30. public class Bans extends JavaPlugin
  31. implements Listener
  32. {
  33. private List<SCMCDead> banned = null;
  34. private Integer banLenght = Integer.valueOf(3);
  35. private String bannedMessage = ChatColor.RED + "Zginales!\n" + ChatColor.WHITE + "Odrodzisz sie %a!";
  36. private String farewell = ChatColor.RED + "Zginales!\n" + ChatColor.GRAY + "Masz 10 sekund na pozegnanie sie z serwerem!";
  37. private File configFile = null;
  38. private YamlConfiguration config = null;
  39.  
  40. @SuppressWarnings({ "unchecked", "rawtypes" })
  41. public void onEnable()
  42. {
  43. this.banned = new ArrayList();
  44. File dir = getDataFolder();
  45. if (!dir.exists()) {
  46. dir.mkdir();
  47. }
  48. this.configFile = new File(dir, "config.yml");
  49. if (!this.configFile.exists()) {
  50. try {
  51. this.configFile.createNewFile();
  52. }
  53. catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. this.config = YamlConfiguration.loadConfiguration(this.configFile);
  58. if (!this.config.contains("days"))
  59. this.config.set("days", this.banLenght);
  60. else {
  61. this.banLenght = Integer.valueOf(this.config.getInt("days"));
  62. }
  63. if (!this.config.contains("message"))
  64. this.config.set("message", this.bannedMessage);
  65. else {
  66. this.bannedMessage = this.config.getString("message");
  67. }
  68. if (!this.config.contains("farewell"))
  69. this.config.set("farewell", this.farewell);
  70. else {
  71. this.farewell = this.config.getString("farewell");
  72. }
  73. if (this.config.contains("Bans"))
  74. for (String str : this.config.getConfigurationSection("Bans").getKeys(false)) {
  75. SCMCDead ban = new SCMCDead(str);
  76. try {
  77. if (!ban.parseFromYaml(this.config, str))
  78. Bukkit.getLogger().info("Blad z banem: " + str);
  79. }
  80. catch (ParseException e)
  81. {
  82. Bukkit.getLogger().info("Wystapil ParseException z " + str);
  83. }
  84.  
  85. Bukkit.getLogger().info(str + ": " + ban.whenExpires() + "==> " + new SimpleDateFormat("dd.MM.YYYY HH:mm").format(Calendar.getInstance().getTime()));
  86. this.banned.add(ban);
  87. }
  88. try
  89. {
  90. this.config.save(this.configFile);
  91. }
  92. catch (IOException e) {
  93. e.printStackTrace();
  94. }
  95. getServer().getPluginManager().registerEvents(this, this);
  96. getLogger().info("Plugin SCMCDead uruchomiony!");
  97. }
  98.  
  99. private void ban(SCMCDead ban) {
  100. if (this.banned.contains(ban)) {
  101. return;
  102. }
  103. this.banned.add(ban);
  104. ban.addToYaml(this.config);
  105. try {
  106. this.config.save(this.configFile);
  107. }
  108. catch (IOException e) {
  109. e.printStackTrace();
  110. }
  111. }
  112.  
  113. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  114. {
  115. if (cmd.getName().equalsIgnoreCase("hcub")) {
  116. if (args.length < 1) {
  117. sender.sendMessage(ChatColor.RED + "Sposob uzycia: " + ChatColor.AQUA + cmd.getUsage());
  118. return true;
  119. }
  120. OfflinePlayer op = Bukkit.getOfflinePlayer(args[0]);
  121. if (op == null) {
  122. sender.sendMessage(ChatColor.RED + "Nie znaleziono gracza!");
  123. return false;
  124. }
  125. for (SCMCDead ban : this.banned) {
  126. if (ban.getName().equals(op.getName())) {
  127. removeBan(ban);
  128. sender.sendMessage(ChatColor.GREEN + "Gracz odbanowany!");
  129. break;
  130. }
  131. }
  132. return true;
  133. }
  134.  
  135. return true;
  136. }
  137.  
  138. public void removeBan(SCMCDead b) {
  139. String path = "Bans." + b.getName();
  140. this.config.set(path, null);
  141. this.banned.remove(b);
  142. if (!this.banned.isEmpty()) {
  143. for (SCMCDead ban : this.banned)
  144. ban.addToYaml(this.config);
  145. }
  146. try
  147. {
  148. this.config.save(this.configFile);
  149. }
  150. catch (IOException e) {
  151. e.printStackTrace();
  152. }
  153. }
  154.  
  155. @EventHandler
  156. public void onDeath(PlayerDeathEvent evt) {
  157. Player player = evt.getEntity();
  158. if (player.hasPermission("scmcdead.noban"))
  159. return;
  160. SCMCDead ban = new SCMCDead(player.getName(), this.banLenght.intValue());
  161. ban(ban);
  162. player.sendMessage(ChatColor.translateAlternateColorCodes('&', this.farewell));
  163. String kick = " " + ChatColor.translateAlternateColorCodes('&', this.bannedMessage.replace("%a", ban.whenExpires()));
  164. Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(player, kick){
  165. public void run() {
  166. this.val$player.kickPlayer(this.val$kick);
  167. }
  168. }
  169. , 200L);
  170. }
  171. @EventHandler
  172. public void onJoin(PlayerLoginEvent evt) {
  173. Player p = evt.getPlayer();
  174. if (!this.banned.isEmpty())
  175. for (SCMCDead ban : this.banned)
  176. if (ban.getName().equalsIgnoreCase(p.getName())) {
  177. if (ban.isExpired()) {
  178. removeBan(ban);
  179. return;
  180. }
  181. String kick = " " + ChatColor.translateAlternateColorCodes('&', this.bannedMessage.replace("%a", ban.whenExpires()));
  182. evt.disallow(PlayerLoginEvent.Result.KICK_BANNED, kick);
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement