]>
git.defcon.no Git - YAVote/blob - src/no/defcon/yavote/YAVote.java
98433ba107aa0b09834bb09a930649c1b46fd49c
1 package no
.defcon
.yavote
;
5 import org
.bukkit
.ChatColor
;
6 import org
.bukkit
.command
.Command
;
7 import org
.bukkit
.command
.CommandSender
;
8 import org
.bukkit
.entity
.Player
;
9 import org
.bukkit
.plugin
.java
.JavaPlugin
;
11 import org
.bukkit
.plugin
.PluginLogger
;
13 import org
.bukkit
.event
.Listener
;
14 import org
.bukkit
.event
.EventHandler
;
15 import org
.bukkit
.event
.player
.PlayerQuitEvent
;
17 public class YAVote
extends JavaPlugin
implements Listener
{
18 public PluginLogger logger
;
19 private Votemanager manager
;
21 public void onDisable() {
25 public void onEnable() {
26 logger
= new PluginLogger(this);
27 manager
= new Votemanager(this);
29 // Set up default values for all missing config variables.
30 if ( ! getConfig().isSet("vote.timeoutSeconds") )
31 getConfig().set("vote.timeoutSeconds", 15*60L);
33 if ( ! getConfig().isSet("vote.weather.requiredPercent") )
34 getConfig().set("vote.weather.requiredPercent", 33);
36 if ( ! getConfig().isSet("vote.time.requiredPercent") )
37 getConfig().set("vote.time.requiredPercent", 33);
39 if ( ! getConfig().isSet("vote.time.dayStart") )
40 getConfig().set("vote.time.dayStart", 23500);
42 if ( ! getConfig().isSet("vote.time.nightStart") )
43 getConfig().set("vote.time.nightStart", 12500);
45 // Create config plugin data-dir if missing...
46 if(!getDataFolder().exists())
48 logger
.info("Creating configuration directory");
49 getDataFolder().mkdirs();
52 // If config.yml is missing, create it by writing out defaults.
53 if(!new File(getDataFolder(), "config.yml").exists())
55 logger
.info("Creating configuration file");
59 getServer().getPluginManager().registerEvents(this, this);
61 logger
.info("Version " + getDescription().getVersion() + " is enabled!");
65 public void onLogout(PlayerQuitEvent event
)
67 logger
.info("Triggered onLogout() with " + getServer().getOnlinePlayers().length
+ " players online.");
68 manager
.removeVote( event
.getPlayer() );
71 public boolean onCommand(CommandSender sender
, Command cmd
, String commandLabel
, String
[] args
){
72 if(cmd
.getName().equalsIgnoreCase("vote")){
73 if (!(sender
instanceof Player
)) {
74 sender
.sendMessage(ChatColor
.RED
+ "You must be an online player!");
77 Player player
= (Player
) sender
;
79 // TODO: Add check to verify that only one option is given.
81 String voteCmd
= args
[0];
83 if ( voteCmd
.equalsIgnoreCase("status") )
85 if ( ! player
.hasPermission("vote.status"))
86 return noPermissionsMessage(player
);
88 if ( ! manager
.isVoteRunning() )
90 sender
.sendMessage("No vote is currently running.");
94 return notImplemented(player
);
97 else if ( voteCmd
.equalsIgnoreCase("cancel") )
99 if ( ! player
.hasPermission("vote.cancel"))
100 return noPermissionsMessage(player
);
102 if ( ! manager
.isVoteRunning() )
104 if (! manager
.cancelVote() )
105 player
.sendMessage("I'm sorry, unable to cancel at this time.");
110 return notImplemented(player
);
112 else if ( voteCmd
.equalsIgnoreCase("sun") || voteCmd
.equalsIgnoreCase("rain") || voteCmd
.equalsIgnoreCase("storm") ||
113 voteCmd
.equalsIgnoreCase("day") || voteCmd
.equalsIgnoreCase("night") )
115 if ( ! manager
.isVoteRunning() )
117 if ( ! testPermission(voteCmd
, "start", player
))
118 return noPermissionsMessage(player
);
120 manager
.startVote( voteCmd
.toLowerCase(), player
);
125 if ( ! manager
.getVoteType().equalsIgnoreCase( voteCmd
) )
127 player
.sendMessage("A vote for " + manager
.getVoteType() + " is already running.");
131 else if ( ! testPermission(voteCmd
, "respond", player
))
132 return noPermissionsMessage(player
);
134 else if ( ! manager
.addVote( player
, true ) )
136 player
.sendMessage("Oops, I was unable to count your vote!");
143 else if ( voteCmd
.equalsIgnoreCase("yes") || voteCmd
.equalsIgnoreCase("no") )
145 if ( ! manager
.isVoteRunning() )
147 sender
.sendMessage("No vote running. Perhaps you want to start a new one?");
150 if ( ! testPermission(manager
.getVoteType(), "respond", player
))
151 return noPermissionsMessage(player
);
153 if ( ! manager
.addVote( player
, (voteCmd
.equalsIgnoreCase("yes")?
true:false)) )
155 player
.sendMessage("Oops, I was unable to count your vote!");
163 return notImplemented(player
);
168 private boolean notImplemented(Player p
) {
169 p
.sendMessage("It seems I do not know how to do that yet...");
173 private boolean noPermissionsMessage( Player p
){
174 p
.sendMessage("I'm sorry, " + p
.getDisplayName() + ", I'm afraid I can't do that.");
178 private boolean testPermission (String cmd
, String action
, Player p
)
180 if ( ( cmd
.equalsIgnoreCase("sun") ) || cmd
.equalsIgnoreCase("rain") || cmd
.equalsIgnoreCase("storm") )
182 if ( p
.hasPermission("vote.weather." + action
) ) return true;
185 if ( ( cmd
.equalsIgnoreCase("day") ) || cmd
.equalsIgnoreCase("night") )
187 if ( p
.hasPermission("vote.time." + action
) ) return true;