/[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 1856 - (hide 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 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     @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