missing formatting for files.
This commit is contained in:
		| @@ -27,8 +27,7 @@ import org.bukkit.configuration.serialization.ConfigurationSerializable; | |||||||
| import java.util.*; | import java.util.*; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class Gate implements ConfigurationSerializable | public class Gate implements ConfigurationSerializable { | ||||||
| { |  | ||||||
|     protected Location location; /* saving both location and gateBlockLocations is redundant but makes it easy to allow players to reshape gates */ |     protected Location location; /* saving both location and gateBlockLocations is redundant but makes it easy to allow players to reshape gates */ | ||||||
|     protected Set<Location> gateBlockLocations = new HashSet<Location>(); /* Locations of the blocks inside the gate */ |     protected Set<Location> gateBlockLocations = new HashSet<Location>(); /* Locations of the blocks inside the gate */ | ||||||
|     protected Set<Block> gateFrameBlocks = new HashSet<Block>(); |     protected Set<Block> gateFrameBlocks = new HashSet<Block>(); | ||||||
| @@ -44,46 +43,40 @@ public class Gate implements ConfigurationSerializable | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * You should never create two gates with the same 'id'. Also see 'setId(String id)'. |      * You should never create two gates with the same 'id'. Also see 'setId(String id)'. | ||||||
|  |      * | ||||||
|      * @param id This parameter must not be 'null'. An exception will be thrown otherwise! |      * @param id This parameter must not be 'null'. An exception will be thrown otherwise! | ||||||
|      */ |      */ | ||||||
| 	public Gate(final String id) |     public Gate(final String id) { | ||||||
| 	{ |  | ||||||
|         setId(id); |         setId(id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public String toString() |     public String toString() { | ||||||
| 	{ |  | ||||||
|         return super.toString() + " " + this.getId(); |         return super.toString() + " " + this.getId(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @return This method might return a 'null' data. |      * @return This method might return a 'null' data. | ||||||
|      */ |      */ | ||||||
| 	public Location getLocation()  |     public Location getLocation() { | ||||||
| 	{ |  | ||||||
|         return location; |         return location; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @param location Supplying 'null' is permitted. |      * @param location Supplying 'null' is permitted. | ||||||
|      * @throws Exception Will throw an exception if the gate is open and an invalid (no gate frame) location is |      * @throws Exception Will throw an exception if the gate is open and an invalid (no gate frame) location is | ||||||
|      *                   supplied. Note that the supplied 'location' will be set even if an exception is thrown. Note that this |      *                   supplied. Note that the supplied 'location' will be set even if an exception is thrown. Note that this | ||||||
|      *                   gate will be closed if an exception is thrown. |      *                   gate will be closed if an exception is thrown. | ||||||
|      */ |      */ | ||||||
| 	public void setLocation(final Location location) throws Exception |     public void setLocation(final Location location) throws Exception { | ||||||
| 	{ |  | ||||||
|         this.location = location; |         this.location = location; | ||||||
|  |  | ||||||
|         if (isOpen) { |         if (isOpen) { | ||||||
|             findPortalBlocks(); |             findPortalBlocks(); | ||||||
|             validate(); |             validate(); | ||||||
| 		} |         } else { | ||||||
|         else { |  | ||||||
|             this.gateBlockLocations = new HashSet<Location>(); |             this.gateBlockLocations = new HashSet<Location>(); | ||||||
|             this.gateFrameBlocks = new HashSet<Block>(); |             this.gateFrameBlocks = new HashSet<Block>(); | ||||||
|         } |         } | ||||||
| @@ -91,35 +84,29 @@ public class Gate implements ConfigurationSerializable | |||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @return This method might return a 'null' value. |      * @return This method might return a 'null' value. | ||||||
|      */ |      */ | ||||||
| 	public Location getExit()  |     public Location getExit() { | ||||||
| 	{ |  | ||||||
|         return exit; |         return exit; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @param exit Supplying 'null' is permitted. |      * @param exit Supplying 'null' is permitted. | ||||||
|      * @throws Exception An exception will be thrown if 'null' data is supplied and this gate is open. Note that the |      * @throws Exception An exception will be thrown if 'null' data is supplied and this gate is open. Note that the | ||||||
|      *                   supplied 'exit' will be set even if an exception is thrown. Note that this gate will be closed if an |      *                   supplied 'exit' will be set even if an exception is thrown. Note that this gate will be closed if an | ||||||
|      *                   exception is thrown. |      *                   exception is thrown. | ||||||
|      */ |      */ | ||||||
| 	public void setExit(final Location exit) throws Exception |     public void setExit(final Location exit) throws Exception { | ||||||
| 	{ |  | ||||||
|         this.exit = exit; |         this.exit = exit; | ||||||
|         validate(); |         validate(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @return This method will never return 'null'. |      * @return This method will never return 'null'. | ||||||
|      */ |      */ | ||||||
| 	public String getId() |     public String getId() { | ||||||
|     { |  | ||||||
|         return id; |         return id; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -127,10 +114,10 @@ public class Gate implements ConfigurationSerializable | |||||||
|     /** |     /** | ||||||
|      * Every gate should have an unique 'id'. You should therefore check if another gate with the same 'id' exists. |      * Every gate should have an unique 'id'. You should therefore check if another gate with the same 'id' exists. | ||||||
|      * Note that this method will not check if another gate with the same 'id' exists! |      * Note that this method will not check if another gate with the same 'id' exists! | ||||||
|  |      * | ||||||
|      * @param id This parameter must not be 'null'. An exception will be thrown otherwise! |      * @param id This parameter must not be 'null'. An exception will be thrown otherwise! | ||||||
|      */ |      */ | ||||||
| 	public void setId(final String id) |     public void setId(final String id) { | ||||||
|     { |  | ||||||
|         if (id == null) { |         if (id == null) { | ||||||
|             throw new IllegalArgumentException("gate 'id' cannot be 'null'"); |             throw new IllegalArgumentException("gate 'id' cannot be 'null'"); | ||||||
|         } |         } | ||||||
| @@ -139,27 +126,23 @@ public class Gate implements ConfigurationSerializable | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public boolean isHidden()  |     public boolean isHidden() { | ||||||
| 	{ |  | ||||||
|         return isHidden; |         return isHidden; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void setHidden(boolean isHidden) throws Exception |     public void setHidden(boolean isHidden) throws Exception { | ||||||
| 	{ |  | ||||||
|         this.isHidden = isHidden; |         this.isHidden = isHidden; | ||||||
|         this.validate(); |         this.validate(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public boolean isOpen()  |     public boolean isOpen() { | ||||||
| 	{ |  | ||||||
|         return isOpen; |         return isOpen; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void setOpen(boolean isOpen) throws Exception |     public void setOpen(boolean isOpen) throws Exception { | ||||||
| 	{ |  | ||||||
|         if (isOpen && !this.isOpen) { |         if (isOpen && !this.isOpen) { | ||||||
|             findPortalBlocks(); |             findPortalBlocks(); | ||||||
|         } |         } | ||||||
| @@ -169,41 +152,33 @@ public class Gate implements ConfigurationSerializable | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public void setAllowsVehicles(boolean allowsVehicles) |     public void setAllowsVehicles(boolean allowsVehicles) { | ||||||
|     { |  | ||||||
|         this.allowsVehicles = allowsVehicles; |         this.allowsVehicles = allowsVehicles; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public boolean getAllowsVehicles() |     public boolean getAllowsVehicles() { | ||||||
|     { |  | ||||||
|         return this.allowsVehicles; |         return this.allowsVehicles; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @return Will never return 'null' but might return an empty Set. |      * @return Will never return 'null' but might return an empty Set. | ||||||
|      */ |      */ | ||||||
| 	public Set<Location> getGateBlockLocations()  |     public Set<Location> getGateBlockLocations() { | ||||||
| 	{ |  | ||||||
|         return gateBlockLocations; |         return gateBlockLocations; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @return Will never return 'null' but might return an empty Set. |      * @return Will never return 'null' but might return an empty Set. | ||||||
|      */ |      */ | ||||||
|     public Set<Block> getGateFrameBlocks() |     public Set<Block> getGateFrameBlocks() { | ||||||
|     { |  | ||||||
|         return gateFrameBlocks; |         return gateFrameBlocks; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     protected void findPortalBlocks() { | ||||||
| 	protected void findPortalBlocks() |  | ||||||
| 	{ |  | ||||||
|         gateBlockLocations = new HashSet<Location>(); |         gateBlockLocations = new HashSet<Location>(); | ||||||
|         Set<Block> gateBlocks = FloodUtil.getGatePortalBlocks(location.getBlock()); |         Set<Block> gateBlocks = FloodUtil.getGatePortalBlocks(location.getBlock()); | ||||||
|  |  | ||||||
| @@ -220,8 +195,7 @@ public class Gate implements ConfigurationSerializable | |||||||
|     /** |     /** | ||||||
|      * Checks if values attributes do add up; will close gate on wrong values. |      * Checks if values attributes do add up; will close gate on wrong values. | ||||||
|      */ |      */ | ||||||
| 	public void validate() throws Exception |     public void validate() throws Exception { | ||||||
| 	{ |  | ||||||
|         if (!isOpen) { |         if (!isOpen) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @@ -283,8 +257,7 @@ public class Gate implements ConfigurationSerializable | |||||||
|  |  | ||||||
|  |  | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("unchecked") | ||||||
|     public Gate(Map<String, Object> map) |     public Gate(Map<String, Object> map) { | ||||||
| 	{ |  | ||||||
|         try { |         try { | ||||||
|             id = map.get(idKey).toString().toLowerCase(); |             id = map.get(idKey).toString().toLowerCase(); | ||||||
|  |  | ||||||
| @@ -316,8 +289,7 @@ public class Gate implements ConfigurationSerializable | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             gateFrameBlocks = FloodUtil.getFrameWithLocations(gateBlockLocations); |             gateFrameBlocks = FloodUtil.getFrameWithLocations(gateBlockLocations); | ||||||
| 		} |         } catch (Exception e) { | ||||||
| 		catch (Exception e) { |  | ||||||
|             Plugin.log("ERROR: Failed to load gate '" + id + "'! (" + e.getMessage() + ")"); |             Plugin.log("ERROR: Failed to load gate '" + id + "'! (" + e.getMessage() + ")"); | ||||||
|             Plugin.log("NOTE:  This gate will be removed from 'gates.yml' and added to 'invalid_gates.yml'!"); |             Plugin.log("NOTE:  This gate will be removed from 'gates.yml' and added to 'invalid_gates.yml'!"); | ||||||
|  |  | ||||||
| @@ -326,15 +298,13 @@ public class Gate implements ConfigurationSerializable | |||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             validate(); // make sure to not write invalid stuff to disk |             validate(); // make sure to not write invalid stuff to disk | ||||||
|         } |         } catch (Exception e) { | ||||||
|         catch (Exception e) { |  | ||||||
|             Plugin.log("The loaded gate " + this.getId() + " seems to be not valid: " + e.getMessage()); |             Plugin.log("The loaded gate " + this.getId() + " seems to be not valid: " + e.getMessage()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public Map<String, Object> serialize()  |     public Map<String, Object> serialize() { | ||||||
| 	{ |  | ||||||
|         Map<String, Object> retVal = new HashMap<String, Object>(); |         Map<String, Object> retVal = new HashMap<String, Object>(); | ||||||
|  |  | ||||||
|         retVal.put(idKey, id); |         retVal.put(idKey, id); | ||||||
|   | |||||||
| @@ -19,8 +19,7 @@ package de.craftinc.gates; | |||||||
|  |  | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| public interface GateChangeListener | public interface GateChangeListener { | ||||||
| { |  | ||||||
|     public static final String newGate = "GateChangeListener-newGate"; // value will be null |     public static final String newGate = "GateChangeListener-newGate"; // value will be null | ||||||
|     public static final String removedGate = "GateChangeListener-removedGate"; // value will be null |     public static final String removedGate = "GateChangeListener-removedGate"; // value will be null | ||||||
|     public static final String changedID = "GateChangeListener-changedID"; // value will be the old ID |     public static final String changedID = "GateChangeListener-changedID"; // value will be the old ID | ||||||
|   | |||||||
| @@ -35,8 +35,7 @@ import de.craftinc.gates.util.SimpleChunk; | |||||||
| import de.craftinc.gates.util.SimpleLocation; | import de.craftinc.gates.util.SimpleLocation; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class GatesManager  | public class GatesManager { | ||||||
| { |  | ||||||
|     protected File gatesConfigFile; |     protected File gatesConfigFile; | ||||||
|     protected FileConfiguration gatesConfig; |     protected FileConfiguration gatesConfig; | ||||||
|     protected static final String gatesPath = "gates"; // path to gates inside the yaml file |     protected static final String gatesPath = "gates"; // path to gates inside the yaml file | ||||||
| @@ -57,26 +56,22 @@ public class GatesManager | |||||||
|     protected Set<GateChangeListener> changeListeners = new HashSet<GateChangeListener>(); |     protected Set<GateChangeListener> changeListeners = new HashSet<GateChangeListener>(); | ||||||
|  |  | ||||||
|  |  | ||||||
|     public void addGateChangeListener(GateChangeListener listener) |     public void addGateChangeListener(GateChangeListener listener) { | ||||||
|     { |  | ||||||
|         this.changeListeners.add(listener); |         this.changeListeners.add(listener); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public void removeGateChangeListener(GateChangeListener listener) |     public void removeGateChangeListener(GateChangeListener listener) { | ||||||
|     { |  | ||||||
|         this.changeListeners.remove(listener); |         this.changeListeners.remove(listener); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public Gate getGateWithId(final String id) |     public Gate getGateWithId(final String id) { | ||||||
| 	{ |  | ||||||
|         return gatesById.get(id.toLowerCase()); |         return gatesById.get(id.toLowerCase()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public Set<Gate> getNearbyGates(final Chunk chunk) |     public Set<Gate> getNearbyGates(final Chunk chunk) { | ||||||
| 	{ |  | ||||||
|         SimpleChunk simpleChunk = new SimpleChunk(chunk); |         SimpleChunk simpleChunk = new SimpleChunk(chunk); | ||||||
|         return gatesByChunk.get(simpleChunk); |         return gatesByChunk.get(simpleChunk); | ||||||
|     } |     } | ||||||
| @@ -84,11 +79,11 @@ public class GatesManager | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns the closest gate. |      * Returns the closest gate. | ||||||
|  |      * | ||||||
|      * @param location The location at which to look for a gate. |      * @param location The location at which to look for a gate. | ||||||
|      * @return Might return null if there are no nearby gates. |      * @return Might return null if there are no nearby gates. | ||||||
|      */ |      */ | ||||||
|     public Gate getNearestGate(final Location location) |     public Gate getNearestGate(final Location location) { | ||||||
|     { |  | ||||||
|         Set<Gate> nearbyGates = getNearbyGates(location.getChunk()); |         Set<Gate> nearbyGates = getNearbyGates(location.getChunk()); | ||||||
|  |  | ||||||
|         if (nearbyGates == null) { |         if (nearbyGates == null) { | ||||||
| @@ -111,22 +106,19 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public Gate getGateAtLocation(final Location location) |     public Gate getGateAtLocation(final Location location) { | ||||||
| 	{ |  | ||||||
|         SimpleLocation simpleLocation = new SimpleLocation(location); |         SimpleLocation simpleLocation = new SimpleLocation(location); | ||||||
|         return gatesByLocation.get(simpleLocation); |         return gatesByLocation.get(simpleLocation); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public Gate getGateAtFrameLocation(final Location location) |     public Gate getGateAtFrameLocation(final Location location) { | ||||||
|     { |  | ||||||
|         SimpleLocation simpleLocation = new SimpleLocation(location); |         SimpleLocation simpleLocation = new SimpleLocation(location); | ||||||
|         return gatesByFrameLocation.get(simpleLocation); |         return gatesByFrameLocation.get(simpleLocation); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void saveGatesToDisk() |     public void saveGatesToDisk() { | ||||||
| 	{ |  | ||||||
|         if (storageFileIsInvalid) { |         if (storageFileIsInvalid) { | ||||||
|             Plugin.log(Level.SEVERE, "ERROR: Not saving gates to disk. Storage file is invalid or corrupted!"); |             Plugin.log(Level.SEVERE, "ERROR: Not saving gates to disk. Storage file is invalid or corrupted!"); | ||||||
|             return; |             return; | ||||||
| @@ -138,8 +130,7 @@ public class GatesManager | |||||||
|         try { |         try { | ||||||
|             gatesConfig.save(gatesConfigFile); |             gatesConfig.save(gatesConfigFile); | ||||||
|             Plugin.log("Saved gates to disk."); |             Plugin.log("Saved gates to disk."); | ||||||
| 		}  |         } catch (IOException e) { | ||||||
| 		catch (IOException e) { |  | ||||||
|             Plugin.log(Level.SEVERE, "ERROR: Could not save gates to disk."); |             Plugin.log(Level.SEVERE, "ERROR: Could not save gates to disk."); | ||||||
|             e.printStackTrace(); |             e.printStackTrace(); | ||||||
|         } |         } | ||||||
| @@ -147,8 +138,7 @@ public class GatesManager | |||||||
|  |  | ||||||
|  |  | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("unchecked") | ||||||
| 	public boolean loadGatesFromDisk() |     public boolean loadGatesFromDisk() { | ||||||
| 	{ |  | ||||||
|         this.gatesConfigFile = new File(Plugin.getPlugin().getDataFolder(), "gates.yml"); |         this.gatesConfigFile = new File(Plugin.getPlugin().getDataFolder(), "gates.yml"); | ||||||
|  |  | ||||||
|         if (!this.gatesConfigFile.exists()) { |         if (!this.gatesConfigFile.exists()) { | ||||||
| @@ -158,8 +148,7 @@ public class GatesManager | |||||||
|                 if (isNew) { |                 if (isNew) { | ||||||
|                     Plugin.log(Level.FINEST, "Created gate storage file."); |                     Plugin.log(Level.FINEST, "Created gate storage file."); | ||||||
|                 } |                 } | ||||||
|             } |             } catch (IOException e) { | ||||||
|             catch (IOException e) { |  | ||||||
|                 this.storageFileIsInvalid = true; |                 this.storageFileIsInvalid = true; | ||||||
|                 Plugin.log(Level.SEVERE, "Cannot create gate storage file! No gates will be persisted."); |                 Plugin.log(Level.SEVERE, "Cannot create gate storage file! No gates will be persisted."); | ||||||
|                 return false; |                 return false; | ||||||
| @@ -170,8 +159,7 @@ public class GatesManager | |||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             this.gatesConfig.load(this.gatesConfigFile); |             this.gatesConfig.load(this.gatesConfigFile); | ||||||
|         } |         } catch (Exception e) { | ||||||
|         catch (Exception e) { |  | ||||||
|             this.storageFileIsInvalid = true; |             this.storageFileIsInvalid = true; | ||||||
|             Plugin.log(Level.SEVERE, "Gate file on disk is invalid. No gates loaded. Plugin will be disabled! (" + Arrays.toString(e.getStackTrace()) + ")"); |             Plugin.log(Level.SEVERE, "Gate file on disk is invalid. No gates loaded. Plugin will be disabled! (" + Arrays.toString(e.getStackTrace()) + ")"); | ||||||
|             return false; |             return false; | ||||||
| @@ -195,12 +183,11 @@ public class GatesManager | |||||||
|         for (Gate g : this.gates) { |         for (Gate g : this.gates) { | ||||||
|             try { |             try { | ||||||
|                 g.validate(); |                 g.validate(); | ||||||
|             } |             } catch (Exception e) { | ||||||
|             catch (Exception e) { |  | ||||||
|                 try { |                 try { | ||||||
|                     g.setOpen(false); |                     g.setOpen(false); | ||||||
|  |                 } catch (Exception ignored) { | ||||||
|                 } |                 } | ||||||
|                 catch (Exception ignored) { } |  | ||||||
|  |  | ||||||
|                 Plugin.log(Level.FINER, "closed gate '" + g.getId() + "' reason: " + e.getMessage()); |                 Plugin.log(Level.FINER, "closed gate '" + g.getId() + "' reason: " + e.getMessage()); | ||||||
|             } |             } | ||||||
| @@ -234,8 +221,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected int getChunkRadius() |     protected int getChunkRadius() { | ||||||
|     { |  | ||||||
|         if (this.chunkRadius == 0) { |         if (this.chunkRadius == 0) { | ||||||
|             this.chunkRadius = Plugin.getPlugin().getConfig().getInt(ConfigurationUtil.confPlayerGateBlockUpdateRadiusKey); |             this.chunkRadius = Plugin.getPlugin().getConfig().getInt(ConfigurationUtil.confPlayerGateBlockUpdateRadiusKey); | ||||||
|             this.chunkRadius = this.chunkRadius >> 4; |             this.chunkRadius = this.chunkRadius >> 4; | ||||||
| @@ -245,8 +231,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void fillGatesById() |     protected void fillGatesById() { | ||||||
| 	{ |  | ||||||
|         gatesById = new HashMap<String, Gate>((int) (gates.size() * 1.25)); |         gatesById = new HashMap<String, Gate>((int) (gates.size() * 1.25)); | ||||||
|  |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
| @@ -255,8 +240,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void fillGatesByChunk() |     protected void fillGatesByChunk() { | ||||||
| 	{ |  | ||||||
|         HashSet<SimpleChunk> chunksUsedByGates = new HashSet<SimpleChunk>(); |         HashSet<SimpleChunk> chunksUsedByGates = new HashSet<SimpleChunk>(); | ||||||
|  |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
| @@ -286,8 +270,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void fillGatesByLocation() |     protected void fillGatesByLocation() { | ||||||
| 	{ |  | ||||||
|         Set<Location> gateBlocks = new HashSet<Location>(); |         Set<Location> gateBlocks = new HashSet<Location>(); | ||||||
|  |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
| @@ -312,8 +295,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void fillGatesByFrameLocation() |     protected void fillGatesByFrameLocation() { | ||||||
|     { |  | ||||||
|         int numFrameBlocks = 0; |         int numFrameBlocks = 0; | ||||||
|  |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
| @@ -328,20 +310,17 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void removeGateById(final String id) |     protected void removeGateById(final String id) { | ||||||
| 	{ |  | ||||||
|         gatesById.remove(id); |         gatesById.remove(id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void addGateWithId(final Gate g) |     protected void addGateWithId(final Gate g) { | ||||||
| 	{ |  | ||||||
|         gatesById.put(g.getId(), g); |         gatesById.put(g.getId(), g); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void removeGateByLocation(final Set<Location> gateBlocks) |     protected void removeGateByLocation(final Set<Location> gateBlocks) { | ||||||
| 	{ |  | ||||||
|         if (gateBlocks != null) { |         if (gateBlocks != null) { | ||||||
|  |  | ||||||
|             for (Location l : gateBlocks) { |             for (Location l : gateBlocks) { | ||||||
| @@ -356,8 +335,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void removeGateByFrameLocation(final Set<Block> gateFrameBlocks) |     protected void removeGateByFrameLocation(final Set<Block> gateFrameBlocks) { | ||||||
|     { |  | ||||||
|         if (gateFrameBlocks != null) { |         if (gateFrameBlocks != null) { | ||||||
|  |  | ||||||
|             for (Block block : gateFrameBlocks) { |             for (Block block : gateFrameBlocks) { | ||||||
| @@ -368,8 +346,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void addGateByLocations(final Gate g) |     protected void addGateByLocations(final Gate g) { | ||||||
| 	{ |  | ||||||
|         for (Location l : g.getGateBlockLocations()) { |         for (Location l : g.getGateBlockLocations()) { | ||||||
|  |  | ||||||
|             SimpleLocation sl = new SimpleLocation(l); |             SimpleLocation sl = new SimpleLocation(l); | ||||||
| @@ -381,8 +358,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void addGateByFrameLocations(final Gate g) |     protected void addGateByFrameLocations(final Gate g) { | ||||||
|     { |  | ||||||
|         for (Block block : g.getGateFrameBlocks()) { |         for (Block block : g.getGateFrameBlocks()) { | ||||||
|             SimpleLocation sl = new SimpleLocation(block.getLocation()); |             SimpleLocation sl = new SimpleLocation(block.getLocation()); | ||||||
|             gatesByFrameLocation.put(sl, g); |             gatesByFrameLocation.put(sl, g); | ||||||
| @@ -390,8 +366,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void removeGateFromChunk(final Gate g, final Location l) |     protected void removeGateFromChunk(final Gate g, final Location l) { | ||||||
| 	{ |  | ||||||
|         if (l != null) { |         if (l != null) { | ||||||
|  |  | ||||||
|             Chunk c = l.getChunk(); |             Chunk c = l.getChunk(); | ||||||
| @@ -415,8 +390,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void addGateByChunk(final Gate g) |     protected void addGateByChunk(final Gate g) { | ||||||
| 	{ |  | ||||||
|         Location gateLocation = g.getLocation(); |         Location gateLocation = g.getLocation(); | ||||||
|  |  | ||||||
|         if (gateLocation != null) { |         if (gateLocation != null) { | ||||||
| @@ -445,8 +419,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void storeInvalidGate(Map<String, Object> map) |     public void storeInvalidGate(Map<String, Object> map) { | ||||||
| 	{ |  | ||||||
|         File invalidGatesFile = new File(Plugin.getPlugin().getDataFolder(), "invalid_gates.yml"); |         File invalidGatesFile = new File(Plugin.getPlugin().getDataFolder(), "invalid_gates.yml"); | ||||||
|         Boolean invalidGatesFileExists = invalidGatesFile.exists(); |         Boolean invalidGatesFileExists = invalidGatesFile.exists(); | ||||||
|  |  | ||||||
| @@ -485,22 +458,19 @@ public class GatesManager | |||||||
|                         fileWriter.write("\t\t" + k + ": " + v.toString() + "\n"); |                         fileWriter.write("\t\t" + k + ": " + v.toString() + "\n"); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
| 				} |                 } else { | ||||||
| 				else { |  | ||||||
|                     fileWriter.write(value.toString() + "\n"); |                     fileWriter.write(value.toString() + "\n"); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             fileWriter.close(); |             fileWriter.close(); | ||||||
| 		} |         } catch (IOException e) { | ||||||
| 		catch (IOException e) { |  | ||||||
|             Plugin.log("ERROR: Could not save invalid gates to disk. Reason: \n" + Arrays.toString(e.getStackTrace())); |             Plugin.log("ERROR: Could not save invalid gates to disk. Reason: \n" + Arrays.toString(e.getStackTrace())); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void handleGateIdChange(final Gate g, final String oldId) |     public void handleGateIdChange(final Gate g, final String oldId) { | ||||||
| 	{ |  | ||||||
|         this.removeGateById(oldId); |         this.removeGateById(oldId); | ||||||
|         this.addGateWithId(g); |         this.addGateWithId(g); | ||||||
|  |  | ||||||
| @@ -516,8 +486,7 @@ public class GatesManager | |||||||
|     public void handleGateLocationChange(final Gate g, |     public void handleGateLocationChange(final Gate g, | ||||||
|                                          final Location oldLocation, |                                          final Location oldLocation, | ||||||
|                                          final Set<Location> oldGateBlockLocations, |                                          final Set<Location> oldGateBlockLocations, | ||||||
|                                          final Set<Block> oldGateFrameBlocks) |                                          final Set<Block> oldGateFrameBlocks) { | ||||||
| 	{ |  | ||||||
|         this.removeGateFromChunk(g, oldLocation); |         this.removeGateFromChunk(g, oldLocation); | ||||||
|         this.addGateByChunk(g); |         this.addGateByChunk(g); | ||||||
|  |  | ||||||
| @@ -536,8 +505,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public void handleGateExitChange(final Gate g, final Location oldExit) |     public void handleGateExitChange(final Gate g, final Location oldExit) { | ||||||
|     { |  | ||||||
|         // nothing to do |         // nothing to do | ||||||
|  |  | ||||||
|         Map<String, Object> changeSet = new HashMap<String, Object>(); |         Map<String, Object> changeSet = new HashMap<String, Object>(); | ||||||
| @@ -549,8 +517,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void handleNewGate(final Gate g) |     public void handleNewGate(final Gate g) { | ||||||
| 	{ |  | ||||||
|         this.gates.add(g); |         this.gates.add(g); | ||||||
|  |  | ||||||
|         this.addGateByChunk(g); |         this.addGateByChunk(g); | ||||||
| @@ -568,8 +535,7 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void handleDeletion(final Gate g) |     public void handleDeletion(final Gate g) { | ||||||
| 	{ |  | ||||||
|         this.gates.remove(g); |         this.gates.remove(g); | ||||||
|  |  | ||||||
|         this.removeGateById(g.getId()); |         this.removeGateById(g.getId()); | ||||||
| @@ -586,14 +552,12 @@ public class GatesManager | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public boolean gateExists(final String id) |     public boolean gateExists(final String id) { | ||||||
| 	{ |  | ||||||
|         return gatesById.containsKey(id.toLowerCase()); |         return gatesById.containsKey(id.toLowerCase()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public List<Gate> allGates () |     public List<Gate> allGates() { | ||||||
| 	{ |  | ||||||
|         return gates; |         return gates; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -38,8 +38,7 @@ import de.craftinc.gates.commands.*; | |||||||
| import org.mcstats.Metrics; | import org.mcstats.Metrics; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class Plugin extends JavaPlugin  | public class Plugin extends JavaPlugin { | ||||||
| { |  | ||||||
|     public static final String permissionInfo = "craftincgates.info"; |     public static final String permissionInfo = "craftincgates.info"; | ||||||
|     public static final String permissionManage = "craftincgates.manage"; |     public static final String permissionManage = "craftincgates.manage"; | ||||||
|     public static final String permissionUse = "craftincgates.use"; |     public static final String permissionUse = "craftincgates.use"; | ||||||
| @@ -59,54 +58,45 @@ public class Plugin extends JavaPlugin | |||||||
|     protected BlockBreakListener blockBreakListener = new BlockBreakListener(); |     protected BlockBreakListener blockBreakListener = new BlockBreakListener(); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public Plugin() |     public Plugin() { | ||||||
| 	{ |  | ||||||
|         instance = this; |         instance = this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public static Plugin getPlugin() |     public static Plugin getPlugin() { | ||||||
| 	{ |  | ||||||
|         return instance; |         return instance; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public GatesManager getGatesManager()  |     public GatesManager getGatesManager() { | ||||||
| 	{ |  | ||||||
|         return gatesManager; |         return gatesManager; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| 	public void onLoad()  |     public void onLoad() { | ||||||
| 	{ |  | ||||||
|         ConfigurationSerialization.registerClass(Gate.class); |         ConfigurationSerialization.registerClass(Gate.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void setupPermissions() |     protected void setupPermissions() { | ||||||
| 	{ |  | ||||||
|         if (getServer().getPluginManager().getPlugin("Vault") == null) { |         if (getServer().getPluginManager().getPlugin("Vault") == null) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class); |         RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class); | ||||||
|  |  | ||||||
| 		if (rsp != null) |         if (rsp != null) { | ||||||
| 		{ |  | ||||||
|             log("Using permission provider provided by Vault."); |             log("Using permission provider provided by Vault."); | ||||||
|             permission = rsp.getProvider(); |             permission = rsp.getProvider(); | ||||||
| 		} |         } else { | ||||||
| 		else  |  | ||||||
| 		{ |  | ||||||
|             log("Not using setup permission provider provided by Vault."); |             log("Not using setup permission provider provided by Vault."); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| 	public void onDisable()  |     public void onDisable() { | ||||||
| 	{ |  | ||||||
|         // Save gates |         // Save gates | ||||||
|         gatesManager.saveGatesToDisk(); |         gatesManager.saveGatesToDisk(); | ||||||
|  |  | ||||||
| @@ -115,14 +105,12 @@ public class Plugin extends JavaPlugin | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| 	public void onEnable()  |     public void onEnable() { | ||||||
| 	{ |  | ||||||
|         // Setup Metrics |         // Setup Metrics | ||||||
|         try { |         try { | ||||||
|             Metrics metrics = new Metrics(this); |             Metrics metrics = new Metrics(this); | ||||||
|             metrics.start(); |             metrics.start(); | ||||||
|         } |         } catch (IOException e) { | ||||||
|         catch (IOException e) { |  | ||||||
|             log("Failed to start metrics!"); |             log("Failed to start metrics!"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -159,16 +147,14 @@ public class Plugin extends JavaPlugin | |||||||
|  |  | ||||||
|         if (success) { |         if (success) { | ||||||
|             log("Enabled"); |             log("Enabled"); | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             PluginManager pm = this.getServer().getPluginManager(); |             PluginManager pm = this.getServer().getPluginManager(); | ||||||
|             pm.disablePlugin(this); |             pm.disablePlugin(this); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected void registerEventListeners() |     protected void registerEventListeners() { | ||||||
|     { |  | ||||||
|         PluginManager pm = this.getServer().getPluginManager(); |         PluginManager pm = this.getServer().getPluginManager(); | ||||||
|  |  | ||||||
|         pm.registerEvents(this.moveListener, this); |         pm.registerEvents(this.moveListener, this); | ||||||
| @@ -187,8 +173,7 @@ public class Plugin extends JavaPlugin | |||||||
|     // Commands |     // Commands | ||||||
|     // -------------------------------------------- // |     // -------------------------------------------- // | ||||||
|  |  | ||||||
| 	public String getBaseCommand() |     public String getBaseCommand() { | ||||||
| 	{ |  | ||||||
|         if (this.baseCommand != null) |         if (this.baseCommand != null) | ||||||
|             return this.baseCommand; |             return this.baseCommand; | ||||||
|  |  | ||||||
| @@ -201,18 +186,15 @@ public class Plugin extends JavaPlugin | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| 	public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)  |     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { | ||||||
| 	{ |  | ||||||
|         List<String> parameters = new ArrayList<String>(Arrays.asList(args)); |         List<String> parameters = new ArrayList<String>(Arrays.asList(args)); | ||||||
|         this.handleCommand(sender, parameters); |         this.handleCommand(sender, parameters); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public void handleCommand(CommandSender sender, List<String> parameters)  |     public void handleCommand(CommandSender sender, List<String> parameters) { | ||||||
| 	{ |         if (parameters.size() == 0) { | ||||||
| 		if (parameters.size() == 0)  |  | ||||||
| 		{ |  | ||||||
|             this.commands.get(0).execute(sender, parameters); |             this.commands.get(0).execute(sender, parameters); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @@ -220,10 +202,8 @@ public class Plugin extends JavaPlugin | |||||||
|         String commandName = parameters.get(0).toLowerCase(); |         String commandName = parameters.get(0).toLowerCase(); | ||||||
|         parameters.remove(0); |         parameters.remove(0); | ||||||
|  |  | ||||||
| 		for (BaseCommand fcommand : this.commands)  |         for (BaseCommand fcommand : this.commands) { | ||||||
| 		{ |             if (fcommand.getAliases().contains(commandName)) { | ||||||
| 			if (fcommand.getAliases().contains(commandName))  |  | ||||||
| 			{ |  | ||||||
|                 fcommand.execute(sender, parameters); |                 fcommand.execute(sender, parameters); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
| @@ -237,14 +217,12 @@ public class Plugin extends JavaPlugin | |||||||
|     /* |     /* | ||||||
|      * Logging |      * Logging | ||||||
|      */ |      */ | ||||||
| 	public static void log(String msg)  |     public static void log(String msg) { | ||||||
| 	{ |  | ||||||
|         log(Level.INFO, msg); |         log(Level.INFO, msg); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public static void log(Level level, String msg)  |     public static void log(Level level, String msg) { | ||||||
| 	{ |  | ||||||
|         Logger.getLogger("Minecraft").log(level, "[" + instance.getDescription().getFullName() + "] " + msg); |         Logger.getLogger("Minecraft").log(level, "[" + instance.getDescription().getFullName() + "] " + msg); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,11 +25,9 @@ import org.bukkit.event.EventPriority; | |||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.block.BlockBreakEvent; | import org.bukkit.event.block.BlockBreakEvent; | ||||||
|  |  | ||||||
| public class BlockBreakListener implements Listener | public class BlockBreakListener implements Listener { | ||||||
| { |  | ||||||
|     @EventHandler(priority = EventPriority.MONITOR) |     @EventHandler(priority = EventPriority.MONITOR) | ||||||
|     public void onBlockBreak(BlockBreakEvent event) |     public void onBlockBreak(BlockBreakEvent event) { | ||||||
|     { |  | ||||||
|         if (event.isCancelled()) { |         if (event.isCancelled()) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @@ -39,8 +37,8 @@ public class BlockBreakListener implements Listener | |||||||
|         if (gate != null && !gate.isHidden()) { |         if (gate != null && !gate.isHidden()) { | ||||||
|             try { |             try { | ||||||
|                 gate.setOpen(false); |                 gate.setOpen(false); | ||||||
|  |             } catch (Exception ignored) { | ||||||
|             } |             } | ||||||
|             catch (Exception ignored) { } |  | ||||||
|  |  | ||||||
|             GateBlockChangeSender.updateGateBlocks(gate); |             GateBlockChangeSender.updateGateBlocks(gate); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -24,11 +24,9 @@ import org.bukkit.event.Listener; | |||||||
| import org.bukkit.event.player.PlayerChangedWorldEvent; | import org.bukkit.event.player.PlayerChangedWorldEvent; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class PlayerChangedWorldListener implements Listener | public class PlayerChangedWorldListener implements Listener { | ||||||
| { |  | ||||||
|     @EventHandler(priority = EventPriority.NORMAL) |     @EventHandler(priority = EventPriority.NORMAL) | ||||||
|     public void onPlayerChangeWorld(PlayerChangedWorldEvent event) |     public void onPlayerChangeWorld(PlayerChangedWorldEvent event) { | ||||||
|     { |  | ||||||
|         GateBlockChangeSender.updateGateBlocks(event.getPlayer()); |         GateBlockChangeSender.updateGateBlocks(event.getPlayer()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,11 +23,9 @@ import org.bukkit.event.EventPriority; | |||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.player.PlayerJoinEvent; | import org.bukkit.event.player.PlayerJoinEvent; | ||||||
|  |  | ||||||
| public class PlayerJoinListener implements Listener | public class PlayerJoinListener implements Listener { | ||||||
| { |  | ||||||
|     @EventHandler(priority = EventPriority.NORMAL) |     @EventHandler(priority = EventPriority.NORMAL) | ||||||
|     public void onPlayerJoin(PlayerJoinEvent event) |     public void onPlayerJoin(PlayerJoinEvent event) { | ||||||
|     { |  | ||||||
|         GateBlockChangeSender.updateGateBlocks(event.getPlayer()); |         GateBlockChangeSender.updateGateBlocks(event.getPlayer()); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -38,13 +38,11 @@ import de.craftinc.gates.Plugin; | |||||||
| import org.bukkit.scheduler.BukkitScheduler; | import org.bukkit.scheduler.BukkitScheduler; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class PlayerMoveListener implements Listener | public class PlayerMoveListener implements Listener { | ||||||
| { |  | ||||||
|     protected HashMap<String, Long> lastNoPermissionMessages = new HashMap<String, Long>(); |     protected HashMap<String, Long> lastNoPermissionMessages = new HashMap<String, Long>(); | ||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.NORMAL) |     @EventHandler(priority = EventPriority.NORMAL) | ||||||
| 	public void onPlayerMove(PlayerMoveEvent event)  |     public void onPlayerMove(PlayerMoveEvent event) { | ||||||
| 	{ |  | ||||||
|         if (event.isCancelled()) { |         if (event.isCancelled()) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @@ -80,8 +78,7 @@ public class PlayerMoveListener implements Listener | |||||||
|                 event.getPlayer().sendMessage(ChatColor.RED + noPermissionString); |                 event.getPlayer().sendMessage(ChatColor.RED + noPermissionString); | ||||||
|                 this.lastNoPermissionMessages.put(playerName, now); |                 this.lastNoPermissionMessages.put(playerName, now); | ||||||
|             } |             } | ||||||
| 		} |         } else { | ||||||
|         else { |  | ||||||
|             this.teleportPlayer(event.getPlayer(), gateAtLocation); |             this.teleportPlayer(event.getPlayer(), gateAtLocation); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -89,11 +86,11 @@ public class PlayerMoveListener implements Listener | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Teleports a player. |      * Teleports a player. | ||||||
|  |      * | ||||||
|      * @param player The player to teleport. |      * @param player The player to teleport. | ||||||
|      * @param gate   The gate to which exit the player will be teleported. |      * @param gate   The gate to which exit the player will be teleported. | ||||||
|      */ |      */ | ||||||
| 	private void teleportPlayer(final Player player, final Gate gate) |     private void teleportPlayer(final Player player, final Gate gate) { | ||||||
| 	{ |  | ||||||
|         // Destination |         // Destination | ||||||
|         final Float newYaw = gate.getExit().getYaw() - gate.getLocation().getYaw() + player.getLocation().getYaw(); |         final Float newYaw = gate.getExit().getYaw() - gate.getLocation().getYaw() + player.getLocation().getYaw(); | ||||||
|         final Location destLocation = new Location(gate.getExit().getWorld(), |         final Location destLocation = new Location(gate.getExit().getWorld(), | ||||||
| @@ -135,8 +132,7 @@ public class PlayerMoveListener implements Listener | |||||||
|             destLocation.getChunk().load(); // load the destination chunk, no new entity will be created otherwise |             destLocation.getChunk().load(); // load the destination chunk, no new entity will be created otherwise | ||||||
|  |  | ||||||
|             scheduler.scheduleSyncDelayedTask(plugin, new Runnable() { |             scheduler.scheduleSyncDelayedTask(plugin, new Runnable() { | ||||||
|                 public void run() |                 public void run() { | ||||||
|                 { |  | ||||||
|                     // FIXME: the code below should be executed after the chunk got loaded and not after a fixed time! |                     // FIXME: the code below should be executed after the chunk got loaded and not after a fixed time! | ||||||
|  |  | ||||||
|                     // create a new entity at the destination location |                     // create a new entity at the destination location | ||||||
| @@ -154,12 +150,10 @@ public class PlayerMoveListener implements Listener | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	protected boolean hasPermission(final Player player, final Gate gate) |     protected boolean hasPermission(final Player player, final Gate gate) { | ||||||
| 	{ |  | ||||||
|         if (Plugin.getPermission() == null) { // fallback: use the standard bukkit permission system |         if (Plugin.getPermission() == null) { // fallback: use the standard bukkit permission system | ||||||
|             return player.hasPermission(Plugin.permissionUse); |             return player.hasPermission(Plugin.permissionUse); | ||||||
| 		} |         } else { | ||||||
| 		else { |  | ||||||
|             final boolean permAtLocation = Plugin.getPermission().has(gate.getLocation().getWorld(), player.getName(), Plugin.permissionUse); |             final boolean permAtLocation = Plugin.getPermission().has(gate.getLocation().getWorld(), player.getName(), Plugin.permissionUse); | ||||||
|             final boolean permAtExit = Plugin.getPermission().has(gate.getExit().getWorld(), player.getName(), Plugin.permissionUse); |             final boolean permAtExit = Plugin.getPermission().has(gate.getExit().getWorld(), player.getName(), Plugin.permissionUse); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,11 +24,9 @@ import org.bukkit.event.Listener; | |||||||
| import org.bukkit.event.player.PlayerRespawnEvent; | import org.bukkit.event.player.PlayerRespawnEvent; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class PlayerRespawnListener implements Listener | public class PlayerRespawnListener implements Listener { | ||||||
| { |  | ||||||
|     @EventHandler(priority = EventPriority.NORMAL) |     @EventHandler(priority = EventPriority.NORMAL) | ||||||
|     public void onPlayerRespawn(PlayerRespawnEvent event) |     public void onPlayerRespawn(PlayerRespawnEvent event) { | ||||||
|     { |  | ||||||
|         GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getRespawnLocation(), true); |         GateBlockChangeSender.updateGateBlocks(event.getPlayer(), event.getRespawnLocation(), true); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,11 +23,9 @@ import org.bukkit.event.EventPriority; | |||||||
| import org.bukkit.event.Listener; | import org.bukkit.event.Listener; | ||||||
| import org.bukkit.event.player.PlayerTeleportEvent; | import org.bukkit.event.player.PlayerTeleportEvent; | ||||||
|  |  | ||||||
| public class PlayerTeleportListener implements Listener | public class PlayerTeleportListener implements Listener { | ||||||
| { |  | ||||||
|     @EventHandler(priority = EventPriority.MONITOR) |     @EventHandler(priority = EventPriority.MONITOR) | ||||||
|     public void onPlayerTeleport(PlayerTeleportEvent event) |     public void onPlayerTeleport(PlayerTeleportEvent event) { | ||||||
|     { |  | ||||||
|         if (event.isCancelled()) { |         if (event.isCancelled()) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -18,22 +18,21 @@ package de.craftinc.gates.persistence; | |||||||
|  |  | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| import org.bukkit.Location; | import org.bukkit.Location; | ||||||
| import org.bukkit.World; | import org.bukkit.World; | ||||||
|  |  | ||||||
| import de.craftinc.gates.Plugin; | import de.craftinc.gates.Plugin; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class LocationUtil  | public class LocationUtil { | ||||||
| { |  | ||||||
|     protected final static String worldKey = "world"; |     protected final static String worldKey = "world"; | ||||||
|     protected final static String xKey = "x"; |     protected final static String xKey = "x"; | ||||||
|     protected final static String yKey = "y"; |     protected final static String yKey = "y"; | ||||||
|     protected final static String zKey = "z"; |     protected final static String zKey = "z"; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	protected static World getWorld(final String name) throws Exception |     protected static World getWorld(final String name) throws Exception { | ||||||
| 	{ |  | ||||||
|         if (name == null) { |         if (name == null) { | ||||||
|             throw new IllegalArgumentException("The name of the world must not be 'null"); |             throw new IllegalArgumentException("The name of the world must not be 'null"); | ||||||
|         } |         } | ||||||
| @@ -55,8 +54,7 @@ public class LocationUtil | |||||||
|      * @param l The location to serialize. Supplying 'null' is ok.. |      * @param l The location to serialize. Supplying 'null' is ok.. | ||||||
|      * @return A Map object ready for storing inside a yaml file. Will return 'null' if 'l' is null. |      * @return A Map object ready for storing inside a yaml file. Will return 'null' if 'l' is null. | ||||||
|      */ |      */ | ||||||
| 	public static Map<String, Object> serializeLocation(final Location l) |     public static Map<String, Object> serializeLocation(final Location l) { | ||||||
| 	{ |  | ||||||
|         if (l == null) { |         if (l == null) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
| @@ -73,14 +71,12 @@ public class LocationUtil | |||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * |  | ||||||
|      * @param map A map generated with the 'serializeLocation' method. Supplying 'null' is ok. |      * @param map A map generated with the 'serializeLocation' method. Supplying 'null' is ok. | ||||||
|      * @return A deserialized location. This method will return 'null' if 'map' is null! |      * @return A deserialized location. This method will return 'null' if 'map' is null! | ||||||
|      * @throws Exception This method will throw an exception if the world of the supplied serialized location |      * @throws Exception This method will throw an exception if the world of the supplied serialized location | ||||||
|      *                   does not exist or if 'map' does not contain all necessary keys! |      *                   does not exist or if 'map' does not contain all necessary keys! | ||||||
|      */ |      */ | ||||||
| 	public static Location deserializeLocation(final Map<String, Object> map) throws Exception |     public static Location deserializeLocation(final Map<String, Object> map) throws Exception { | ||||||
| 	{ |  | ||||||
|         if (map == null) { |         if (map == null) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -27,30 +27,25 @@ import java.util.List; | |||||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class MigrationUtil | public class MigrationUtil { | ||||||
| { |     public static boolean performMigration(int storageVersion, int currentVersion, List<Gate> gates) { | ||||||
|     public static boolean performMigration(int storageVersion, int currentVersion, List<Gate> gates) |  | ||||||
|     { |  | ||||||
|         if (storageVersion == 0 && currentVersion >= 2) { |         if (storageVersion == 0 && currentVersion >= 2) { | ||||||
|             removePortalBlocks(gates); |             removePortalBlocks(gates); | ||||||
|             updateAllowVehicles(gates); |             updateAllowVehicles(gates); | ||||||
|  |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } else if (storageVersion == 1 && currentVersion >= 2) { | ||||||
|         else if (storageVersion == 1  && currentVersion >= 2) { |  | ||||||
|             updateAllowVehicles(gates); |             updateAllowVehicles(gates); | ||||||
|  |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             Plugin.log(Level.SEVERE, "Supplied storage version is currently not supported! Make sure you have the latest version of Craft Inc. Gates installed. Plugin will be disabled!"); |             Plugin.log(Level.SEVERE, "Supplied storage version is currently not supported! Make sure you have the latest version of Craft Inc. Gates installed. Plugin will be disabled!"); | ||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected static void removePortalBlocks(List<Gate> gates) |     protected static void removePortalBlocks(List<Gate> gates) { | ||||||
|     { |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
|  |  | ||||||
|             for (Location l : g.getGateBlockLocations()) { |             for (Location l : g.getGateBlockLocations()) { | ||||||
| @@ -64,8 +59,7 @@ public class MigrationUtil | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected static void updateAllowVehicles(List<Gate> gates) |     protected static void updateAllowVehicles(List<Gate> gates) { | ||||||
|     { |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
|  |  | ||||||
|             g.setAllowsVehicles(true); |             g.setAllowsVehicles(true); | ||||||
|   | |||||||
| @@ -23,8 +23,7 @@ import org.bukkit.Material; | |||||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class ConfigurationUtil | public class ConfigurationUtil { | ||||||
| { |  | ||||||
|     public static final String confMaxGateBlocksKey = "maxGateBlocks"; |     public static final String confMaxGateBlocksKey = "maxGateBlocks"; | ||||||
|     public static final String confPlayerGateBlockUpdateRadiusKey = "playerGateBlockUpdateRadius"; |     public static final String confPlayerGateBlockUpdateRadiusKey = "playerGateBlockUpdateRadius"; | ||||||
|     public static final String confCheckForBrokenGateFramesKey = "checkForBrokenGateFrames"; |     public static final String confCheckForBrokenGateFramesKey = "checkForBrokenGateFrames"; | ||||||
| @@ -38,79 +37,56 @@ public class ConfigurationUtil | |||||||
|     public static final String confGateMaterialKey = "gateMaterial"; |     public static final String confGateMaterialKey = "gateMaterial"; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static GateMaterial getPortalMaterial() |     public static GateMaterial getPortalMaterial() { | ||||||
|     { |  | ||||||
|         String materialString = Plugin.getPlugin().getConfig().getString(confGateMaterialKey); |         String materialString = Plugin.getPlugin().getConfig().getString(confGateMaterialKey); | ||||||
|         GateMaterial material = new GateMaterial(); |         GateMaterial material = new GateMaterial(); | ||||||
|  |  | ||||||
|         if (materialString.equals("sapling")) { |         if (materialString.equals("sapling")) { | ||||||
|             material.material = Material.SAPLING; |             material.material = Material.SAPLING; | ||||||
|         } |         } else if (materialString.equals("water")) { | ||||||
|         else  if (materialString.equals("water")) { |  | ||||||
|             material.material = Material.STATIONARY_WATER; |             material.material = Material.STATIONARY_WATER; | ||||||
|         } |         } else if (materialString.equals("lava")) { | ||||||
|         else if (materialString.equals("lava")) { |  | ||||||
|             material.material = Material.STATIONARY_LAVA; |             material.material = Material.STATIONARY_LAVA; | ||||||
|         } |         } else if (materialString.equals("cobweb")) { | ||||||
|         else if (materialString.equals("cobweb")) { |  | ||||||
|             material.material = Material.WEB; |             material.material = Material.WEB; | ||||||
|         } |         } else if (materialString.equals("grass")) { | ||||||
|         else if (materialString.equals("grass")) { |  | ||||||
|             material.material = Material.LONG_GRASS; |             material.material = Material.LONG_GRASS; | ||||||
|             material.data = 1; |             material.data = 1; | ||||||
|         } |         } else if (materialString.equals("dead bush")) { | ||||||
|         else if (materialString.equals("dead bush")) { |  | ||||||
|             material.material = Material.DEAD_BUSH; |             material.material = Material.DEAD_BUSH; | ||||||
|         } |         } else if (materialString.equals("dandelion")) { | ||||||
|         else if (materialString.equals("dandelion")) { |  | ||||||
|             material.material = Material.YELLOW_FLOWER; |             material.material = Material.YELLOW_FLOWER; | ||||||
|         } |         } else if (materialString.equals("poppy")) { | ||||||
|         else if (materialString.equals("poppy")) { |  | ||||||
|             material.material = Material.RED_ROSE; |             material.material = Material.RED_ROSE; | ||||||
|         } |         } else if (materialString.equals("brown mushroom")) { | ||||||
|         else if (materialString.equals("brown mushroom")) { |  | ||||||
|             material.material = Material.BROWN_MUSHROOM; |             material.material = Material.BROWN_MUSHROOM; | ||||||
|         } |         } else if (materialString.equals("red mushroom")) { | ||||||
|         else if (materialString.equals("red mushroom")) { |  | ||||||
|             material.material = Material.RED_MUSHROOM; |             material.material = Material.RED_MUSHROOM; | ||||||
|         } |         } else if (materialString.equals("torch")) { | ||||||
|         else if (materialString.equals("torch")) { |  | ||||||
|             material.material = Material.TORCH; |             material.material = Material.TORCH; | ||||||
|         } |         } else if (materialString.equals("redstone torch (off)")) { | ||||||
|         else if (materialString.equals("redstone torch (off)")) { |  | ||||||
|             material.material = Material.REDSTONE_TORCH_OFF; |             material.material = Material.REDSTONE_TORCH_OFF; | ||||||
|         } |         } else if (materialString.equals("redstone torch (on)")) { | ||||||
|         else if (materialString.equals("redstone torch (on)")) { |  | ||||||
|             material.material = Material.REDSTONE_TORCH_ON; |             material.material = Material.REDSTONE_TORCH_ON; | ||||||
|         } |         } else if (materialString.equals("fence")) { | ||||||
|         else if (materialString.equals("fence")) { |  | ||||||
|             material.material = Material.FENCE; |             material.material = Material.FENCE; | ||||||
|         } |         } else if (materialString.equals("nether portal")) { | ||||||
|         else if (materialString.equals("nether portal")) { |  | ||||||
|             material.material = Material.PORTAL; |             material.material = Material.PORTAL; | ||||||
|         } |         } else if (materialString.equals("iron bars")) { | ||||||
|         else if (materialString.equals("iron bars")) { |  | ||||||
|             material.material = Material.IRON_FENCE; |             material.material = Material.IRON_FENCE; | ||||||
|         } |         } else if (materialString.equals("glass pane")) { | ||||||
|         else if (materialString.equals("glass pane")) { |  | ||||||
|             material.material = Material.THIN_GLASS; |             material.material = Material.THIN_GLASS; | ||||||
|         } |         } else if (materialString.equals("fence gate")) { | ||||||
|         else if (materialString.equals("fence gate")) { |  | ||||||
|             material.material = Material.FENCE_GATE; |             material.material = Material.FENCE_GATE; | ||||||
|         } |         } else if (materialString.equals("nether brick fence")) { | ||||||
|         else if (materialString.equals("nether brick fence")) { |  | ||||||
|             material.material = Material.NETHER_FENCE; |             material.material = Material.NETHER_FENCE; | ||||||
|         } |         } else if (materialString.equals("nether wart")) { | ||||||
|         else  if (materialString.equals("nether wart")) { |  | ||||||
|             material.material = Material.NETHER_WARTS; |             material.material = Material.NETHER_WARTS; | ||||||
|         } |         } else if (materialString.equals("end portal")) { | ||||||
|         else if (materialString.equals("end portal")) { |  | ||||||
|             material.material = Material.ENDER_PORTAL; |             material.material = Material.ENDER_PORTAL; | ||||||
|         } |         } else if (materialString.equals("cobblestone wall")) { | ||||||
|         else if (materialString.equals("cobblestone wall")) { |  | ||||||
|             material.material = Material.COBBLE_WALL; |             material.material = Material.COBBLE_WALL; | ||||||
|         } |         } else { // fallback! | ||||||
|         else { // fallback! |  | ||||||
|             material.material = Material.PORTAL; |             material.material = Material.PORTAL; | ||||||
|             Plugin.log(Level.WARNING, "Gate material invalid! Please check and correct your configuration file!"); |             Plugin.log(Level.WARNING, "Gate material invalid! Please check and correct your configuration file!"); | ||||||
|         } |         } | ||||||
| @@ -120,8 +96,7 @@ public class ConfigurationUtil | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| class GateMaterial | class GateMaterial { | ||||||
| { |  | ||||||
|     public Material material = Material.PORTAL; |     public Material material = Material.PORTAL; | ||||||
|     public byte data = 0; |     public byte data = 0; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,13 +28,11 @@ import org.bukkit.block.BlockFace; | |||||||
| import de.craftinc.gates.Plugin; | import de.craftinc.gates.Plugin; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class FloodUtil  | public class FloodUtil { | ||||||
| { |  | ||||||
|     protected static final Set<BlockFace> exp1 = new HashSet<BlockFace>(); |     protected static final Set<BlockFace> exp1 = new HashSet<BlockFace>(); | ||||||
|     protected static final Set<BlockFace> exp2 = new HashSet<BlockFace>(); |     protected static final Set<BlockFace> exp2 = new HashSet<BlockFace>(); | ||||||
|  |  | ||||||
| 	static  |     static { | ||||||
| 	{ |  | ||||||
|         exp1.add(BlockFace.UP); |         exp1.add(BlockFace.UP); | ||||||
|         exp1.add(BlockFace.DOWN); |         exp1.add(BlockFace.DOWN); | ||||||
|         exp1.add(BlockFace.EAST); |         exp1.add(BlockFace.EAST); | ||||||
| @@ -49,11 +47,11 @@ public class FloodUtil | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns the all frame blocks of an gate. |      * Returns the all frame blocks of an gate. | ||||||
|  |      * | ||||||
|      * @param blocks All blocks inside the gate. |      * @param blocks All blocks inside the gate. | ||||||
|      * @return A Set containing all frame block. Will never return 'null'. |      * @return A Set containing all frame block. Will never return 'null'. | ||||||
|      */ |      */ | ||||||
|     public static Set<Block> getFrame(final Set<Block> blocks) |     public static Set<Block> getFrame(final Set<Block> blocks) { | ||||||
|     { |  | ||||||
|         if (blocks == null || blocks.isEmpty()) { |         if (blocks == null || blocks.isEmpty()) { | ||||||
|             return new HashSet<Block>(); |             return new HashSet<Block>(); | ||||||
|         } |         } | ||||||
| @@ -81,8 +79,7 @@ public class FloodUtil | |||||||
|  |  | ||||||
|         if (gateFrameSearchFaces != null) { |         if (gateFrameSearchFaces != null) { | ||||||
|             return _getFrame(blocks, gateFrameSearchFaces); |             return _getFrame(blocks, gateFrameSearchFaces); | ||||||
|         } |         } else { // no direction found (the gate might only consist of blocks one over another) | ||||||
|         else { // no direction found (the gate might only consist of blocks one over another) |  | ||||||
|  |  | ||||||
|             // Try one direction and check if the found blocks are not air. |             // Try one direction and check if the found blocks are not air. | ||||||
|             // If air is found (frame broken or wrong direction) return the other direction |             // If air is found (frame broken or wrong direction) return the other direction | ||||||
| @@ -100,9 +97,7 @@ public class FloodUtil | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     protected static Set<Block> _getFrame(final Set<Block> blocks, final Set<BlockFace> searchDirections) { | ||||||
|     protected static Set<Block> _getFrame(final Set<Block> blocks, final Set<BlockFace> searchDirections) |  | ||||||
|     { |  | ||||||
|         Set<Block> frameBlocks = new HashSet<Block>(); |         Set<Block> frameBlocks = new HashSet<Block>(); | ||||||
|  |  | ||||||
|         for (Block b : blocks) { |         for (Block b : blocks) { | ||||||
| @@ -122,11 +117,11 @@ public class FloodUtil | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns the all frame blocks of an gate. |      * Returns the all frame blocks of an gate. | ||||||
|  |      * | ||||||
|      * @param locations All locations inside the gate. |      * @param locations All locations inside the gate. | ||||||
|      * @return A Set containing all frame block. Will never return 'null'. |      * @return A Set containing all frame block. Will never return 'null'. | ||||||
|      */ |      */ | ||||||
|     public static Set<Block> getFrameWithLocations(final Set<Location> locations) |     public static Set<Block> getFrameWithLocations(final Set<Location> locations) { | ||||||
|     { |  | ||||||
|         if (locations == null) { |         if (locations == null) { | ||||||
|             throw new IllegalArgumentException("'locations' must not be 'null'"); |             throw new IllegalArgumentException("'locations' must not be 'null'"); | ||||||
|         } |         } | ||||||
| @@ -142,8 +137,7 @@ public class FloodUtil | |||||||
|  |  | ||||||
|  |  | ||||||
|     // For the same frame and location this set of blocks is deterministic |     // For the same frame and location this set of blocks is deterministic | ||||||
| 	public static Set<Block> getGatePortalBlocks(final Block block) |     public static Set<Block> getGatePortalBlocks(final Block block) { | ||||||
| 	{ |  | ||||||
|         if (block == null) { |         if (block == null) { | ||||||
|             throw new IllegalArgumentException("'block' must not be 'null'"); |             throw new IllegalArgumentException("'block' must not be 'null'"); | ||||||
|         } |         } | ||||||
| @@ -176,8 +170,7 @@ public class FloodUtil | |||||||
|     protected static Set<Block> getAirFloodBlocks(final Block startBlock, |     protected static Set<Block> getAirFloodBlocks(final Block startBlock, | ||||||
|                                                   Set<Block> foundBlocks, |                                                   Set<Block> foundBlocks, | ||||||
|                                                   final Set<BlockFace> expandFaces, |                                                   final Set<BlockFace> expandFaces, | ||||||
|                                                         int             limit) |                                                   int limit) { | ||||||
| 	{ |  | ||||||
|         if (foundBlocks == null) { |         if (foundBlocks == null) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -32,17 +32,16 @@ import java.util.Set; | |||||||
| import static de.craftinc.gates.util.ConfigurationUtil.*; | import static de.craftinc.gates.util.ConfigurationUtil.*; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class GateBlockChangeSender | public class GateBlockChangeSender { | ||||||
| { |  | ||||||
|     /** |     /** | ||||||
|      * Replaces gate frame blocks with glowstone for a short period of time. |      * Replaces gate frame blocks with glowstone for a short period of time. | ||||||
|      * Uses the data stored in 'highlightDuration' inside the config file |      * Uses the data stored in 'highlightDuration' inside the config file | ||||||
|      * for determining when to de-highlight the frames. |      * for determining when to de-highlight the frames. | ||||||
|  |      * | ||||||
|      * @param player The player for whom the frame should be highlighted. |      * @param player The player for whom the frame should be highlighted. | ||||||
|      *               Must not be null! |      *               Must not be null! | ||||||
|      */ |      */ | ||||||
|     public static void temporaryHighlightGatesFrames(final Player player, final Set<Gate> gates) |     public static void temporaryHighlightGatesFrames(final Player player, final Set<Gate> gates) { | ||||||
|     { |  | ||||||
|         if (player == null) { |         if (player == null) { | ||||||
|             throw new IllegalArgumentException("'player' must not be 'null'!"); |             throw new IllegalArgumentException("'player' must not be 'null'!"); | ||||||
|         } |         } | ||||||
| @@ -71,8 +70,7 @@ public class GateBlockChangeSender | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static void temporaryHighlightGateFrame(final Player player, final Gate gate) |     public static void temporaryHighlightGateFrame(final Player player, final Gate gate) { | ||||||
|     { |  | ||||||
|         if (gate == null) { |         if (gate == null) { | ||||||
|             throw new IllegalArgumentException("'gate' must not be 'null!"); |             throw new IllegalArgumentException("'gate' must not be 'null!"); | ||||||
|         } |         } | ||||||
| @@ -99,8 +97,7 @@ public class GateBlockChangeSender | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected static void dehighlightGatesFrames(final Player player, final Set<Gate> gates) |     protected static void dehighlightGatesFrames(final Player player, final Set<Gate> gates) { | ||||||
|     { |  | ||||||
|         for (Gate g : gates) { |         for (Gate g : gates) { | ||||||
|             Set<Block> frameBlocks = g.getGateFrameBlocks(); |             Set<Block> frameBlocks = g.getGateFrameBlocks(); | ||||||
|  |  | ||||||
| @@ -111,8 +108,7 @@ public class GateBlockChangeSender | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     protected static void dehighlightGateFrame(final Player player, final Gate gate) |     protected static void dehighlightGateFrame(final Player player, final Gate gate) { | ||||||
|     { |  | ||||||
|         Set<Block> frameBlocks = gate.getGateFrameBlocks(); |         Set<Block> frameBlocks = gate.getGateFrameBlocks(); | ||||||
|  |  | ||||||
|         for (Block b : frameBlocks) { |         for (Block b : frameBlocks) { | ||||||
| @@ -124,13 +120,13 @@ public class GateBlockChangeSender | |||||||
|     /** |     /** | ||||||
|      * Sends gate blocks to player at a given location. Will send the updates either immediately or |      * Sends gate blocks to player at a given location. Will send the updates either immediately or | ||||||
|      * immediately and after a short delay. |      * immediately and after a short delay. | ||||||
|  |      * | ||||||
|      * @param player      A player to send block changes to. Must not be null! |      * @param player      A player to send block changes to. Must not be null! | ||||||
|      * @param location    The location to look for gates nearby. Must not be null! |      * @param location    The location to look for gates nearby. Must not be null! | ||||||
|      * @param sendDelayed Set to 'true' if the block changes shall be send a second time after a one |      * @param sendDelayed Set to 'true' if the block changes shall be send a second time after a one | ||||||
|      *                    second delay. |      *                    second delay. | ||||||
|      */ |      */ | ||||||
|     public static void updateGateBlocks(final Player player, final Location location, boolean sendDelayed) |     public static void updateGateBlocks(final Player player, final Location location, boolean sendDelayed) { | ||||||
|     { |  | ||||||
|         if (player == null) { |         if (player == null) { | ||||||
|             throw new IllegalArgumentException("'player' must not be 'null'!"); |             throw new IllegalArgumentException("'player' must not be 'null'!"); | ||||||
|         } |         } | ||||||
| @@ -161,11 +157,9 @@ public class GateBlockChangeSender | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (sendDelayed) { |         if (sendDelayed) { | ||||||
|             Bukkit.getScheduler().scheduleSyncDelayedTask(Plugin.getPlugin(), new Runnable() |             Bukkit.getScheduler().scheduleSyncDelayedTask(Plugin.getPlugin(), new Runnable() { | ||||||
|             { |  | ||||||
|                 @Override |                 @Override | ||||||
|                 public void run() |                 public void run() { | ||||||
|                 { |  | ||||||
|                     updateGateBlocks(player, location, false); |                     updateGateBlocks(player, location, false); | ||||||
|                 } |                 } | ||||||
|             }, 20L); |             }, 20L); | ||||||
| @@ -176,16 +170,14 @@ public class GateBlockChangeSender | |||||||
|     /** |     /** | ||||||
|      * This method calls: updateGateBlocks(player, location, false); |      * This method calls: updateGateBlocks(player, location, false); | ||||||
|      */ |      */ | ||||||
|     public static void updateGateBlocks(final Player player, final Location location) |     public static void updateGateBlocks(final Player player, final Location location) { | ||||||
|     { |  | ||||||
|         updateGateBlocks(player, location, false); |         updateGateBlocks(player, location, false); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * This method calls: updateGateBlocks(player, player.getLocation(), false); |      * This method calls: updateGateBlocks(player, player.getLocation(), false); | ||||||
|      */ |      */ | ||||||
|     public static void updateGateBlocks(final Player player) |     public static void updateGateBlocks(final Player player) { | ||||||
|     { |  | ||||||
|         if (player == null) { |         if (player == null) { | ||||||
|             throw new IllegalArgumentException("'player' must not be 'null'!"); |             throw new IllegalArgumentException("'player' must not be 'null'!"); | ||||||
|         } |         } | ||||||
| @@ -194,18 +186,17 @@ public class GateBlockChangeSender | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public static void updateGateBlocks(final Gate gate) |     public static void updateGateBlocks(final Gate gate) { | ||||||
|     { |  | ||||||
|         updateGateBlocks(gate, false); |         updateGateBlocks(gate, false); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Sends block changes to players near a given gate. |      * Sends block changes to players near a given gate. | ||||||
|  |      * | ||||||
|      * @param gate   Must not be 'null'! |      * @param gate   Must not be 'null'! | ||||||
|      * @param remove Set to true if all visible gate blocks shall be removed. |      * @param remove Set to true if all visible gate blocks shall be removed. | ||||||
|      */ |      */ | ||||||
|     public static void updateGateBlocks(final Gate gate, boolean remove) |     public static void updateGateBlocks(final Gate gate, boolean remove) { | ||||||
|     { |  | ||||||
|         if (gate == null) { |         if (gate == null) { | ||||||
|             throw new IllegalArgumentException("'gate must not be 'null'!"); |             throw new IllegalArgumentException("'gate must not be 'null'!"); | ||||||
|         } |         } | ||||||
| @@ -234,8 +225,7 @@ public class GateBlockChangeSender | |||||||
|         if (gate.isOpen() && !gate.isHidden() && !remove) { |         if (gate.isOpen() && !gate.isHidden() && !remove) { | ||||||
|             material = gateMaterial.material; |             material = gateMaterial.material; | ||||||
|             data = gateMaterial.data; |             data = gateMaterial.data; | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             material = Material.AIR; |             material = Material.AIR; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,22 +19,19 @@ package de.craftinc.gates.util; | |||||||
| import org.bukkit.Chunk; | import org.bukkit.Chunk; | ||||||
| import org.bukkit.World; | import org.bukkit.World; | ||||||
|  |  | ||||||
| public class SimpleChunk  | public class SimpleChunk { | ||||||
| { |  | ||||||
|     private int x; |     private int x; | ||||||
|     private int z; |     private int z; | ||||||
|     private String world; |     private String world; | ||||||
|  |  | ||||||
| 	public SimpleChunk(Chunk c) |     public SimpleChunk(Chunk c) { | ||||||
| 	{ |  | ||||||
|         this.x = c.getX(); |         this.x = c.getX(); | ||||||
|         this.z = c.getZ(); |         this.z = c.getZ(); | ||||||
|         this.world = c.getWorld().getName(); |         this.world = c.getWorld().getName(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public SimpleChunk(int x, int z, World w) |     public SimpleChunk(int x, int z, World w) { | ||||||
|     { |  | ||||||
|         this.x = x; |         this.x = x; | ||||||
|         this.z = z; |         this.z = z; | ||||||
|         this.world = w.getName(); |         this.world = w.getName(); | ||||||
| @@ -42,8 +39,7 @@ public class SimpleChunk | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean equals(Object o) |     public boolean equals(Object o) { | ||||||
|     { |  | ||||||
|         if (o instanceof SimpleChunk) { |         if (o instanceof SimpleChunk) { | ||||||
|             SimpleChunk otherLocation = (SimpleChunk) o; |             SimpleChunk otherLocation = (SimpleChunk) o; | ||||||
|  |  | ||||||
| @@ -60,8 +56,7 @@ public class SimpleChunk | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int hashCode() |     public int hashCode() { | ||||||
|     { |  | ||||||
|         int hash = 11; |         int hash = 11; | ||||||
|         hash = 29 * hash + x; |         hash = 29 * hash + x; | ||||||
|         hash = 37 * hash + z; |         hash = 37 * hash + z; | ||||||
| @@ -72,8 +67,7 @@ public class SimpleChunk | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public String toString() |     public String toString() { | ||||||
|     { |  | ||||||
|         return this.getClass().toString() + " (x=" + this.x + " z=" + this.z + " world='" + this.world + "')"; |         return this.getClass().toString() + " (x=" + this.x + " z=" + this.z + " world='" + this.world + "')"; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -18,16 +18,14 @@ package de.craftinc.gates.util; | |||||||
|  |  | ||||||
| import org.bukkit.Location; | import org.bukkit.Location; | ||||||
|  |  | ||||||
| public class SimpleLocation  | public class SimpleLocation { | ||||||
| { |  | ||||||
|     private String world; |     private String world; | ||||||
|     private int x; |     private int x; | ||||||
|     private int y; |     private int y; | ||||||
|     private int z; |     private int z; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public SimpleLocation(Location l) |     public SimpleLocation(Location l) { | ||||||
|     { |  | ||||||
|         this.world = l.getWorld().getName(); |         this.world = l.getWorld().getName(); | ||||||
|  |  | ||||||
|         // Using Block coordinates makes it possible to compare block locations with player locations. |         // Using Block coordinates makes it possible to compare block locations with player locations. | ||||||
| @@ -38,8 +36,7 @@ public class SimpleLocation | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public SimpleLocation(Location l, boolean isHeadPosition) |     public SimpleLocation(Location l, boolean isHeadPosition) { | ||||||
|     { |  | ||||||
|         this.world = l.getWorld().getName(); |         this.world = l.getWorld().getName(); | ||||||
|  |  | ||||||
|         // Using Block coordinates makes it possible to compare block locations with player locations. |         // Using Block coordinates makes it possible to compare block locations with player locations. | ||||||
| @@ -55,16 +52,13 @@ public class SimpleLocation | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public String toString() |     public String toString() { | ||||||
|     { |  | ||||||
|         return super.toString() + " x: " + x + " y: " + y + " z: " + z + " world: " + world; |         return super.toString() + " x: " + x + " y: " + y + " z: " + z + " world: " + world; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|      |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean equals(final Object o) |     public boolean equals(final Object o) { | ||||||
|     { |  | ||||||
|         if (o instanceof SimpleLocation) { |         if (o instanceof SimpleLocation) { | ||||||
|             SimpleLocation otherLocation = (SimpleLocation) o; |             SimpleLocation otherLocation = (SimpleLocation) o; | ||||||
|  |  | ||||||
| @@ -82,8 +76,7 @@ public class SimpleLocation | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public int hashCode() |     public int hashCode() { | ||||||
|     { |  | ||||||
|         int hash = 13; |         int hash = 13; | ||||||
|         hash = 37 * hash + x; |         hash = 37 * hash + x; | ||||||
|         hash = 31 * hash + y; |         hash = 31 * hash + y; | ||||||
|   | |||||||
| @@ -20,16 +20,13 @@ import org.bukkit.ChatColor; | |||||||
|  |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| public class TextUtil  | public class TextUtil { | ||||||
| { |     public static String titleize(String str) { | ||||||
| 	public static String titleize(String str) |  | ||||||
| 	{ |  | ||||||
|         String center = ".[ " + ChatColor.YELLOW + str + ChatColor.GOLD + " ]."; |         String center = ".[ " + ChatColor.YELLOW + str + ChatColor.GOLD + " ]."; | ||||||
|  |  | ||||||
|         if (center.length() >= 60) { |         if (center.length() >= 60) { | ||||||
|             return ChatColor.GOLD + center; |             return ChatColor.GOLD + center; | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             String line = ChatColor.GOLD + repeat("_", 60); |             String line = ChatColor.GOLD + repeat("_", 60); | ||||||
|  |  | ||||||
|             int pivot = line.length() / 2; |             int pivot = line.length() / 2; | ||||||
| @@ -41,8 +38,7 @@ public class TextUtil | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| 	public static String repeat(String s, int times)  |     public static String repeat(String s, int times) { | ||||||
| 	{ |  | ||||||
|         if (times <= 0) |         if (times <= 0) | ||||||
|             return ""; |             return ""; | ||||||
|  |  | ||||||
| @@ -53,8 +49,7 @@ public class TextUtil | |||||||
|     /** |     /** | ||||||
|      * Joins all elements of list into a single string, separating the original strings with glue. |      * Joins all elements of list into a single string, separating the original strings with glue. | ||||||
|      */ |      */ | ||||||
| 	public static String implode(List<String> list, String glue) |     public static String implode(List<String> list, String glue) { | ||||||
| 	{ |  | ||||||
|         if (list.size() == 0) { |         if (list.size() == 0) { | ||||||
|             return ""; |             return ""; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -20,10 +20,8 @@ import org.bukkit.Location; | |||||||
| import org.bukkit.entity.*; | import org.bukkit.entity.*; | ||||||
|  |  | ||||||
|  |  | ||||||
| public class VehicleCloner | public class VehicleCloner { | ||||||
| { |     public static Vehicle clone(Vehicle parent, Location cloneLocation) { | ||||||
|     public static Vehicle clone(Vehicle parent, Location cloneLocation) |  | ||||||
|     { |  | ||||||
|         Vehicle clone = cloneLocation.getWorld().spawn(cloneLocation, parent.getClass()); |         Vehicle clone = cloneLocation.getWorld().spawn(cloneLocation, parent.getClass()); | ||||||
|  |  | ||||||
|         clone.setFallDistance(parent.getFallDistance()); |         clone.setFallDistance(parent.getFallDistance()); | ||||||
| @@ -41,8 +39,7 @@ public class VehicleCloner | |||||||
|             boat.setUnoccupiedDeceleration(parentBoat.getUnoccupiedDeceleration()); |             boat.setUnoccupiedDeceleration(parentBoat.getUnoccupiedDeceleration()); | ||||||
|             boat.setWorkOnLand(parentBoat.getWorkOnLand()); |             boat.setWorkOnLand(parentBoat.getWorkOnLand()); | ||||||
|             boat.setVelocity(parentBoat.getVelocity()); |             boat.setVelocity(parentBoat.getVelocity()); | ||||||
|         } |         } else if (clone instanceof Animals) { | ||||||
|         else if (clone instanceof Animals) { |  | ||||||
|             Animals animal = (Animals) clone; |             Animals animal = (Animals) clone; | ||||||
|             Animals parentAnimal = (Animals) parent; |             Animals parentAnimal = (Animals) parent; | ||||||
|  |  | ||||||
| @@ -81,21 +78,18 @@ public class VehicleCloner | |||||||
|  |  | ||||||
|                 if (parentHorse.isAdult()) { |                 if (parentHorse.isAdult()) { | ||||||
|                     horse.setAdult(); |                     horse.setAdult(); | ||||||
|                 } |                 } else { | ||||||
|                 else { |  | ||||||
|                     horse.setBaby(); |                     horse.setBaby(); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 horse.setBreed(parentHorse.canBreed()); |                 horse.setBreed(parentHorse.canBreed()); | ||||||
|             } |             } else if (clone instanceof Pig) { | ||||||
|             else  if (clone instanceof Pig) { |  | ||||||
|                 Pig pig = (Pig) clone; |                 Pig pig = (Pig) clone; | ||||||
|                 Pig parentPig = (Pig) parent; |                 Pig parentPig = (Pig) parent; | ||||||
|  |  | ||||||
|                 pig.setSaddle(parentPig.hasSaddle()); |                 pig.setSaddle(parentPig.hasSaddle()); | ||||||
|             } |             } | ||||||
|         } |         } else if (clone instanceof Minecart) { | ||||||
|         else if (clone instanceof Minecart) { |  | ||||||
|             Minecart minecart = (Minecart) clone; |             Minecart minecart = (Minecart) clone; | ||||||
|             Minecart parentMinecart = (Minecart) parent; |             Minecart parentMinecart = (Minecart) parent; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tobias Ottenweller
					Tobias Ottenweller