/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/Jail.java
ViewVC logotype

Contents of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/Jail.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1863 - (show annotations) (download)
Mon Oct 15 08:02:16 2012 UTC (11 years, 7 months ago) by torben
File size: 8649 byte(s)
return a ok message when imprison|jail is done
1 package dk.thoerup.bukkit.hoeruputils;
2
3 import org.bukkit.ChatColor;
4 import org.bukkit.Location;
5 import org.bukkit.Server;
6 import org.bukkit.World;
7 import org.bukkit.command.Command;
8 import org.bukkit.command.CommandExecutor;
9 import org.bukkit.command.CommandSender;
10 import org.bukkit.entity.Player;
11 import org.bukkit.OfflinePlayer;
12 import org.bukkit.plugin.Plugin;
13
14 import org.bukkit.event.Listener;
15 import org.bukkit.event.EventHandler;
16 import org.bukkit.event.player.PlayerTeleportEvent;
17 import org.bukkit.event.player.PlayerPortalEvent;
18 import org.bukkit.event.player.PlayerMoveEvent;
19 import org.bukkit.event.player.PlayerJoinEvent;
20 import org.bukkit.event.player.PlayerRespawnEvent;
21
22 import org.bukkit.event.block.BlockBreakEvent;
23 import org.bukkit.event.block.BlockPlaceEvent;
24
25 import org.bukkit.configuration.file.YamlConfiguration;
26
27 import java.io.File;
28 import java.io.*;
29
30 import java.util.ArrayList;
31 import java.util.Set;
32 import java.util.TreeSet;
33
34 public class Jail implements CommandExecutor, Listener {
35
36 HoerupUtilsPlugin plugin;
37
38 TreeSet<String> jailed = new TreeSet<String>();
39
40 Location jailLocation;
41 Location releaseLocation;
42
43 final double maxDist = 25.0;
44
45 public Jail(HoerupUtilsPlugin plugin) {
46 this.plugin = plugin;
47
48
49 load();
50 }
51
52 public void load() {
53 File configFile = new File(plugin.getDataFolder(), "jail.yml");
54
55 if (!configFile.exists() ) {
56 System.out.println("[HoerupJail] jail.yml not found");
57 }
58 YamlConfiguration config = new YamlConfiguration();
59 try {
60 config.load(configFile);
61 } catch (Exception e) {
62 System.out.println("[HoerupJail] exception loading jails : " + e.getMessage() );
63 return;
64 }
65
66 jailLocation = loadLocation(config, plugin.getServer(), "jailloc");
67 releaseLocation = loadLocation(config, plugin.getServer(), "releaseloc");
68
69 Set<String> tmpSet = (Set<String>) config.get("jails");
70 jailed.addAll(tmpSet);
71 }
72
73 public void save() {
74 File configFile = new File(plugin.getDataFolder(), "jail.yml");
75
76 YamlConfiguration config = new YamlConfiguration();
77 saveLocation(config, jailLocation, "jailloc");
78 saveLocation(config, jailLocation, "releaseloc");
79 config.set("jails", jailed);
80
81 try {
82 config.save(configFile);
83 } catch (java.io.IOException e) {
84 System.out.println("[HoerupJial] exception saving jails : " + e.getMessage() );
85 }
86
87 }
88
89 private static Location loadLocation(YamlConfiguration config, Server server, String prefix) {
90 String world = config.getString( prefix + ".world");
91 double x = config.getDouble( prefix + ".x");
92 double y = config.getDouble( prefix + ".y");
93 double z = config.getDouble( prefix + ".z");
94 float pitch = (float) config.getDouble( prefix + ".pitch");
95 float yaw = (float) config.getDouble( prefix + ".yaw");
96
97 World w = server.getWorld(world);
98
99 return new Location(w,x,y,z,yaw,pitch);
100 }
101
102 private static void saveLocation(YamlConfiguration config, Location location, String prefix) {
103 if (location == null)
104 return;
105
106 config.set( prefix + ".world", location.getWorld().getName() );
107 config.set( prefix + ".x", location.getX() );
108 config.set( prefix + ".y", location.getY() );
109 config.set( prefix + ".z", location.getZ() );
110 config.set( prefix + ".pitch", location.getPitch() );
111 config.set( prefix + ".yaw", location.getYaw() );
112 }
113
114 @Override
115 public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
116 if (args.length == 0) {
117 sender.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
118 return true;
119 }
120
121 if (sender instanceof Player ) {
122 Player p = (Player) sender;
123 if ( !p.isOp()) {
124 p.sendMessage("Only server operators may use this command");
125 return true;
126 }
127 } else {
128 if ( args[0].equals("imprison") || args[0].equals("release") || args[0].equals("list") ) {
129 //do nothing
130 } else {
131 sender.sendMessage("only imprison, release and list may be used from console");
132 return true;
133 }
134 }
135
136
137 if (args[0].equals("imprison")) {
138 if (args.length != 2) {
139 sender.sendMessage("You must specify the player");
140 return true;
141 }
142
143 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
144 if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
145 sender.sendMessage("Player not found");
146 return true;
147 }
148
149 if (inmate instanceof Player) {
150 Player p = (Player) inmate;
151 p.sendMessage("You have been imprisoned");
152 p.teleport( jailLocation );
153 }
154 jailed.add( inmate.getName() );
155 save();
156 sender.sendMessage("player is imprisoned");
157 return true;
158 }
159
160 if (args[0].equals("release")) {
161 if (args.length != 2) {
162 sender.sendMessage("You must specify the player");
163 return true;
164 }
165
166 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
167 if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
168 sender.sendMessage("Player not found");
169 return true;
170 }
171
172 jailed.remove( inmate.getName() );
173 if (inmate instanceof Player) {
174 Player p = (Player) inmate;
175 p.sendMessage("You have been released from jail");
176 p.teleport( releaseLocation );
177 } else {
178 plugin.getMessageWrapper().sendMessage("Jail System", inmate, "You have been release from jail - you are free to go home");
179 }
180 save();
181 sender.sendMessage("player is released");
182 return true;
183 }
184
185 if (args[0].equals("list") ) {
186 if (jailed.size() > 0) {
187 StringBuffer sb = new StringBuffer();
188 for (String j : jailed ) {
189 sb.append(", ");
190 sb.append(j);
191 }
192 sender.sendMessage("Current inmates: " + sb.substring(2) );
193 } else {
194 sender.sendMessage("There are currently no inmates");
195 }
196 return true;
197 }
198
199 if (args[0].equals("setjail")) {
200 Player p = (Player) sender;
201 jailLocation = p.getLocation().clone();
202 p.sendMessage("New jail location has been set");
203 save();
204 return true;
205 }
206 if (args[0].equals("setrelease")) {
207 Player p = (Player) sender;
208 releaseLocation = p.getLocation().clone();
209 p.sendMessage("New release location has been set");
210 save();
211 return true;
212 }
213
214 if (args[0].equals("tpjail")) {
215 Player p = (Player) sender;
216 p.teleport(jailLocation);
217 return true;
218 }
219 if (args[0].equals("tprelease")) {
220 Player p = (Player) sender;
221 p.teleport(releaseLocation);
222 return true;
223 }
224
225 sender.sendMessage( "Unknown command: " + args[0] );
226
227 return true;
228 }
229
230 @EventHandler
231 public void onPlayerMove(PlayerMoveEvent event) {
232 Player p = event.getPlayer();
233 if (jailed.contains(p.getName() )) {
234 Location to = event.getTo();
235 double xDist = Math.abs( to.getX() - jailLocation.getX() );
236 double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
237
238 if ( xDist > maxDist || zDist > maxDist) {
239 //System.out.println("" + xDist + " / " + zDist );
240 event.setCancelled(true );
241 }
242 }
243 }
244
245 @EventHandler
246 public void onJoin(PlayerJoinEvent event) {
247 Player p = event.getPlayer();
248 if (jailed.contains( p.getName() ) ) {
249 p.teleport( jailLocation );
250 p.sendMessage("You are currently in jail and have been teleported to you cell");
251 }
252 }
253
254 @EventHandler
255 public void onBlockBreak(BlockBreakEvent event) {
256 Player p = event.getPlayer();
257 if (jailed.contains( p.getName() ) ) {
258 event.setCancelled( true );
259 }
260 }
261 @EventHandler
262 public void onBlockPlace(BlockPlaceEvent event) {
263 Player p = event.getPlayer();
264 if (jailed.contains( p.getName() ) ) {
265 event.setCancelled( true );
266 }
267 }
268
269 @EventHandler
270 public void onTeleport(PlayerTeleportEvent event) {
271 Player p = event.getPlayer();
272 if (jailed.contains( p.getName() ) ) {
273
274 //System.out.println( "Teleport: " + event.getCause().toString() );
275
276 Location from = event.getFrom();
277 Location to = event.getTo();
278 if ( from.getWorld() != to.getWorld() ) {
279 p.sendMessage("You are jailed and may not teleport");
280 event.setCancelled(true );
281 return;
282 }
283
284 double xDist = Math.abs( to.getX() - jailLocation.getX() );
285 double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
286
287 if ( xDist > maxDist || zDist > maxDist) {
288 p.sendMessage("You are jailed and may not teleport");
289 event.setCancelled(true );
290 }
291 }
292 }
293
294 @EventHandler
295 public void onPortal(PlayerPortalEvent event) {
296 Player p = event.getPlayer();
297 if (jailed.contains( p.getName() ) ) {
298 p.sendMessage("You are jailed and may not use portals");
299 event.setCancelled( true );
300 }
301 }
302
303 @EventHandler
304 public void onRespawn(PlayerRespawnEvent event) {
305 Player p = event.getPlayer();
306 if (jailed.contains( p.getName() ) ) {
307 event.setRespawnLocation( jailLocation );
308 p.teleport( jailLocation );
309 }
310 }
311 }
312

  ViewVC Help
Powered by ViewVC 1.1.20