/[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 2438 by torben, Mon Mar 9 14:36:19 2015 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  import org.bukkit.event.Listener;  import org.bukkit.event.Listener;
14  import org.bukkit.event.EventHandler;  import org.bukkit.event.EventHandler;
15  import org.bukkit.event.player.PlayerTeleportEvent;  import org.bukkit.event.player.PlayerTeleportEvent;
16  import org.bukkit.event.player.PlayerPortalEvent;  import org.bukkit.event.player.PlayerPortalEvent;
17  import org.bukkit.event.player.PlayerMoveEvent;  import org.bukkit.event.player.PlayerMoveEvent;
18  import org.bukkit.event.player.PlayerJoinEvent;  import org.bukkit.event.player.PlayerJoinEvent;
19    import org.bukkit.event.player.PlayerRespawnEvent;
20  import org.bukkit.event.block.BlockBreakEvent;  import org.bukkit.event.block.BlockBreakEvent;
21  import org.bukkit.event.block.BlockPlaceEvent;  import org.bukkit.event.block.BlockPlaceEvent;
22    import org.bukkit.configuration.file.YamlConfiguration;
23    
24    import java.io.*;
25  import java.util.ArrayList;  import java.util.ArrayList;
26    import java.util.Set;
27  import java.util.TreeSet;  import java.util.TreeSet;
28    
29  public class Jail implements CommandExecutor,  Listener {  public class Jail implements CommandExecutor,  Listener {
30                    
31          Plugin plugin;          HoerupUtilsPlugin  plugin;
32    
33          TreeSet<String> jailed = new TreeSet<String>();          TreeSet<String> jailed = new TreeSet<String>();
34    
# Line 33  public class Jail implements CommandExec Line 37  public class Jail implements CommandExec
37    
38          final double maxDist = 25.0;          final double maxDist = 25.0;
39                    
40          public Jail(Plugin plugin) {          public Jail(HoerupUtilsPlugin  plugin) {
41                  this.plugin = plugin;                  this.plugin = plugin;
42    
                 jailLocation = new Location( plugin.getServer().getWorld("world"), 528.0, 68.0, 57);  
                 releaseLocation = new Location( plugin.getServer().getWorld("world"), 124.0, 68.0, 78);  
43    
44                  jailed.add("hoerup");                  load();
45          }          }
46    
47          public void save() {          public void load() {
48          }                  File configFile = new File(plugin.getDataFolder(), "jail.yml");
49    
50          @Override                  if (!configFile.exists() ) {
51          public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {                          System.out.println("[HoerupJail] jail.yml not found");
                 if (! (sender instanceof Player) ) {  
                         sender.sendMessage("only use these commands in-game");  
                         return true;  
52                  }                  }
53                    YamlConfiguration config = new YamlConfiguration();
54                    try {
55                            config.load(configFile);
56                    } catch (Exception e) {
57                            System.out.println("[HoerupJail] exception loading jails : " + e.getMessage() );
58                            return;
59                    }
60    
61                    jailLocation = loadLocation(config, plugin.getServer(), "jailloc");
62                    releaseLocation = loadLocation(config, plugin.getServer(), "releaseloc");
63    
64                    @SuppressWarnings("unchecked")
65                    Set<String> tmpSet = (Set<String>) config.get("jails");
66                    jailed.addAll(tmpSet);
67            }
68    
69                  Player p = (Player) sender;          public void save() {
70                    File configFile = new File(plugin.getDataFolder(), "jail.yml");
71    
72                  if ( !p.isOp()) {                  YamlConfiguration config = new YamlConfiguration();
73                          p.sendMessage("Only server operators may use this command");                  saveLocation(config, jailLocation, "jailloc");
74                          return true;                  saveLocation(config, jailLocation, "releaseloc");
75                    config.set("jails", jailed);
76    
77                    try {
78                            config.save(configFile);
79                    } catch (java.io.IOException e) {
80                            System.out.println("[HoerupJial] exception saving jails : " + e.getMessage() );
81                  }                  }
82                    
83            }
84    
85            private static Location loadLocation(YamlConfiguration config, Server server, String prefix) {
86                    String world = config.getString( prefix + ".world");
87                    double x = config.getDouble( prefix + ".x");
88                    double y = config.getDouble( prefix + ".y");
89                    double z = config.getDouble( prefix + ".z");
90                    float pitch = (float) config.getDouble( prefix + ".pitch");
91                    float yaw = (float) config.getDouble( prefix + ".yaw");
92    
93                    World w = server.getWorld(world);
94    
95                    return new Location(w,x,y,z,yaw,pitch);
96            }
97    
98            private static void saveLocation(YamlConfiguration config, Location location, String prefix) {
99                    if (location == null)
100                            return;
101    
102                    config.set( prefix + ".world", location.getWorld().getName() );
103                    config.set( prefix + ".x", location.getX() );
104                    config.set( prefix + ".y", location.getY() );
105                    config.set( prefix + ".z", location.getZ() );
106                    config.set( prefix + ".pitch", location.getPitch() );
107                    config.set( prefix + ".yaw", location.getYaw() );
108            }
109    
110            @Override
111            public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
112                  if (args.length == 0) {                  if (args.length == 0) {
113                          p.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");                          sender.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
114                          return true;                          return true;
115                  }                  }
116                    
117                    if (sender instanceof Player ) {
118                            Player p = (Player) sender;
119                            if ( p.isOp() || p.hasPermission("hoeruputils.jail") ) {
120                                    //do nothing
121                            } else {
122                                    p.sendMessage("Only server operators or players with hoeruputils.jail priv may use this command");
123                                    return true;
124                            }
125                    } else {
126                            if ( args[0].equals("imprison") || args[0].equals("release") || args[0].equals("list") ) {
127                                    //do nothing
128                            } else {
129                                    sender.sendMessage("only imprison, release and list may be used from console");
130                                    return true;
131                            }
132                    }
133    
134    
135                  if (args[0].equals("imprison")) {                  if (args[0].equals("imprison")) {
136                          if (args.length != 2) {                          if (args.length != 2) {
137                                    sender.sendMessage("You must specify the player");
138                                  return true;                                  return true;
139                          }                          }
140    
141                          Player inmate = sender.getServer().getPlayer( args[1] );                          OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
142                          if (inmate == null) {                          if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
143                                  p.sendMessage("Player not found");                                  sender.sendMessage("Player not found");
144                                  return true;                                      return true;    
145                          }                                }      
146    
147                            if (inmate instanceof Player) {
148                          inmate.sendMessage("You have been imprisoned");                                  Player p = (Player) inmate;
149                          inmate.teleport( jailLocation );                                  p.sendMessage("You have been imprisoned");
150                                    p.teleport( jailLocation );
151                            }
152                          jailed.add( inmate.getName() );                          jailed.add( inmate.getName() );
153                          save();                          save();
154                            sender.sendMessage("player " + inmate.getName() + " is imprisoned");
155                          return true;                          return true;
156                  }                  }
157    
158                  if (args[0].equals("release")) {                  if (args[0].equals("release")) {
159                          if (args.length != 2) {                          if (args.length != 2) {
160                                    sender.sendMessage("You must specify the player");
161                                  return true;                                  return true;
162                          }                          }
163    
164                          Player inmate = sender.getServer().getPlayer( args[1] );                          OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
165                          if (inmate == null) {                          if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
166                                  p.sendMessage("Player not found");                                  sender.sendMessage("Player not found");
167                                  return true;                                      return true;    
168                          }                                }      
169    
   
170                          jailed.remove( inmate.getName() );                          jailed.remove( inmate.getName() );
171                          inmate.sendMessage("You have been released from prison");                          if (inmate instanceof Player) {
172                          inmate.teleport( releaseLocation );                                  Player p = (Player) inmate;
173                                    p.sendMessage("You have been released from jail");
174                                    p.teleport( releaseLocation );
175                            } else {
176                                    plugin.getMessageWrapper().sendMessage("Jail System", inmate, "You have been release from jail - you are free to go home");
177                            }
178                          save();                          save();
179                            sender.sendMessage("player " + inmate.getName() + " is released");
180                          return true;                          return true;
181                  }                  }
182    
# Line 117  public class Jail implements CommandExec Line 195  public class Jail implements CommandExec
195                  }                  }
196    
197                  if (args[0].equals("setjail")) {                  if (args[0].equals("setjail")) {
198                            Player p = (Player) sender;
199                          jailLocation = p.getLocation().clone();                          jailLocation = p.getLocation().clone();
200                          p.sendMessage("New jail location has been set");                          p.sendMessage("New jail location has been set");
201                          save();                          save();
202                          return true;                          return true;
203                  }                  }
204                  if (args[0].equals("setrelease")) {                  if (args[0].equals("setrelease")) {
205                            Player p = (Player) sender;
206                          releaseLocation = p.getLocation().clone();                          releaseLocation = p.getLocation().clone();
207                          p.sendMessage("New release location has been set");                          p.sendMessage("New release location has been set");
208                          save();                          save();
# Line 130  public class Jail implements CommandExec Line 210  public class Jail implements CommandExec
210                  }                  }
211    
212                  if (args[0].equals("tpjail")) {                  if (args[0].equals("tpjail")) {
213                            Player p = (Player) sender;
214                          p.teleport(jailLocation);                          p.teleport(jailLocation);
215                          return true;                          return true;
216                  }                  }
217                  if (args[0].equals("tprelease")) {                  if (args[0].equals("tprelease")) {
218                            Player p = (Player) sender;
219                          p.teleport(releaseLocation);                          p.teleport(releaseLocation);
220                          return true;                          return true;
221                  }                  }
# Line 215  public class Jail implements CommandExec Line 297  public class Jail implements CommandExec
297                          event.setCancelled( true );                                              event.setCancelled( true );                    
298                  }                  }
299          }          }
300    
301            @EventHandler
302            public void onRespawn(PlayerRespawnEvent event) {
303                    Player p = event.getPlayer();
304                    if (jailed.contains( p.getName() ) ) {
305                            event.setRespawnLocation( jailLocation );
306                            p.teleport( jailLocation );
307                    }
308            }
309  }  }
310                                    

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

  ViewVC Help
Powered by ViewVC 1.1.20