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

Annotation 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 - (hide 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 torben 1856 package dk.thoerup.bukkit.hoeruputils;
2    
3     import org.bukkit.ChatColor;
4     import org.bukkit.Location;
5     import org.bukkit.Server;
6 torben 1858 import org.bukkit.World;
7 torben 1856 import org.bukkit.command.Command;
8     import org.bukkit.command.CommandExecutor;
9     import org.bukkit.command.CommandSender;
10     import org.bukkit.entity.Player;
11 torben 1862 import org.bukkit.OfflinePlayer;
12 torben 1856 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 torben 1859 import org.bukkit.event.player.PlayerRespawnEvent;
21 torben 1856
22     import org.bukkit.event.block.BlockBreakEvent;
23     import org.bukkit.event.block.BlockPlaceEvent;
24    
25 torben 1858 import org.bukkit.configuration.file.YamlConfiguration;
26    
27     import java.io.File;
28     import java.io.*;
29    
30 torben 1856 import java.util.ArrayList;
31 torben 1858 import java.util.Set;
32 torben 1856 import java.util.TreeSet;
33    
34     public class Jail implements CommandExecutor, Listener {
35    
36 torben 1862 HoerupUtilsPlugin plugin;
37 torben 1856
38     TreeSet<String> jailed = new TreeSet<String>();
39    
40     Location jailLocation;
41     Location releaseLocation;
42    
43     final double maxDist = 25.0;
44    
45 torben 1862 public Jail(HoerupUtilsPlugin plugin) {
46 torben 1856 this.plugin = plugin;
47    
48    
49 torben 1858 load();
50 torben 1856 }
51    
52 torben 1858 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 torben 1857 public void save() {
74 torben 1858 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 torben 1857 }
88    
89 torben 1858 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 torben 1856 @Override
115     public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
116 torben 1860 if (args.length == 0) {
117     sender.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
118 torben 1856 return true;
119     }
120 torben 1860
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 torben 1861 if ( args[0].equals("imprison") || args[0].equals("release") || args[0].equals("list") ) {
129     //do nothing
130     } else {
131 torben 1860 sender.sendMessage("only imprison, release and list may be used from console");
132     return true;
133     }
134 torben 1856 }
135    
136    
137     if (args[0].equals("imprison")) {
138     if (args.length != 2) {
139 torben 1861 sender.sendMessage("You must specify the player");
140 torben 1856 return true;
141     }
142    
143 torben 1862 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
144     if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
145 torben 1860 sender.sendMessage("Player not found");
146 torben 1856 return true;
147     }
148    
149 torben 1862 if (inmate instanceof Player) {
150     Player p = (Player) inmate;
151     p.sendMessage("You have been imprisoned");
152     p.teleport( jailLocation );
153     }
154 torben 1856 jailed.add( inmate.getName() );
155 torben 1857 save();
156 torben 1863 sender.sendMessage("player is imprisoned");
157 torben 1856 return true;
158     }
159    
160     if (args[0].equals("release")) {
161     if (args.length != 2) {
162 torben 1861 sender.sendMessage("You must specify the player");
163 torben 1856 return true;
164     }
165    
166 torben 1862 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
167     if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
168 torben 1860 sender.sendMessage("Player not found");
169 torben 1856 return true;
170     }
171    
172     jailed.remove( inmate.getName() );
173 torben 1862 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 torben 1857 save();
181 torben 1863 sender.sendMessage("player is released");
182 torben 1856 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 torben 1857
199     if (args[0].equals("setjail")) {
200 torben 1860 Player p = (Player) sender;
201 torben 1857 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 torben 1860 Player p = (Player) sender;
208 torben 1857 releaseLocation = p.getLocation().clone();
209     p.sendMessage("New release location has been set");
210     save();
211     return true;
212     }
213    
214 torben 1856 if (args[0].equals("tpjail")) {
215 torben 1860 Player p = (Player) sender;
216 torben 1856 p.teleport(jailLocation);
217     return true;
218     }
219     if (args[0].equals("tprelease")) {
220 torben 1860 Player p = (Player) sender;
221 torben 1856 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 torben 1857 p.sendMessage("You are currently in jail and have been teleported to you cell");
251 torben 1856 }
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 torben 1859
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 torben 1856 }
312    

  ViewVC Help
Powered by ViewVC 1.1.20