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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1857 by torben, Sun Oct 14 11:48:43 2012 UTC revision 1967 by torben, Thu Apr 4 12:15:09 2013 UTC
# Line 3  package dk.thoerup.bukkit.hoeruputils; Line 3  package dk.thoerup.bukkit.hoeruputils;
3  import org.bukkit.ChatColor;  import org.bukkit.ChatColor;
4  import org.bukkit.Location;  import org.bukkit.Location;
5  import org.bukkit.Server;  import org.bukkit.Server;
6    import org.bukkit.World;
7  import org.bukkit.command.Command;  import org.bukkit.command.Command;
8  import org.bukkit.command.CommandExecutor;  import org.bukkit.command.CommandExecutor;
9  import org.bukkit.command.CommandSender;  import org.bukkit.command.CommandSender;
10  import org.bukkit.entity.Player;  import org.bukkit.entity.Player;
11    import org.bukkit.OfflinePlayer;
12  import org.bukkit.plugin.Plugin;  import org.bukkit.plugin.Plugin;
13    
14  import org.bukkit.event.Listener;  import org.bukkit.event.Listener;
# Line 15  import org.bukkit.event.player.PlayerTel Line 17  import org.bukkit.event.player.PlayerTel
17  import org.bukkit.event.player.PlayerPortalEvent;  import org.bukkit.event.player.PlayerPortalEvent;
18  import org.bukkit.event.player.PlayerMoveEvent;  import org.bukkit.event.player.PlayerMoveEvent;
19  import org.bukkit.event.player.PlayerJoinEvent;  import org.bukkit.event.player.PlayerJoinEvent;
20    import org.bukkit.event.player.PlayerRespawnEvent;
21    
22  import org.bukkit.event.block.BlockBreakEvent;  import org.bukkit.event.block.BlockBreakEvent;
23  import org.bukkit.event.block.BlockPlaceEvent;  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;  import java.util.ArrayList;
31    import java.util.Set;
32  import java.util.TreeSet;  import java.util.TreeSet;
33    
34  public class Jail implements CommandExecutor,  Listener {  public class Jail implements CommandExecutor,  Listener {
35                    
36          Plugin plugin;          HoerupUtilsPlugin  plugin;
37    
38          TreeSet<String> jailed = new TreeSet<String>();          TreeSet<String> jailed = new TreeSet<String>();
39    
# Line 33  public class Jail implements CommandExec Line 42  public class Jail implements CommandExec
42    
43          final double maxDist = 25.0;          final double maxDist = 25.0;
44                    
45          public Jail(Plugin plugin) {          public Jail(HoerupUtilsPlugin  plugin) {
46                  this.plugin = plugin;                  this.plugin = plugin;
47    
                 jailLocation = new Location( plugin.getServer().getWorld("world"), 528.0, 68.0, 57);  
                 releaseLocation = new Location( plugin.getServer().getWorld("world"), 124.0, 68.0, 78);  
48    
49                  jailed.add("hoerup");                  load();
50          }          }
51    
52          public void save() {          public void load() {
53          }                  File configFile = new File(plugin.getDataFolder(), "jail.yml");
54    
55          @Override                  if (!configFile.exists() ) {
56          public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {                          System.out.println("[HoerupJail] jail.yml not found");
57                  if (! (sender instanceof Player) ) {                  }
58                          sender.sendMessage("only use these commands in-game");                  YamlConfiguration config = new YamlConfiguration();
59                          return true;                  try {
60                            config.load(configFile);
61                    } catch (Exception e) {
62                            System.out.println("[HoerupJail] exception loading jails : " + e.getMessage() );
63                            return;
64                  }                  }
65    
66                  Player p = (Player) sender;                  jailLocation = loadLocation(config, plugin.getServer(), "jailloc");
67                    releaseLocation = loadLocation(config, plugin.getServer(), "releaseloc");
68    
69                  if ( !p.isOp()) {                  Set<String> tmpSet = (Set<String>) config.get("jails");
70                          p.sendMessage("Only server operators may use this command");                  jailed.addAll(tmpSet);
71                          return true;          }
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) {                  if (args.length == 0) {
117                          p.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");                          sender.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
118                          return true;                          return true;
119                  }                  }
120                    
121                    if (sender instanceof Player ) {
122                            Player p = (Player) sender;
123                            if ( p.isOp() || p.hasPermission("hoeruputils.jail") ) {
124                                    //do nothing
125                            } else {
126                                    p.sendMessage("Only server operators or players with hoeruputils.jail priv may use this command");
127                                    return true;
128                            }
129                    } else {
130                            if ( args[0].equals("imprison") || args[0].equals("release") || args[0].equals("list") ) {
131                                    //do nothing
132                            } else {
133                                    sender.sendMessage("only imprison, release and list may be used from console");
134                                    return true;
135                            }
136                    }
137    
138    
139                  if (args[0].equals("imprison")) {                  if (args[0].equals("imprison")) {
140                          if (args.length != 2) {                          if (args.length != 2) {
141                                    sender.sendMessage("You must specify the player");
142                                  return true;                                  return true;
143                          }                          }
144    
145                          Player inmate = sender.getServer().getPlayer( args[1] );                          OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
146                          if (inmate == null) {                          if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
147                                  p.sendMessage("Player not found");                                  sender.sendMessage("Player not found");
148                                  return true;                                      return true;    
149                          }                                }      
150    
151                            if (inmate instanceof Player) {
152                          inmate.sendMessage("You have been imprisoned");                                  Player p = (Player) inmate;
153                          inmate.teleport( jailLocation );                                  p.sendMessage("You have been imprisoned");
154                                    p.teleport( jailLocation );
155                            }
156                          jailed.add( inmate.getName() );                          jailed.add( inmate.getName() );
157                          save();                          save();
158                            sender.sendMessage("player " + inmate.getName() + " is imprisoned");
159                          return true;                          return true;
160                  }                  }
161    
162                  if (args[0].equals("release")) {                  if (args[0].equals("release")) {
163                          if (args.length != 2) {                          if (args.length != 2) {
164                                    sender.sendMessage("You must specify the player");
165                                  return true;                                  return true;
166                          }                          }
167    
168                          Player inmate = sender.getServer().getPlayer( args[1] );                          OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
169                          if (inmate == null) {                          if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
170                                  p.sendMessage("Player not found");                                  sender.sendMessage("Player not found");
171                                  return true;                                      return true;    
172                          }                                }      
173    
   
174                          jailed.remove( inmate.getName() );                          jailed.remove( inmate.getName() );
175                          inmate.sendMessage("You have been released from prison");                          if (inmate instanceof Player) {
176                          inmate.teleport( releaseLocation );                                  Player p = (Player) inmate;
177                                    p.sendMessage("You have been released from jail");
178                                    p.teleport( releaseLocation );
179                            } else {
180                                    plugin.getMessageWrapper().sendMessage("Jail System", inmate, "You have been release from jail - you are free to go home");
181                            }
182                          save();                          save();
183                            sender.sendMessage("player " + inmate.getName() + " is released");
184                          return true;                          return true;
185                  }                  }
186    
# Line 117  public class Jail implements CommandExec Line 199  public class Jail implements CommandExec
199                  }                  }
200    
201                  if (args[0].equals("setjail")) {                  if (args[0].equals("setjail")) {
202                            Player p = (Player) sender;
203                          jailLocation = p.getLocation().clone();                          jailLocation = p.getLocation().clone();
204                          p.sendMessage("New jail location has been set");                          p.sendMessage("New jail location has been set");
205                          save();                          save();
206                          return true;                          return true;
207                  }                  }
208                  if (args[0].equals("setrelease")) {                  if (args[0].equals("setrelease")) {
209                            Player p = (Player) sender;
210                          releaseLocation = p.getLocation().clone();                          releaseLocation = p.getLocation().clone();
211                          p.sendMessage("New release location has been set");                          p.sendMessage("New release location has been set");
212                          save();                          save();
# Line 130  public class Jail implements CommandExec Line 214  public class Jail implements CommandExec
214                  }                  }
215    
216                  if (args[0].equals("tpjail")) {                  if (args[0].equals("tpjail")) {
217                            Player p = (Player) sender;
218                          p.teleport(jailLocation);                          p.teleport(jailLocation);
219                          return true;                          return true;
220                  }                  }
221                  if (args[0].equals("tprelease")) {                  if (args[0].equals("tprelease")) {
222                            Player p = (Player) sender;
223                          p.teleport(releaseLocation);                          p.teleport(releaseLocation);
224                          return true;                          return true;
225                  }                  }
# Line 215  public class Jail implements CommandExec Line 301  public class Jail implements CommandExec
301                          event.setCancelled( true );                                              event.setCancelled( true );                    
302                  }                  }
303          }          }
304    
305            @EventHandler
306            public void onRespawn(PlayerRespawnEvent event) {
307                    Player p = event.getPlayer();
308                    if (jailed.contains( p.getName() ) ) {
309                            event.setRespawnLocation( jailLocation );
310                            p.teleport( jailLocation );
311                    }
312            }
313  }  }
314                                    

Legend:
Removed from v.1857  
changed lines
  Added in v.1967

  ViewVC Help
Powered by ViewVC 1.1.20