/[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 1857 - (hide annotations) (download)
Sun Oct 14 11:48:43 2012 UTC (11 years, 7 months ago) by torben
File size: 5468 byte(s)
now we only miss the persistance bits
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     import org.bukkit.command.Command;
7     import org.bukkit.command.CommandExecutor;
8     import org.bukkit.command.CommandSender;
9     import org.bukkit.entity.Player;
10     import org.bukkit.plugin.Plugin;
11    
12     import org.bukkit.event.Listener;
13     import org.bukkit.event.EventHandler;
14     import org.bukkit.event.player.PlayerTeleportEvent;
15     import org.bukkit.event.player.PlayerPortalEvent;
16     import org.bukkit.event.player.PlayerMoveEvent;
17     import org.bukkit.event.player.PlayerJoinEvent;
18    
19     import org.bukkit.event.block.BlockBreakEvent;
20     import org.bukkit.event.block.BlockPlaceEvent;
21    
22     import java.util.ArrayList;
23     import java.util.TreeSet;
24    
25     public class Jail implements CommandExecutor, Listener {
26    
27     Plugin plugin;
28    
29     TreeSet<String> jailed = new TreeSet<String>();
30    
31     Location jailLocation;
32     Location releaseLocation;
33    
34     final double maxDist = 25.0;
35    
36     public Jail(Plugin plugin) {
37     this.plugin = plugin;
38    
39     jailLocation = new Location( plugin.getServer().getWorld("world"), 528.0, 68.0, 57);
40     releaseLocation = new Location( plugin.getServer().getWorld("world"), 124.0, 68.0, 78);
41    
42     jailed.add("hoerup");
43     }
44    
45 torben 1857 public void save() {
46     }
47    
48 torben 1856 @Override
49     public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
50     if (! (sender instanceof Player) ) {
51     sender.sendMessage("only use these commands in-game");
52     return true;
53     }
54    
55     Player p = (Player) sender;
56    
57     if ( !p.isOp()) {
58     p.sendMessage("Only server operators may use this command");
59     return true;
60     }
61    
62     if (args.length == 0) {
63 torben 1857 p.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
64 torben 1856 return true;
65     }
66    
67     if (args[0].equals("imprison")) {
68     if (args.length != 2) {
69     return true;
70     }
71    
72     Player inmate = sender.getServer().getPlayer( args[1] );
73     if (inmate == null) {
74     p.sendMessage("Player not found");
75     return true;
76     }
77    
78    
79     inmate.sendMessage("You have been imprisoned");
80     inmate.teleport( jailLocation );
81     jailed.add( inmate.getName() );
82 torben 1857 save();
83 torben 1856 return true;
84     }
85    
86     if (args[0].equals("release")) {
87     if (args.length != 2) {
88     return true;
89     }
90    
91     Player inmate = sender.getServer().getPlayer( args[1] );
92     if (inmate == null) {
93     p.sendMessage("Player not found");
94     return true;
95     }
96    
97    
98     jailed.remove( inmate.getName() );
99     inmate.sendMessage("You have been released from prison");
100     inmate.teleport( releaseLocation );
101 torben 1857 save();
102 torben 1856 return true;
103     }
104    
105     if (args[0].equals("list") ) {
106     if (jailed.size() > 0) {
107     StringBuffer sb = new StringBuffer();
108     for (String j : jailed ) {
109     sb.append(", ");
110     sb.append(j);
111     }
112     sender.sendMessage("Current inmates: " + sb.substring(2) );
113     } else {
114     sender.sendMessage("There are currently no inmates");
115     }
116     return true;
117     }
118 torben 1857
119     if (args[0].equals("setjail")) {
120     jailLocation = p.getLocation().clone();
121     p.sendMessage("New jail location has been set");
122     save();
123     return true;
124     }
125     if (args[0].equals("setrelease")) {
126     releaseLocation = p.getLocation().clone();
127     p.sendMessage("New release location has been set");
128     save();
129     return true;
130     }
131    
132 torben 1856 if (args[0].equals("tpjail")) {
133     p.teleport(jailLocation);
134     return true;
135     }
136     if (args[0].equals("tprelease")) {
137     p.teleport(releaseLocation);
138     return true;
139     }
140    
141     sender.sendMessage( "Unknown command: " + args[0] );
142    
143     return true;
144     }
145    
146     @EventHandler
147     public void onPlayerMove(PlayerMoveEvent event) {
148     Player p = event.getPlayer();
149     if (jailed.contains(p.getName() )) {
150     Location to = event.getTo();
151     double xDist = Math.abs( to.getX() - jailLocation.getX() );
152     double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
153    
154     if ( xDist > maxDist || zDist > maxDist) {
155     //System.out.println("" + xDist + " / " + zDist );
156     event.setCancelled(true );
157     }
158     }
159     }
160    
161     @EventHandler
162     public void onJoin(PlayerJoinEvent event) {
163     Player p = event.getPlayer();
164     if (jailed.contains( p.getName() ) ) {
165     p.teleport( jailLocation );
166 torben 1857 p.sendMessage("You are currently in jail and have been teleported to you cell");
167 torben 1856 }
168     }
169    
170     @EventHandler
171     public void onBlockBreak(BlockBreakEvent event) {
172     Player p = event.getPlayer();
173     if (jailed.contains( p.getName() ) ) {
174     event.setCancelled( true );
175     }
176     }
177     @EventHandler
178     public void onBlockPlace(BlockPlaceEvent event) {
179     Player p = event.getPlayer();
180     if (jailed.contains( p.getName() ) ) {
181     event.setCancelled( true );
182     }
183     }
184    
185     @EventHandler
186     public void onTeleport(PlayerTeleportEvent event) {
187     Player p = event.getPlayer();
188     if (jailed.contains( p.getName() ) ) {
189    
190     //System.out.println( "Teleport: " + event.getCause().toString() );
191    
192     Location from = event.getFrom();
193     Location to = event.getTo();
194     if ( from.getWorld() != to.getWorld() ) {
195     p.sendMessage("You are jailed and may not teleport");
196     event.setCancelled(true );
197     return;
198     }
199    
200     double xDist = Math.abs( to.getX() - jailLocation.getX() );
201     double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
202    
203     if ( xDist > maxDist || zDist > maxDist) {
204     p.sendMessage("You are jailed and may not teleport");
205     event.setCancelled(true );
206     }
207     }
208     }
209    
210     @EventHandler
211     public void onPortal(PlayerPortalEvent event) {
212     Player p = event.getPlayer();
213     if (jailed.contains( p.getName() ) ) {
214     p.sendMessage("You are jailed and may not use portals");
215     event.setCancelled( true );
216     }
217     }
218     }
219    

  ViewVC Help
Powered by ViewVC 1.1.20