Advertisement
Guest User

Untitled

a guest
Aug 4th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.69 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Location;
  8. import org.bukkit.command.Command;
  9. import org.bukkit.command.CommandExecutor;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.entity.Player;
  12.  
  13. public class Events implements CommandExecutor{
  14. private main instance;
  15.  
  16. public Events(main i) {
  17. this.instance = i;
  18. }
  19.  
  20. private Map<String, Event> events = new HashMap<>();
  21.  
  22. public boolean onCommand(CommandSender s, Command c, String l, String[] args) {
  23. if(c.getName().equalsIgnoreCase("event")) {
  24. handleEvent(s, args);
  25. }
  26. else if(c.getName().equalsIgnoreCase("events")) {
  27. handleEvents(s, args);
  28. }
  29. else if(c.getName().equalsIgnoreCase("join")) {
  30. handleJoin(s, args);
  31. }
  32.  
  33. return true;
  34. }
  35.  
  36. public void handleEvent(CommandSender s, String[] args) {
  37. if(! (s instanceof Player)) {
  38. s.sendMessage("§4You need to be a player to use this command!");
  39. return;
  40. }
  41. Player p = (Player) s;
  42. if(! s.hasPermission("fatalevents.event")) {
  43. s.sendMessage("§4§lYou can't use that command!");
  44. return;
  45. }
  46. if(args.length == 0){
  47. s.sendMessage("§6§lUsage:");
  48. s.sendMessage("§6§l/event §c§l<event name>");
  49. s.sendMessage("§3§lUse /events to see all events");
  50. return;
  51. }
  52. String eventName = args[0];
  53. if(events.containsKey(eventName)) {
  54. s.sendMessage("§4There's already an event going on by that name!");
  55. s.sendMessage("§4Pick another event name!");
  56. return;
  57. }
  58.  
  59. final Event event = new Event(p, eventName);
  60. events.put(eventName, event);
  61.  
  62. final int cd = 30;
  63. Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " has been scheduled to start in " + cd + " seconds by " + p.getDisplayName());
  64.  
  65. for(int i = 0; i < cd; ++i) {
  66. final int remaining = cd - i;
  67. instance.getServer().getScheduler().scheduleSyncDelayedTask(instance, new Runnable() {
  68. public void run() {
  69. Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " will start in " + remaining + " seconds.");
  70. }
  71. }, i * 20L);
  72. }
  73. instance.getServer().getScheduler().scheduleSyncDelayedTask(instance, new Runnable() {
  74. public void run() {
  75. Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " has started!");
  76. events.remove(event.getName());
  77. }
  78. }, cd * 20L);
  79. }
  80.  
  81. public void handleEvents(CommandSender s, String[] args) {
  82. if(! s.hasPermission("fatalevents.events")) {
  83. s.sendMessage("§4§lYou can't use that command!");
  84. return;
  85. }
  86.  
  87. if(events.isEmpty()) {
  88. s.sendMessage("§cThere are no events going on right now!");
  89. return;
  90. }
  91.  
  92. s.sendMessage("§e§lEvents going on right now:");
  93. for(Event event : events.values()) {
  94. s.sendMessage("§6" + event.getName() + " by " + event.getOwner().getDisplayName());
  95. }
  96. }
  97.  
  98. public void handleJoin(CommandSender s, String[] args) {
  99. if(! (s instanceof Player)) {
  100. s.sendMessage("§cNow come on man, you can't join an event on console!");
  101. return;
  102. }
  103. Player p = (Player) s;
  104.  
  105. if(events.isEmpty()) {
  106. p.sendMessage("§cThere are no events right now! Check back later or schedule one yourself!");
  107. return;
  108. }
  109.  
  110. String eventName;
  111. if(args.length == 0) {
  112. if(events.size() > 1) {
  113. p.sendMessage("§c§lMultiple events were started at the same time. Please specify which one you wish to join.");
  114. return;
  115. }
  116. eventName = events.keySet().iterator().next();
  117. } else {
  118. eventName = args[0];
  119. }
  120.  
  121. if(! events.containsKey(eventName)) {
  122. p.sendMessage("§4There is no event by that name!");
  123. return;
  124. }
  125.  
  126. Event event = events.get(eventName);
  127. if(event.isParticipant(p)) {
  128. event.removeParticipant(p);
  129. p.sendMessage("§cYou left the event!");
  130. } else {
  131. event.addParticipant(p);
  132. p.sendMessage("§aYou joined the " + eventName + " event! Enjoy!");
  133. }
  134. }
  135.  
  136. private class Event {
  137. private Player owner;
  138. private Location spawn;
  139. private String name;
  140. private List<Player> participants;
  141.  
  142. public Event(Player owner, String name) {
  143. this.owner = owner;
  144. this.spawn = owner.getLocation();
  145. this.name = name;
  146. this.participants = new ArrayList<>();
  147. }
  148.  
  149. public void addParticipant(Player player) {
  150. participants.add(player);
  151. player.teleport(spawn);
  152. }
  153.  
  154. public void removeParticipant(Player player) {
  155. participants.remove(player);
  156. }
  157.  
  158. public boolean isParticipant(Player player) {
  159. return participants.contains(player);
  160. }
  161.  
  162. public Player getOwner() {
  163. return owner;
  164. }
  165.  
  166. public String getName() {
  167. return name;
  168. }
  169. }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement