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