/[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 1857 - (show 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 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 public void save() {
46 }
47
48 @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 p.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease|setjail|setrelease>");
64 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 save();
83 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 save();
102 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
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 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 p.sendMessage("You are currently in jail and have been teleported to you cell");
167 }
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