/[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 1856 - (show annotations) (download)
Sun Oct 14 11:36:45 2012 UTC (11 years, 7 months ago) by torben
File size: 4984 byte(s)
first rough edition of a jail system
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 @Override
46 public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) {
47 if (! (sender instanceof Player) ) {
48 sender.sendMessage("only use these commands in-game");
49 return true;
50 }
51
52 Player p = (Player) sender;
53
54 if ( !p.isOp()) {
55 p.sendMessage("Only server operators may use this command");
56 return true;
57 }
58
59 if (args.length == 0) {
60 p.sendMessage("Usage: /jail <imprison|release|list|tpjail|tprelease>");
61 return true;
62 }
63
64 if (args[0].equals("imprison")) {
65 if (args.length != 2) {
66 return true;
67 }
68
69 Player inmate = sender.getServer().getPlayer( args[1] );
70 if (inmate == null) {
71 p.sendMessage("Player not found");
72 return true;
73 }
74
75
76 inmate.sendMessage("You have been imprisoned");
77 inmate.teleport( jailLocation );
78 jailed.add( inmate.getName() );
79 return true;
80 }
81
82 if (args[0].equals("release")) {
83 if (args.length != 2) {
84 return true;
85 }
86
87 Player inmate = sender.getServer().getPlayer( args[1] );
88 if (inmate == null) {
89 p.sendMessage("Player not found");
90 return true;
91 }
92
93
94 jailed.remove( inmate.getName() );
95 inmate.sendMessage("You have been released from prison");
96 inmate.teleport( releaseLocation );
97 return true;
98 }
99
100 if (args[0].equals("list") ) {
101 if (jailed.size() > 0) {
102 StringBuffer sb = new StringBuffer();
103 for (String j : jailed ) {
104 sb.append(", ");
105 sb.append(j);
106 }
107 sender.sendMessage("Current inmates: " + sb.substring(2) );
108 } else {
109 sender.sendMessage("There are currently no inmates");
110 }
111 return true;
112 }
113 if (args[0].equals("tpjail")) {
114 p.teleport(jailLocation);
115 return true;
116 }
117 if (args[0].equals("tprelease")) {
118 p.teleport(releaseLocation);
119 return true;
120 }
121
122 sender.sendMessage( "Unknown command: " + args[0] );
123
124 return true;
125 }
126
127 @EventHandler
128 public void onPlayerMove(PlayerMoveEvent event) {
129 Player p = event.getPlayer();
130 if (jailed.contains(p.getName() )) {
131 Location to = event.getTo();
132 double xDist = Math.abs( to.getX() - jailLocation.getX() );
133 double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
134
135 if ( xDist > maxDist || zDist > maxDist) {
136 //System.out.println("" + xDist + " / " + zDist );
137 event.setCancelled(true );
138 }
139 }
140 }
141
142 @EventHandler
143 public void onJoin(PlayerJoinEvent event) {
144 Player p = event.getPlayer();
145 if (jailed.contains( p.getName() ) ) {
146 p.teleport( jailLocation );
147 }
148 }
149
150 @EventHandler
151 public void onBlockBreak(BlockBreakEvent event) {
152 Player p = event.getPlayer();
153 if (jailed.contains( p.getName() ) ) {
154 event.setCancelled( true );
155 }
156 }
157 @EventHandler
158 public void onBlockPlace(BlockPlaceEvent event) {
159 Player p = event.getPlayer();
160 if (jailed.contains( p.getName() ) ) {
161 event.setCancelled( true );
162 }
163 }
164
165 @EventHandler
166 public void onTeleport(PlayerTeleportEvent event) {
167 Player p = event.getPlayer();
168 if (jailed.contains( p.getName() ) ) {
169
170 //System.out.println( "Teleport: " + event.getCause().toString() );
171
172 Location from = event.getFrom();
173 Location to = event.getTo();
174 if ( from.getWorld() != to.getWorld() ) {
175 p.sendMessage("You are jailed and may not teleport");
176 event.setCancelled(true );
177 return;
178 }
179
180 double xDist = Math.abs( to.getX() - jailLocation.getX() );
181 double zDist = Math.abs( to.getZ() - jailLocation.getZ() );
182
183 if ( xDist > maxDist || zDist > maxDist) {
184 p.sendMessage("You are jailed and may not teleport");
185 event.setCancelled(true );
186 }
187 }
188 }
189
190 @EventHandler
191 public void onPortal(PlayerPortalEvent event) {
192 Player p = event.getPlayer();
193 if (jailed.contains( p.getName() ) ) {
194 p.sendMessage("You are jailed and may not use portals");
195 event.setCancelled( true );
196 }
197 }
198 }
199

  ViewVC Help
Powered by ViewVC 1.1.20