Advertisement
Guest User

Tim

a guest
Jun 25th, 2019
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. package Suchti;
  2.  
  3. import org.bukkit.ChatColor;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.EventHandler;
  6. import org.bukkit.event.Listener;
  7. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  8. import org.bukkit.event.entity.EntityPickupItemEvent;
  9. import org.bukkit.event.entity.PlayerDeathEvent;
  10. import org.bukkit.plugin.java.JavaPlugin;
  11.  
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. import java.util.UUID;
  15. //<- Sind Tipps an mich selber :D
  16. public class SuchtisAntiTrap extends JavaPlugin implements Listener {
  17. // Map für den Cooldown
  18. private final Map<UUID, Long> cooldowns = new HashMap<>();
  19. // Map für das Chat gespamme (könnte während des events auf den Keks gehen xD)
  20. private final Map<UUID, Long> chat_cooldown = new HashMap<>();
  21.  
  22. @Override
  23. public void onEnable() {
  24. // Config
  25. saveDefaultConfig();
  26.  
  27. // Listener
  28. getServer().getPluginManager().registerEvents(this, this);
  29. }
  30.  
  31. @EventHandler
  32. public void on(final PlayerDeathEvent e) {
  33. // Gibt den Cooldown wenn der Spieler Tod is
  34. if(e.getEntity().hasPermission("activate.antitrap"))
  35. cooldowns.put(e.getEntity().getUniqueId(), System.currentTimeMillis());
  36. }
  37.  
  38. @EventHandler
  39. public void on(final EntityPickupItemEvent e) {
  40. if(!(e.getEntity() instanceof Player)) return;
  41.  
  42. // Checkt "Kann nichts aufheben während des Cooldowns"
  43. if(!getConfig().getBoolean("cant-pickup-on-cooldown")) return;
  44.  
  45. // gibt den Cooldown
  46. Long time = cooldowns.get(e.getEntity().getUniqueId());
  47. if(time == null) return;
  48.  
  49. // Liest die Sekunden aus config.yml
  50. int seconds = getConfig().getInt("cooldown");
  51. if(seconds == 0) return;
  52.  
  53. // Checkt den Cooldown
  54. float diff = time + (seconds * 1000) - System.currentTimeMillis();
  55. if(diff > 0) {
  56. // Cooldown! Schaltet aufheben aus
  57. e.setCancelled(true);
  58.  
  59. // wenn es länger braucht als <X sekunden, lassen wir den Code weiter nachrichten senden
  60. int cooldown_minimal = getConfig().getInt("message-spam");
  61. if(cooldown_minimal < diff / 1000) return;
  62.  
  63. // Handling message (um Spam zu vermeiden)
  64. // Holt sich den Cooldown für die letzte Nachricht
  65. Long cd = chat_cooldown.get(e.getEntity().getUniqueId());
  66. if(cd != null) {
  67. // Schaut ob cooldown abgelaufen is
  68. if(cd + 1000 > System.currentTimeMillis()) return;
  69. // Entfernt Chat cooldowns
  70. chat_cooldown.remove(e.getEntity().getUniqueId());
  71. }
  72.  
  73. // Lädt die zu spammende Nachricht
  74. String message = getConfig().getString("message");
  75. if(message == null) return;
  76. message = message.replace("{seconds}", String.valueOf(Math.round(diff / 1000)));
  77.  
  78. // Sendet die Spam nachricht
  79. e.getEntity().sendMessage(ChatColor.translateAlternateColorCodes('&', message));
  80. chat_cooldown.put(e.getEntity().getUniqueId(), System.currentTimeMillis());
  81. return;
  82. }
  83.  
  84. // Entfernt den Cooldown
  85. cooldowns.remove(e.getEntity().getUniqueId());
  86. }
  87.  
  88. @EventHandler
  89. public void on(final EntityDamageByEntityEvent e) {
  90. if (!(e.getDamager() instanceof Player && e.getEntity() instanceof Player)) return;
  91.  
  92. // Holt sich die Sekunden angabe aus Config.yml
  93. int seconds = getConfig().getInt("cooldown");
  94. if(seconds == 0) return;
  95.  
  96. float diff = 0;
  97. boolean sendMessage = false;
  98.  
  99. // Prüft "Config Angreifen auf an oder aus?"
  100. if(!getConfig().getBoolean("attack-on-cooldown")) {
  101. Long attacker = cooldowns.get(e.getDamager().getUniqueId());
  102. if (attacker != null) {
  103. diff = attacker + (seconds * 1000) - System.currentTimeMillis();
  104. if(diff > 0){
  105. sendMessage = true;
  106. e.setCancelled(true);
  107. }
  108. else cooldowns.remove(e.getDamager().getUniqueId());
  109. }
  110. }
  111.  
  112. // Prüft "Config angegriffen werden an oder aus?"
  113. if(!getConfig().getBoolean("attacked-on-cooldown")){
  114. Long victim = cooldowns.get(e.getEntity().getUniqueId());
  115. if (victim != null) {
  116. diff = victim + (seconds * 1000) - System.currentTimeMillis();
  117. if(diff > 0) e.setCancelled(true);
  118. else cooldowns.remove(e.getEntity().getUniqueId());
  119. }
  120. }
  121.  
  122. // Wenn es abbricht wird ne nachricht gesendet
  123. if(e.isCancelled() && sendMessage){
  124. // wenn es länger braucht als <X sekunden, lassen wir den Code weiter nachrichten senden
  125. int cooldown_minimal = getConfig().getInt("message-spam");
  126. if(cooldown_minimal < diff / 1000) return;
  127.  
  128. // Nachricht laden
  129. String message = getConfig().getString("message");
  130. if(message == null) return;
  131. message = message.replace("{seconds}", String.valueOf(Math.round(diff / 1000)));
  132.  
  133. // Nachricht senden
  134. e.getDamager().sendMessage(ChatColor.translateAlternateColorCodes('&', message));
  135. }
  136. }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement