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

  ViewVC Help
Powered by ViewVC 1.1.20