/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/TemplateCommand.java
ViewVC logotype

Diff of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/TemplateCommand.java

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

revision 1750 by torben, Sun Mar 18 14:36:49 2012 UTC revision 1758 by torben, Mon Mar 19 15:04:57 2012 UTC
# Line 53  public class TemplateCommand implements Line 53  public class TemplateCommand implements
53                          return true;                          return true;
54                  }                                }              
55    
56                  File templateFile = new File( plugin.getDataFolder(), "template_" + args[0] + ".txt");                            File templateFile = new File( plugin.getDataFolder(), "templates/" + args[0] + ".txt");        
57                  if (! templateFile.exists()  ) {                  if (! templateFile.exists()  ) {
58                          sender.sendMessage( ChatColor.YELLOW + "Template not found" );                          sender.sendMessage( ChatColor.YELLOW + "Template not found" );
59                          return true;                          return true;
# Line 122  public class TemplateCommand implements Line 122  public class TemplateCommand implements
122    
123                          if (line.charAt(0) == '-')                          if (line.charAt(0) == '-')
124                                  continue;                                  continue;
125                            
126                            if ( y >= ysize) {
127                                    throw new Exception( "Template: found more levels in file than specified in header" );
128                            }
129    
130                          String elements[] = line.split(",");                          String elements[] = line.split(",");
131                          if (elements.length != zsize) {                          if (elements.length != zsize) {
# Line 141  public class TemplateCommand implements Line 145  public class TemplateCommand implements
145                                          throw new Exception( "Template: invalid value on line " + lines + ": " + element[0] );                                          throw new Exception( "Template: invalid value on line " + lines + ": " + element[0] );
146                                  }                                  }
147                                                                    
148                                  if (val < 0 || val>255) {                                  if (val < -1 || val>255) {
149                                          throw new Exception( "Template: invalid value on line " + lines + ": " + val );                                          throw new Exception( "Template: invalid value on line " + lines + ": " + val );
150                                  }                                  }
151                                                                    
# Line 177  public class TemplateCommand implements Line 181  public class TemplateCommand implements
181          }          }
182    
183          void buildTemplate(Location loc, Pair[][][] template, int pass) {          void buildTemplate(Location loc, Pair[][][] template, int pass) {
184    
185                    
186                  World world = loc.getWorld();                  World world = loc.getWorld();
187                  for (int i=0; i<template.length; i++ ) {                  for (int i=0; i<template.length; i++ ) {
188                          for (int j=0; j<template[0].length; j++) {                          for (int j=0; j<template[0].length; j++) {
189                                  for (int k=0; k<template[0][0].length; k++) {                                  for (int k=0; k<template[0][0].length; k++) {
190                                          int x = loc.getBlockX() + i + 1;                                          int x, y ,z;
191                                          int y = loc.getBlockY() + j;                                          
192                                          int z = loc.getBlockZ() + k;                                          x = z = 0;
193                                                                                    
194                                            y = loc.getBlockY() + j;
195                                          if (y >= 255) {                                          if (y >= 255) {
196                                                  continue;                                                  continue;
197                                            }                                                                              
198                                            
199                                            switch ( getFacing(loc) ) {
200                                            case 0: //west                                          
201                                                    x = loc.getBlockX() - k;                                        
202                                                    z = loc.getBlockZ() + i + 1;                                                    
203                                                    break;
204                                            case 1: //north
205                                                    x = loc.getBlockX() - i - 1;                                    
206                                                    z = loc.getBlockZ() - k;                                                
207                                                    break;                                          
208                                            case 2: //east
209                                                    x = loc.getBlockX() + k;                                        
210                                                    z = loc.getBlockZ() - i - 1;
211                                                    break;
212                                            case 3: //south
213                                                    x = loc.getBlockX() + i + 1;                                    
214                                                    z = loc.getBlockZ() + k;                                                
215                                                    break;                                          
216                                          }                                          }
217    
218    
219                                          int type = template[i][j][k].id;                                          int type = template[i][j][k].id;
220                                          byte data = (byte) template[i][j][k].subId;                                          byte data = (byte) template[i][j][k].subId;
221                                            
222                                            if (type == -1) {
223                                                    continue;
224                                            }
225    
226                                          //plugin.getLogger().info(  String.format(  "Setting typeid at %d,%d,%d  to %d", x,y,z, type)  );                                          //plugin.getLogger().info(  String.format(  "Setting typeid at %d,%d,%d  to %d", x,y,z, type)  );
227    
# Line 201  public class TemplateCommand implements Line 232  public class TemplateCommand implements
232                                                          continue;                                                          continue;
233                                                  if (type == 68) // sign                                                  if (type == 68) // sign
234                                                          continue;                                                          continue;
235                                                    if (type == 65) // ladder
236                                                            continue;
237                                                    if (type == 67) // steps
238                                                            continue;                                              
239                                          }                                          }
240                                                                                    
241                                          world.getBlockAt(x, y, z).setTypeIdAndData(type, data, true);                                          world.getBlockAt(x, y, z).setTypeIdAndData(type, data, true);
# Line 210  public class TemplateCommand implements Line 245  public class TemplateCommand implements
245                  }                  }
246    
247          }          }
248            
249            
250            //yaw is left,right looking direction, 0=straight west
251            int getFacing(Location loc) {
252                    int angle = (int) loc.getYaw();
253                    
254                    if (angle < 45) {
255                            return 0;
256                    } else if (angle < 135) {
257                            return 1;
258                    } else if (angle < 225) {
259                            return 2;
260                    } else if (angle < 315) {
261                            return 3;
262                    } else {
263                            return 0;
264                    }
265            }
266    
267  }  }

Legend:
Removed from v.1750  
changed lines
  Added in v.1758

  ViewVC Help
Powered by ViewVC 1.1.20