]>
git.defcon.no Git - YAVote/blob - src/no/defcon/yavote/YAVote.java
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 manager
.removeVote( event
.getPlayer() );
70 public boolean onCommand(CommandSender sender
, Command cmd
, String commandLabel
, String
[] args
){
71 if(cmd
.getName().equalsIgnoreCase("vote")){
72 if (!(sender
instanceof Player
)) {
73 sender
.sendMessage(ChatColor
.RED
+ "You must be an online player!");
76 Player player
= (Player
) sender
;
78 // TODO: Add check to verify that only one option is given.
80 String voteCmd
= args
[0];
82 if ( voteCmd
.equalsIgnoreCase("status") )
84 if ( ! player
.hasPermission("vote.status"))
85 return noPermissionsMessage(player
);
87 if ( ! manager
.isVoteRunning() )
89 sender
.sendMessage("No vote is currently running.");
93 return notImplemented(player
);
96 else if ( voteCmd
.equalsIgnoreCase("cancel") )
98 if ( ! player
.hasPermission("vote.cancel"))
99 return noPermissionsMessage(player
);
101 if ( ! manager
.isVoteRunning() )
103 if (! manager
.cancelVote() )
104 player
.sendMessage("I'm sorry, unable to cancel at this time.");
109 return notImplemented(player
);
111 else if ( voteCmd
.equalsIgnoreCase("sun") || voteCmd
.equalsIgnoreCase("rain") || voteCmd
.equalsIgnoreCase("storm") ||
112 voteCmd
.equalsIgnoreCase("day") || voteCmd
.equalsIgnoreCase("night") )
114 if ( ! manager
.isVoteRunning() )
116 if ( ! testPermission(voteCmd
, "start", player
))
117 return noPermissionsMessage(player
);
119 manager
.startVote( voteCmd
.toLowerCase(), player
);
124 if ( ! manager
.getVoteType().equalsIgnoreCase( voteCmd
) )
126 player
.sendMessage("A vote for " + manager
.getVoteType() + " is already running.");
130 else if ( ! testPermission(voteCmd
, "respond", player
))
131 return noPermissionsMessage(player
);
133 else if ( ! manager
.addVote( player
, true ) )
135 player
.sendMessage("Oops, I was unable to count your vote!");
142 else if ( voteCmd
.equalsIgnoreCase("yes") || voteCmd
.equalsIgnoreCase("no") )
144 if ( ! manager
.isVoteRunning() )
146 sender
.sendMessage("No vote running. Perhaps you want to start a new one?");
149 if ( ! testPermission(manager
.getVoteType(), "respond", player
))
150 return noPermissionsMessage(player
);
152 if ( ! manager
.addVote( player
, (voteCmd
.equalsIgnoreCase("yes")?
true:false)) )
154 player
.sendMessage("Oops, I was unable to count your vote!");
162 return notImplemented(player
);
167 private boolean notImplemented(Player p
) {
168 p
.sendMessage("It seems I do not know how to do that yet...");
172 private boolean noPermissionsMessage( Player p
){
173 p
.sendMessage("I'm sorry, " + p
.getDisplayName() + ", I'm afraid I can't do that.");
177 private boolean testPermission (String cmd
, String action
, Player p
)
179 if ( ( cmd
.equalsIgnoreCase("sun") ) || cmd
.equalsIgnoreCase("rain") || cmd
.equalsIgnoreCase("storm") )
181 if ( p
.hasPermission("vote.weather." + action
) ) return true;
184 if ( ( cmd
.equalsIgnoreCase("day") ) || cmd
.equalsIgnoreCase("night") )
186 if ( p
.hasPermission("vote.time." + action
) ) return true;