spenk

CraftType

Mar 4th, 2012
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.53 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.logging.Level;
  9.  
  10. public class CraftType
  11. {
  12.   String name = "";
  13.   String driveCommand = "pilot";
  14.  
  15.   int minBlocks = 9;
  16.   int maxBlocks = 500;
  17.   int maxSpeed = 4;
  18.  
  19.   int flyBlockType = 0;
  20.  
  21.   String flyBlockName = null;
  22.  
  23.   int flyBlockPercent = 0;
  24.  
  25.   boolean canFly = false;
  26.   boolean canNavigate = false;
  27.   boolean canDive = false;
  28.   boolean iceBreaker = false;
  29.   boolean bomber = false;
  30.  
  31.   String sayOnControl = "You control the craft";
  32.   String sayOnRelease = "You release the craft";
  33.  
  34.   short[] structureBlocks = null;
  35.  
  36.   public static ArrayList<CraftType> craftTypes = new ArrayList<CraftType>();
  37.  
  38.   public CraftType(String name) {
  39.     this.name = name;
  40.   }
  41.  
  42.   public static CraftType getCraftType(String name)
  43.   {
  44.     for (CraftType type : craftTypes) {
  45.       if (type.name.equalsIgnoreCase(name)) {
  46.         return type;
  47.       }
  48.     }
  49.     return null;
  50.   }
  51.  
  52.   public String getCommand() {
  53.     return "/" + this.name.toLowerCase();
  54.   }
  55.  
  56.   public Boolean canUse(Player player)
  57.   {
  58.     if (player.canUseCommand(getCommand())) {
  59.       return Boolean.valueOf(true);
  60.     }
  61.     return Boolean.valueOf(false);
  62.   }
  63.  
  64.   private static void loadDefaultCraftTypes()
  65.   {
  66.     if (getCraftType("boat") == null)
  67.       craftTypes.add(getDefaultCraftType("boat"));
  68.     if (getCraftType("ship") == null) {
  69.       craftTypes.add(getDefaultCraftType("ship"));
  70.     }
  71.  
  72.     if (getCraftType("bomber") == null)
  73.       craftTypes.add(getDefaultCraftType("bomber"));
  74.     if (getCraftType("aircraft") == null)
  75.       craftTypes.add(getDefaultCraftType("aircraft"));
  76.     if (getCraftType("airship") == null)
  77.       craftTypes.add(getDefaultCraftType("airship"));
  78.     if (getCraftType("UFO") == null) {
  79.       craftTypes.add(getDefaultCraftType("UFO"));
  80.     }
  81.  
  82.     if (getCraftType("submarine") == null)
  83.       craftTypes.add(getDefaultCraftType("submarine"));
  84.   }
  85.  
  86.   private static CraftType getDefaultCraftType(String name)
  87.   {
  88.     CraftType craftType = new CraftType(name);
  89.  
  90.     if (name.equalsIgnoreCase("template"))
  91.     {
  92.       setAttribute(craftType, "structureBlocks", "4,5,17,19,20,35,41,42,43,44,45,46,47,48,49,50,53,57,65,67,68,69,75,76,77,85,87,88,89");
  93.     }
  94.     else if (name.equalsIgnoreCase("boat"))
  95.     {
  96.       craftType.driveCommand = "sail";
  97.       craftType.canNavigate = true;
  98.       craftType.minBlocks = 9;
  99.       craftType.maxBlocks = 500;
  100.       craftType.maxSpeed = 4;
  101.       craftType.sayOnControl = "You're on a boat !";
  102.       craftType.sayOnRelease = "You release the helm";
  103.     }
  104.     else if (name.equalsIgnoreCase("ship"))
  105.     {
  106.       craftType.driveCommand = "sail";
  107.       craftType.canNavigate = true;
  108.       craftType.minBlocks = 50;
  109.       craftType.maxBlocks = 1000;
  110.       craftType.maxSpeed = 6;
  111.       craftType.sayOnControl = "You're on a ship !";
  112.       craftType.sayOnRelease = "You release the helm";
  113.     }
  114.     else if (name.equalsIgnoreCase("icebreaker"))
  115.     {
  116.       craftType.driveCommand = "sail";
  117.       craftType.canNavigate = true;
  118.       craftType.minBlocks = 50;
  119.       craftType.maxBlocks = 1000;
  120.       craftType.maxSpeed = 4;
  121.       craftType.iceBreaker = true;
  122.       craftType.sayOnControl = "Let's break some ice !";
  123.       craftType.sayOnRelease = "You release the helm";
  124.     }
  125.     else if (name.equalsIgnoreCase("aircraft"))
  126.     {
  127.       craftType.driveCommand = "pilot";
  128.       craftType.canFly = true;
  129.       craftType.minBlocks = 9;
  130.       craftType.maxBlocks = 1000;
  131.       craftType.maxSpeed = 6;
  132.       craftType.sayOnControl = "You're on an aircraft !";
  133.       craftType.sayOnRelease = "You release the joystick";
  134.     }
  135.     else if (name.equalsIgnoreCase("bomber"))
  136.     {
  137.       craftType.driveCommand = "pilot";
  138.       craftType.canFly = true;
  139.       craftType.minBlocks = 20;
  140.       craftType.maxBlocks = 1000;
  141.       craftType.maxSpeed = 4;
  142.       craftType.bomber = true;
  143.       craftType.sayOnControl = "You're on a bomber !";
  144.       craftType.sayOnRelease = "You release the joystick";
  145.     }
  146.     else if (name.equalsIgnoreCase("airship"))
  147.     {
  148.       craftType.driveCommand = "pilot";
  149.       craftType.canFly = true;
  150.       craftType.minBlocks = 9;
  151.       craftType.maxBlocks = 1000;
  152.       craftType.maxSpeed = 6;
  153.       craftType.flyBlockName = "wool";
  154.       craftType.flyBlockType = 35;
  155.       craftType.flyBlockPercent = 60;
  156.       craftType.sayOnControl = "You're on an airship !";
  157.       craftType.sayOnRelease = "You release the control panel";
  158.     }
  159.     else if (name.equalsIgnoreCase("UFO"))
  160.     {
  161.       craftType.driveCommand = "pilot";
  162.       craftType.canFly = true;
  163.       craftType.minBlocks = 9;
  164.       craftType.maxBlocks = 1000;
  165.       craftType.maxSpeed = 9;
  166.       craftType.flyBlockName = "lightstone";
  167.       craftType.flyBlockType = 89;
  168.       craftType.flyBlockPercent = 4;
  169.       craftType.sayOnControl = "You're on a UFO !";
  170.       craftType.sayOnRelease = "You release the control panel";
  171.     }
  172.     else if (name.equalsIgnoreCase("USO"))
  173.     {
  174.       craftType.driveCommand = "pilot";
  175.       craftType.canFly = true;
  176.       craftType.canDive = true;
  177.       craftType.minBlocks = 9;
  178.       craftType.maxBlocks = 1000;
  179.       craftType.maxSpeed = 9;
  180.       craftType.flyBlockName = "lightstone";
  181.       craftType.flyBlockType = 89;
  182.       craftType.flyBlockPercent = 4;
  183.       craftType.sayOnControl = "You're on a USO !";
  184.       craftType.sayOnRelease = "You release the control panel";
  185.     }
  186.     else if (name.equalsIgnoreCase("submarine"))
  187.     {
  188.       craftType.driveCommand = "dive";
  189.       craftType.canDive = true;
  190.       craftType.minBlocks = 10;
  191.       craftType.maxBlocks = 1000;
  192.       craftType.maxSpeed = 3;
  193.       craftType.sayOnControl = "You're into a submarine !";
  194.       craftType.sayOnRelease = "You release the helm";
  195.     }
  196.  
  197.     return craftType;
  198.   }
  199.  
  200.   private static void setAttribute(CraftType craftType, String attribute, String value)
  201.   {
  202.     if (attribute.equalsIgnoreCase("driveCommand")) {
  203.       craftType.driveCommand = value;
  204.     } else if (attribute.equalsIgnoreCase("minBlocks")) {
  205.       craftType.minBlocks = Integer.parseInt(value);
  206.     } else if (attribute.equalsIgnoreCase("maxBlocks")) {
  207.       craftType.maxBlocks = Integer.parseInt(value);
  208.     } else if (attribute.equalsIgnoreCase("maxSpeed")) {
  209.       craftType.maxSpeed = Integer.parseInt(value);
  210.     } else if (attribute.equalsIgnoreCase("flyBlockName")) {
  211.       craftType.flyBlockName = value;
  212.     } else if (attribute.equalsIgnoreCase("flyBlockType")) {
  213.       craftType.flyBlockType = Integer.parseInt(value);
  214.     } else if (attribute.equalsIgnoreCase("flyBlockPercent")) {
  215.       craftType.flyBlockPercent = Integer.parseInt(value);
  216.     } else if (attribute.equalsIgnoreCase("canNavigate")) {
  217.       craftType.canNavigate = Boolean.parseBoolean(value);
  218.     } else if (attribute.equalsIgnoreCase("canFly")) {
  219.       craftType.canFly = Boolean.parseBoolean(value);
  220.     } else if (attribute.equalsIgnoreCase("canDive")) {
  221.       craftType.canDive = Boolean.parseBoolean(value);
  222.     }
  223.     else if (attribute.equalsIgnoreCase("bomber")) {
  224.       craftType.bomber = Boolean.parseBoolean(value);
  225.     } else if (attribute.equalsIgnoreCase("sayOnControl")) {
  226.       craftType.sayOnControl = value;
  227.     } else if (attribute.equalsIgnoreCase("sayOnRelease")) {
  228.       craftType.sayOnRelease = value;
  229.     } else if (attribute.equalsIgnoreCase("structureBlocks")) {
  230.       String[] split = value.split(",");
  231.       craftType.structureBlocks = new short[split.length];
  232.       int i = 0;
  233.       for (String blockId : split) {
  234.         craftType.structureBlocks[i] = Short.parseShort(blockId);
  235.         i++;
  236.       }
  237.     }
  238.   }
  239.  
  240.   public static void saveType(File dir, CraftType craftType, boolean force)
  241.   {
  242.     File craftFile = new File(dir.getName() + File.separator + craftType.name + ".txt");
  243.  
  244.     if (!craftFile.exists()) {
  245.       try {
  246.         craftFile.createNewFile();
  247.       } catch (IOException ex) {
  248.         MoveCraft.log.log(Level.SEVERE, null, ex);
  249.         return;
  250.       }
  251.     }
  252.     else
  253.       return;
  254.     try
  255.     {
  256.       BufferedWriter writer = new BufferedWriter(new FileWriter(craftFile));
  257.  
  258.       writeAttribute(writer, "driveCommand", craftType.driveCommand, force);
  259.       writeAttribute(writer, "minBlocks", craftType.minBlocks, true);
  260.       writeAttribute(writer, "maxBlocks", craftType.maxBlocks, force);
  261.  
  262.       if (craftType.structureBlocks != null) {
  263.         String line = "structureBlocks=";
  264.         for (short blockId : craftType.structureBlocks)
  265.         {
  266.           line = line + blockId + ",";
  267.         }
  268.  
  269.         writer.write(line.substring(0, line.length() - 1)); writer.newLine();
  270.       }
  271.       writeAttribute(writer, "maxSpeed", craftType.maxSpeed, force);
  272.       writeAttribute(writer, "flyBlockName", craftType.flyBlockName, force);
  273.       writeAttribute(writer, "flyBlockType", craftType.flyBlockType, force);
  274.       writeAttribute(writer, "flyBlockPercent", craftType.flyBlockPercent, force);
  275.       writeAttribute(writer, "canNavigate", craftType.canNavigate, force);
  276.       writeAttribute(writer, "canFly", craftType.canFly, force);
  277.       writeAttribute(writer, "canDive", craftType.canDive, force);
  278.  
  279.       writeAttribute(writer, "bomber", craftType.bomber, force);
  280.       writeAttribute(writer, "sayOnControl", craftType.sayOnControl, force);
  281.       writeAttribute(writer, "sayOnRelease", craftType.sayOnRelease, force);
  282.  
  283.       writer.close();
  284.     }
  285.     catch (IOException ex) {
  286.       MoveCraft.log.log(Level.SEVERE, null, ex);
  287.     }
  288.   }
  289.  
  290.   public static void saveTypes(File dir)
  291.   {
  292.     for (CraftType craftType : craftTypes) {
  293.       saveType(dir, craftType, false);
  294.     }
  295.  
  296.     saveType(dir, getDefaultCraftType("template"), true);
  297.   }
  298.  
  299.   private static void writeAttribute(BufferedWriter writer, String attribute, String value, boolean force) throws IOException
  300.   {
  301.     if (((value == null) || (value.trim().equals(""))) && (!force)) return;
  302.     writer.write(attribute + "=" + value); writer.newLine();
  303.   }
  304.  
  305.   private static void writeAttribute(BufferedWriter writer, String attribute, int value, boolean force) throws IOException {
  306.     if ((value == 0) && (!force)) return;
  307.     writer.write(attribute + "=" + value); writer.newLine();
  308.   }
  309.  
  310.   private static void writeAttribute(BufferedWriter writer, String attribute, boolean value, boolean force) throws IOException {
  311.     if ((!value) && (!force)) return;
  312.     writer.write(attribute + "=" + value); writer.newLine();
  313.   }
  314.  
  315.   public static void loadTypes(File dir) {
  316.     File[] craftTypesList = dir.listFiles();
  317.     craftTypes.clear();
  318.  
  319.     for (File craftFile : craftTypesList)
  320.     {
  321.       if ((!craftFile.isFile()) || (!craftFile.getName().endsWith(".txt")))
  322.         continue;
  323.       String craftName = craftFile.getName().split("\\.")[0];
  324.  
  325.       if (craftName.equalsIgnoreCase("template")) {
  326.         continue;
  327.       }
  328.       CraftType craftType = new CraftType(craftName);
  329.       try
  330.       {
  331.         BufferedReader reader = new BufferedReader(new FileReader(craftFile));
  332.         String line;
  333.         while ((line = reader.readLine()) != null)
  334.         {
  335.           String[] split = line.split("=");
  336.  
  337.           if (split.length >= 2) {
  338.             setAttribute(craftType, split[0], split[1]);
  339.           }
  340.         }
  341.         reader.close();
  342.       }
  343.       catch (IOException ex) {
  344.         MoveCraft.log.log(Level.SEVERE, null, ex);
  345.       }
  346.  
  347.       craftTypes.add(craftType);
  348.     }
  349.  
  350.     loadDefaultCraftTypes();
  351.   }
  352. }
Advertisement
Add Comment
Please, Sign In to add comment