Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- public class Events implements CommandExecutor{
- private main instance;
- public Events(main i) {
- this.instance = i;
- }
- private Map<String, Event> events = new HashMap<>();
- public boolean onCommand(CommandSender s, Command c, String l, String[] args) {
- if(c.getName().equalsIgnoreCase("event")) {
- handleEvent(s, args);
- }
- else if(c.getName().equalsIgnoreCase("events")) {
- handleEvents(s, args);
- }
- else if(c.getName().equalsIgnoreCase("join")) {
- handleJoin(s, args);
- }
- return true;
- }
- public void handleEvent(CommandSender s, String[] args) {
- if(! (s instanceof Player)) {
- s.sendMessage("§4You need to be a player to use this command!");
- return;
- }
- Player p = (Player) s;
- if(! s.hasPermission("fatalevents.event")) {
- s.sendMessage("§4§lYou can't use that command!");
- return;
- }
- if(args.length == 0){
- s.sendMessage("§6§lUsage:");
- s.sendMessage("§6§l/event §c§l<event name>");
- s.sendMessage("§3§lUse /events to see all events");
- return;
- }
- String eventName = args[0];
- if(events.containsKey(eventName)) {
- s.sendMessage("§4There's already an event going on by that name!");
- s.sendMessage("§4Pick another event name!");
- return;
- }
- final Event event = new Event(p, eventName);
- events.put(eventName, event);
- final int cd = 30;
- Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " has been scheduled to start in " + cd + " seconds by " + p.getDisplayName());
- for(int i = 0; i < cd; ++i) {
- final int remaining = cd - i;
- instance.getServer().getScheduler().scheduleSyncDelayedTask(instance, new Runnable() {
- public void run() {
- Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " will start in " + remaining + " seconds.");
- }
- }, i * 20L);
- }
- instance.getServer().getScheduler().scheduleSyncDelayedTask(instance, new Runnable() {
- public void run() {
- Bukkit.broadcastMessage("§c§l[§6§lFatalEvents§c§l] §6§l" + event.getName() + " has started!");
- events.remove(event.getName());
- }
- }, cd * 20L);
- }
- public void handleEvents(CommandSender s, String[] args) {
- if(! s.hasPermission("fatalevents.events")) {
- s.sendMessage("§4§lYou can't use that command!");
- return;
- }
- if(events.isEmpty()) {
- s.sendMessage("§cThere are no events going on right now!");
- return;
- }
- s.sendMessage("§e§lEvents going on right now:");
- for(Event event : events.values()) {
- s.sendMessage("§6" + event.getName() + " by " + event.getOwner().getDisplayName());
- }
- }
- public void handleJoin(CommandSender s, String[] args) {
- if(! (s instanceof Player)) {
- s.sendMessage("§cNow come on man, you can't join an event on console!");
- return;
- }
- Player p = (Player) s;
- if(events.isEmpty()) {
- p.sendMessage("§cThere are no events right now! Check back later or schedule one yourself!");
- return;
- }
- String eventName;
- if(args.length == 0) {
- if(events.size() > 1) {
- p.sendMessage("§c§lMultiple events were started at the same time. Please specify which one you wish to join.");
- return;
- }
- eventName = events.keySet().iterator().next();
- } else {
- eventName = args[0];
- }
- if(! events.containsKey(eventName)) {
- p.sendMessage("§4There is no event by that name!");
- return;
- }
- Event event = events.get(eventName);
- if(event.isParticipant(p)) {
- event.removeParticipant(p);
- p.sendMessage("§cYou left the event!");
- } else {
- event.addParticipant(p);
- p.sendMessage("§aYou joined the " + eventName + " event! Enjoy!");
- }
- }
- private class Event {
- private Player owner;
- private Location spawn;
- private String name;
- private List<Player> participants;
- public Event(Player owner, String name) {
- this.owner = owner;
- this.spawn = owner.getLocation();
- this.name = name;
- this.participants = new ArrayList<>();
- }
- public void addParticipant(Player player) {
- participants.add(player);
- player.teleport(spawn);
- }
- public void removeParticipant(Player player) {
- participants.remove(player);
- }
- public boolean isParticipant(Player player) {
- return participants.contains(player);
- }
- public Player getOwner() {
- return owner;
- }
- public String getName() {
- return name;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement