]> git.defcon.no Git - YAVote/blob - src/no/defcon/yavote/YAVote.java
f12edb3c28b10f92a1de991585c5cbea303dc7ce
[YAVote] / src / no / defcon / yavote / YAVote.java
1 package no.defcon.yavote;
2
3 import java.io.File;
4
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;
10
11 import org.bukkit.plugin.PluginLogger;
12
13 public class YAVote extends JavaPlugin {
14 public PluginLogger logger;
15 private Votemanager manager;
16
17 public void onDisable() {
18 // TODO: Stub.
19 }
20
21 public void onEnable() {
22 logger = new PluginLogger(this);
23 manager = new Votemanager(this);
24
25 // Set up default values for all missing config variables.
26 if ( ! getConfig().isSet("vote.timeoutSeconds") )
27 getConfig().set("vote.timeoutSeconds", 15*60L);
28
29 if ( ! getConfig().isSet("vote.weather.requiredPercent") )
30 getConfig().set("vote.weather.requiredPercent", 33);
31
32 if ( ! getConfig().isSet("vote.time.requiredPercent") )
33 getConfig().set("vote.time.requiredPercent", 33);
34
35 if ( ! getConfig().isSet("vote.time.dayStart") )
36 getConfig().set("vote.time.dayStart", 23500);
37
38 if ( ! getConfig().isSet("vote.time.nightStart") )
39 getConfig().set("vote.time.nightStart", 12500);
40
41 // Create config plugin data-dir if missing...
42 if(!getDataFolder().exists())
43 {
44 logger.info("Creating configuration directory");
45 getDataFolder().mkdirs();
46 }
47
48 // If config.yml is missing, create it by writing out defaults.
49 if(!new File(getDataFolder(), "config.yml").exists())
50 {
51 logger.info("Creating configuration file");
52 saveConfig();
53 }
54 logger.info("Version " + getDescription().getVersion() + " is enabled!");
55 }
56
57 public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
58 if(cmd.getName().equalsIgnoreCase("vote")){
59 if (!(sender instanceof Player)) {
60 sender.sendMessage(ChatColor.RED + "You must be an online player!");
61 return true;
62 }
63 Player player = (Player) sender;
64
65 // TODO: Add check to verify that only one option is given.
66
67 String voteCmd = args[0];
68
69 if ( voteCmd.equalsIgnoreCase("status") )
70 {
71 if ( ! player.hasPermission("vote.status"))
72 return noPermissionsMessage(player);
73
74 if ( ! manager.isVoteRunning() )
75 {
76 sender.sendMessage("No vote is currently running.");
77 return true;
78 }
79
80 return notImplemented(player);
81 }
82
83 else if ( voteCmd.equalsIgnoreCase("cancel") )
84 {
85 if ( ! player.hasPermission("vote.cancel"))
86 return noPermissionsMessage(player);
87
88 if ( ! manager.isVoteRunning() )
89 {
90 if (! manager.cancelVote() )
91 player.sendMessage("I'm sorry, unable to cancel at this time.");
92
93 return true;
94 }
95
96 return notImplemented(player);
97 }
98 else if ( voteCmd.equalsIgnoreCase("sun") || voteCmd.equalsIgnoreCase("rain") || voteCmd.equalsIgnoreCase("storm") ||
99 voteCmd.equalsIgnoreCase("day") || voteCmd.equalsIgnoreCase("night") )
100 {
101 if ( ! manager.isVoteRunning() )
102 {
103 if ( ! testPermission(voteCmd, "start", player ))
104 return noPermissionsMessage(player);
105
106 manager.startVote( voteCmd.toLowerCase(), player );
107 return true;
108 }
109 else
110 {
111 if ( ! manager.getVoteType().equalsIgnoreCase( voteCmd ) )
112 {
113 player.sendMessage("A vote for " + manager.getVoteType() + " is already running.");
114 return true;
115 }
116
117 else if ( ! testPermission(voteCmd, "respond", player ))
118 return noPermissionsMessage(player);
119
120 else if ( ! manager.addVote( player, true ) )
121 {
122 player.sendMessage("Oops, I was unable to count your vote!");
123 return true;
124 }
125 return true;
126 }
127 }
128
129 else if ( voteCmd.equalsIgnoreCase("yes") || voteCmd.equalsIgnoreCase("no") )
130 {
131 if ( ! manager.isVoteRunning() )
132 {
133 sender.sendMessage("No vote running. Perhaps you want to start a new one?");
134 return true;
135 }
136 if ( ! testPermission(manager.getVoteType(), "respond", player ))
137 return noPermissionsMessage(player);
138
139 if ( ! manager.addVote( player, (voteCmd.equalsIgnoreCase("yes")?true:false)) )
140 {
141 player.sendMessage("Oops, I was unable to count your vote!");
142 return true;
143 }
144 return true;
145 }
146
147
148
149 return notImplemented(player);
150 }
151 return false;
152 }
153
154 private boolean notImplemented(Player p) {
155 p.sendMessage("It seems I do not know how to do that yet...");
156 return true;
157 }
158
159 private boolean noPermissionsMessage( Player p ){
160 p.sendMessage("I'm sorry, " + p.getDisplayName() + ", I'm afraid I can't do that.");
161 return true;
162 }
163
164 private boolean testPermission (String cmd, String action, Player p)
165 {
166 if ( ( cmd.equalsIgnoreCase("sun") ) || cmd.equalsIgnoreCase("rain") || cmd.equalsIgnoreCase("storm") )
167 {
168 if ( p.hasPermission("vote.weather." + action ) ) return true;
169 else return false;
170 }
171 if ( ( cmd.equalsIgnoreCase("day") ) || cmd.equalsIgnoreCase("night") )
172 {
173 if ( p.hasPermission("vote.time." + action ) ) return true;
174 else return false;
175 }
176 return false;
177 }
178 }