/[projects]/miscJava/minecraft-plugins/hoeruputils/src/HoerupUtils.java
ViewVC logotype

Diff of /miscJava/minecraft-plugins/hoeruputils/src/HoerupUtils.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1183 by torben, Sat Oct 30 17:38:46 2010 UTC revision 1197 by torben, Sun Nov 28 18:58:26 2010 UTC
# Line 1  Line 1 
1    
2  import java.util.logging.*;  import java.util.logging.*;
3    import java.util.*;
4    
5  public class HoerupUtils extends Plugin {  public class HoerupUtils extends Plugin {
6    
7          final static Logger log = Logger.getLogger("HoerupUtils");          final static Logger log = Logger.getLogger("HoerupUtils");
8    
         private boolean adminDestroy = false;  
9    
10          private void registerCommands() {          private void registerCommands() {
11                  etc e = etc.getInstance();                  etc e = etc.getInstance();
# Line 17  public class HoerupUtils extends Plugin Line 17  public class HoerupUtils extends Plugin
17          }          }
18                    
19          @Override          @Override
20          public void disable() {          public void enable() {
21                  registerCommands();                  registerCommands();
22          }          }
23    
24          @Override          @Override
25          public void enable() {          public void disable() {
26                  etc e = etc.getInstance();                  etc e = etc.getInstance();
27                  e.removeCommand("/setpos");                  e.removeCommand("/setpos");
28                  e.removeCommand("/whereis");                  e.removeCommand("/whereis");
# Line 30  public class HoerupUtils extends Plugin Line 30  public class HoerupUtils extends Plugin
30                  e.removeCommand("/levelarea");                  e.removeCommand("/levelarea");
31                  e.removeCommand("/setsurface");                  e.removeCommand("/setsurface");
32          }          }
33    
34                    
35          @Override          @Override
36          public void initialize() {          public void initialize() {
37                  PluginLoader loader = etc.getLoader();                  PluginLoader loader = etc.getLoader();
38                  loader.addListener( PluginLoader.Hook.COMMAND, new HoerupUtilsPlugin(), this, PluginListener.Priority.MEDIUM );                  loader.addListener( PluginLoader.Hook.COMMAND, new HoerupUtilsPlugin(), this, PluginListener.Priority.MEDIUM );
39                  loader.addListener( PluginLoader.Hook.BLOCK_DESTROYED, new AdminDestroy(), this, PluginListener.Priority.MEDIUM );                  loader.addListener( PluginLoader.Hook.LOGIN, new ConnectedUsers(), this, PluginListener.Priority.MEDIUM );
40    
41                    Jail j = new Jail();
42                    loader.addListener( PluginLoader.Hook.TELEPORT, j, this, PluginListener.Priority.MEDIUM);
43                    loader.addListener( PluginLoader.Hook.COMMAND, j, this, PluginListener.Priority.MEDIUM );
44                    loader.addListener( PluginLoader.Hook.PLAYER_MOVE, j, this, PluginListener.Priority.MEDIUM );
45    
46                    AdminDestroy adm = new AdminDestroy();
47                    loader.addListener( PluginLoader.Hook.COMMAND, adm, this, PluginListener.Priority.MEDIUM);
48                    loader.addListener( PluginLoader.Hook.BLOCK_DESTROYED, adm, this, PluginListener.Priority.MEDIUM );
49                    loader.addListener( PluginLoader.Hook.DISCONNECT, adm, this, PluginListener.Priority.MEDIUM );
50    
51    
52                  registerCommands();                  registerCommands();
53          }          }
54    
55    
         public class AdminDestroy  extends PluginListener {      
                 public boolean onBlockDestroy(Player player, Block block) {  
                         if (adminDestroy == true && player.isAdmin() ) {  
   
                                 block.setType(0);  
                                 etc.getServer().setBlock(block);  
56    
57                                  return true;          class ConnectedUsers extends PluginListener {
58                    public void onLogin(Player player) {
59                            List<Player> players = etc.getServer().getPlayerList();
60                            int count = players.size();
61    
62                            StringBuilder sb = new StringBuilder();
63                            for (int i=0; i<count; i++) {
64                                    if (i>0)
65                                            sb.append(" ");
66                                    sb.append( players.get(i).getName() );
67                          }                          }
68                          return false;  
69                            player.sendMessage(Colors.Red + "Connected users " + count + ": " + Colors.White + sb.toString() );
70                  }                  }
71          }          }
72    
73    
74            public static String getBearingStr(int angle) {
75                    if (angle < 22) {
76                            return "N";
77                    } else if (angle < 67) {
78                            return "NE";
79                    } else if (angle < 112) {
80                            return "E";
81                    } else if (angle < 157) {
82                            return "SE";
83                    } else if (angle < 202) {
84                            return "S";
85                    } else if (angle < 257) {
86                            return "SW";
87                    } else if (angle < 292) {
88                            return "W";
89                    } else if (angle < 337) {
90                            return "NW";
91                    } else {
92                            return "N";
93                    }
94            }
95    
96            public static int calcDistance(Location loc1, Location loc2) {
97                    double distX =   loc1.x - loc2.x  ;
98                    double distZ =   loc1.z - loc2.z  ;
99    
100                    int dist = (int) Math.round( Math.sqrt( (distX*distX) + (distZ*distZ)) );
101    
102                    return dist;
103            }
104    
105            public static int calcBearing(Location loc1, Location loc2) {
106                    double distX =   loc1.x - loc2.x  ;
107                    double distZ =   loc1.z - loc2.z  ;
108    
109                    double angle = Math.toDegrees( Math.atan( distZ / distX ) );
110                    if (angle < 0.0)
111                            angle += 90.0;
112    
113    
114                    if (distX >= 0.0 && distZ >= 0.0) { //both positive, 0-90 degrees
115                            //do nothing
116                    } else if (distX < 0.0 && distZ >= 0.0) { // 90-180 degrees
117                            angle += 90.0;
118                    } else if (distX < 0.0 && distZ < 0.0) {//Both negative 180-270 degrees
119                            angle += 180.0;
120                    } else {
121                            angle += 270.0;
122                    }
123    
124                    return (int) angle;
125            }
126    
127          public class HoerupUtilsPlugin extends PluginListener {          public class HoerupUtilsPlugin extends PluginListener {
128                  final static String USAGE = "Usage: /setpos [x] [z] <height>";                  final static String USAGE = "Usage: /setpos [x] [z] <height>";
129                  final static int BLOCK_AIR = 0; //block id = 0 is air                  final static int BLOCK_AIR = 0; //block id = 0 is air
# Line 98  public class HoerupUtils extends Plugin Line 167  public class HoerupUtils extends Plugin
167                  }                  }
168    
169    
   
170                  @Override                  @Override
171                  public boolean onCommand(Player player, java.lang.String[] split) {                  public boolean onCommand(Player player, java.lang.String[] split) {
172                          if ( split[0].equals("/admindestroy") && player.canUseCommand("/admindestroy") ) {                          if( split[0].equals("/setpos") && player.canUseCommand("/setpos") ) {
                                 adminDestroy = !adminDestroy;  
                                 player.sendMessage("Admindestroy enabled=" + adminDestroy);  
   
                                 return true;  
                         } else if( split[0].equals("/setpos") && player.canUseCommand("/setpos") ) {  
173                                  setPos(player, split);                                  setPos(player, split);
174                                  return true;                                  return true;
175                          } else if ( split[0].equals("/whereis" ) && player.canUseCommand("/whereis")) {                          } else if ( split[0].equals("/whereis" ) && player.canUseCommand("/whereis")) {
176                                  whereIs(player, split);                                  whereIs(player, split);
177                                  return true;                                  return true;
178                          } else if (split[0].equals("/levelarea") && player.canUseCommand("/levelarea")) {                          } else if ( (split[0].equals("/levelarea") || split[0].equals("/la"))  && player.canUseCommand("/levelarea")) {
179                                  if (validateLevelOrFill(player,split)) {                                  if (validateLevelOrFill(player,split)) {
180                                          levelArea(player, split);                                          levelArea(player, split);
181                                  }                                  }
# Line 303  public class HoerupUtils extends Plugin Line 366  public class HoerupUtils extends Plugin
366          }          }
367    
368    
         private String getBearingStr(int angle) {  
                 if (angle < 22) {  
                         return "N";  
                 } else if (angle < 67) {  
                         return "NE";  
                 } else if (angle < 112) {  
                         return "E";  
                 } else if (angle < 157) {  
                         return "SE";  
                 } else if (angle < 202) {  
                         return "S";  
                 } else if (angle < 257) {  
                         return "SW";  
                 } else if (angle < 292) {  
                         return "W";  
                 } else if (angle < 337) {  
                         return "NW";  
                 } else {  
                         return "N";  
                 }  
         }  
   
369          public void whereIs(Player p1, java.lang.String[] split) {          public void whereIs(Player p1, java.lang.String[] split) {
370                  if (split.length < 2 || split.length >3) {                  if (split.length < 2 || split.length >3) {
371                          p1.sendMessage( Colors.Rose + "usage: /whereis (playername|home|warp) <warpname>" );                          p1.sendMessage( Colors.Rose + "usage: /whereis (playername|home|warp) <warpname>" );
# Line 370  public class HoerupUtils extends Plugin Line 411  public class HoerupUtils extends Plugin
411                          loc2 = p2.getLocation();                          loc2 = p2.getLocation();
412                          name2 = p2.getName();                          name2 = p2.getName();
413                  }                  }
                 //Location loc2 = new Location();  
                 //loc2.x = loc2.y = loc2.z = 0;  
414    
415  //System.out.println("p1: " + loc1.x + "," + loc1.z );                  int dist = calcDistance(loc1, loc2);
416  //System.out.println("p2: " + loc2.x + "," + loc2.z );                  int angle = calcBearing(loc1, loc2);
417    
                 double distX =   loc1.x - loc2.x  ;  
                 double distZ =   loc1.z - loc2.z  ;  
   
                 int dist = (int) Math.round( Math.sqrt( (distX*distX) + (distZ*distZ)) );  
 /*System.out.println("distX:" + distX );  
 System.out.println("distZ:" + distZ );  
418    
 System.out.println(">> " + (distZ / distX ) );*/  
   
                 double angle = Math.toDegrees( Math.atan( distZ / distX ) );  
                 if (angle < 0.0)  
                         angle += 90.0;  
   
   
                 if (distX >= 0.0 && distZ >= 0.0) { //both positive, 0-90 degrees  
                         //do nothing  
                 } else if (distX < 0.0 && distZ >= 0.0) { // 90-180 degrees  
                         angle += 90.0;  
                 } else if (distX < 0.0 && distZ < 0.0) {//Both negative 180-270 degrees  
                         angle += 180.0;  
                 } else {  
                         angle += 270.0;  
                 }  
419    
420                  p1.sendMessage( Colors.Yellow + name2 + " is at x:" + roundToPlaces(loc2.x, 2) + " y:" + roundToPlaces(loc2.y, 2) + " z: " + roundToPlaces(loc2.z, 2) );                  p1.sendMessage( Colors.Yellow + name2 + " is at x:" + roundToPlaces(loc2.x, 2) + " y:" + roundToPlaces(loc2.y, 2) + " z: " + roundToPlaces(loc2.z, 2) );
421                  p1.sendMessage( Colors.Yellow + "Distance is " + dist + " blocks" );                  p1.sendMessage( Colors.Yellow + "Distance is " + dist + " blocks" );
422                  p1.sendMessage( Colors.Yellow + "Bearing: " + (int) angle  + " (" + getBearingStr( (int) angle) + ")" );                  p1.sendMessage( Colors.Yellow + "Bearing: " + angle  + " (" + getBearingStr( angle) + ")" );
423    
424                                    
425    

Legend:
Removed from v.1183  
changed lines
  Added in v.1197

  ViewVC Help
Powered by ViewVC 1.1.20