/[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 3207 - (show annotations) (download)
Sat Aug 19 14:06:42 2017 UTC (6 years, 9 months ago) by torben
File size: 8750 byte(s)
Outcomment ebean related code
1 package dk.thoerup.bukkit.hoeruputils;
2
3 import java.io.File;
4 import java.util.Set;
5 import java.util.TreeSet;
6
7 import org.bukkit.Location;
8 import org.bukkit.OfflinePlayer;
9 import org.bukkit.Server;
10 import org.bukkit.World;
11 import org.bukkit.command.Command;
12 import org.bukkit.command.CommandExecutor;
13 import org.bukkit.command.CommandSender;
14 import org.bukkit.configuration.file.YamlConfiguration;
15 import org.bukkit.entity.Player;
16 import org.bukkit.event.EventHandler;
17 import org.bukkit.event.Listener;
18 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 import org.bukkit.event.player.PlayerPortalEvent;
23 import org.bukkit.event.player.PlayerRespawnEvent;
24 import org.bukkit.event.player.PlayerTeleportEvent;
25
26 public class Jail implements CommandExecutor, Listener {
27
28 HoerupUtilsPlugin plugin;
29
30 TreeSet<String> jailed = new TreeSet<String>();
31
32 Location jailLocation;
33 Location releaseLocation;
34
35 final double maxDist = 25.0;
36
37 public Jail(HoerupUtilsPlugin plugin) {
38 this.plugin = plugin;
39
40
41 load();
42 }
43
44 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 @SuppressWarnings("unchecked")
62 Set<String> tmpSet = (Set<String>) config.get("jails");
63 jailed.addAll(tmpSet);
64 }
65
66 public void save() {
67 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 }
81
82 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 @Override
108 public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
109 if (args.length == 0) {
110 sender.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
111 return true;
112 }
113
114 if (sender instanceof Player ) {
115 Player p = (Player) sender;
116 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 return true;
121 }
122 } else {
123 if ( args[0].equals("imprison") || args[0].equals("release") || args[0].equals("list") ) {
124 //do nothing
125 } else {
126 sender.sendMessage("only imprison, release and list may be used from console");
127 return true;
128 }
129 }
130
131
132 if (args[0].equals("imprison")) {
133 if (args.length != 2) {
134 sender.sendMessage("You must specify the player");
135 return true;
136 }
137
138 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
139 if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
140 sender.sendMessage("Player not found");
141 return true;
142 }
143
144 if (inmate instanceof Player) {
145 Player p = (Player) inmate;
146 p.sendMessage("You have been imprisoned");
147 p.teleport( jailLocation );
148 }
149 jailed.add( inmate.getName() );
150 save();
151 sender.sendMessage("player " + inmate.getName() + " is imprisoned");
152 return true;
153 }
154
155 if (args[0].equals("release")) {
156 if (args.length != 2) {
157 sender.sendMessage("You must specify the player");
158 return true;
159 }
160
161 OfflinePlayer inmate = sender.getServer().getOfflinePlayer( args[1] );
162 if (inmate.hasPlayedBefore() == false && inmate.isOnline() == false) {
163 sender.sendMessage("Player not found");
164 return true;
165 }
166
167 jailed.remove( inmate.getName() );
168 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 //TODO: RE-ENABLE
174 //plugin.getMessageWrapper().sendMessage("Jail System", inmate, "You have been release from jail - you are free to go home");
175 }
176 save();
177 sender.sendMessage("player " + inmate.getName() + " is released");
178 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
195 if (args[0].equals("setjail")) {
196 Player p = (Player) sender;
197 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 Player p = (Player) sender;
204 releaseLocation = p.getLocation().clone();
205 p.sendMessage("New release location has been set");
206 save();
207 return true;
208 }
209
210 if (args[0].equals("tpjail")) {
211 Player p = (Player) sender;
212 p.teleport(jailLocation);
213 return true;
214 }
215 if (args[0].equals("tprelease")) {
216 Player p = (Player) sender;
217 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 p.sendMessage("You are currently in jail and have been teleported to you cell");
247 }
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
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 }
308

  ViewVC Help
Powered by ViewVC 1.1.20