Merge branch 'master' of git://github.com/drtshock/PlotSquared into drtshock-master

Conflicts:
	PlotSquared/src/main/java/com/intellectualcrafters/plot/commands/Unclaim.java
	PlotSquared/src/main/java/com/intellectualcrafters/plot/listeners/WorldEditListener.java
This commit is contained in:
Sauilitired 2014-12-18 12:35:08 +01:00
commit a04e207724
167 changed files with 3712 additions and 5532 deletions

View File

@ -10,8 +10,7 @@ public final class ByteArrayTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public ByteArrayTag(final byte[] value) { public ByteArrayTag(final byte[] value) {
super(); super();
@ -21,10 +20,8 @@ public final class ByteArrayTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public ByteArrayTag(final String name, final byte[] value) { public ByteArrayTag(final String name, final byte[] value) {
super(name); super(name);

View File

@ -10,8 +10,7 @@ public final class ByteTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public ByteTag(final byte value) { public ByteTag(final byte value) {
super(); super();
@ -21,10 +20,8 @@ public final class ByteTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public ByteTag(final String name, final byte value) { public ByteTag(final String name, final byte value) {
super(name); super(name);

View File

@ -15,8 +15,7 @@ public final class CompoundTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public CompoundTag(final Map<String, Tag> value) { public CompoundTag(final Map<String, Tag> value) {
super(); super();
@ -26,10 +25,8 @@ public final class CompoundTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public CompoundTag(final String name, final Map<String, Tag> value) { public CompoundTag(final String name, final Map<String, Tag> value) {
super(name); super(name);
@ -39,8 +36,8 @@ public final class CompoundTag extends Tag {
/** /**
* Returns whether this compound tag contains the given key. * Returns whether this compound tag contains the given key.
* *
* @param key * @param key the given key
* the given key *
* @return true if the tag contains the given key * @return true if the tag contains the given key
*/ */
public boolean containsKey(final String key) { public boolean containsKey(final String key) {
@ -55,8 +52,8 @@ public final class CompoundTag extends Tag {
/** /**
* Return a new compound tag with the given values. * Return a new compound tag with the given values.
* *
* @param value * @param value the value
* the value *
* @return the new compound tag * @return the new compound tag
*/ */
public CompoundTag setValue(final Map<String, Tag> value) { public CompoundTag setValue(final Map<String, Tag> value) {
@ -73,82 +70,62 @@ public final class CompoundTag extends Tag {
} }
/** /**
* Get a byte array named with the given key. * Get a byte array named with the given key. <p/> <p> If the key does not exist or its value is not a byte array
* <p/> * tag, then an empty byte array will be returned. </p>
* <p> *
* If the key does not exist or its value is not a byte array tag, then an * @param key the key
* empty byte array will be returned.
* </p>
* *
* @param key
* the key
* @return a byte array * @return a byte array
*/ */
public byte[] getByteArray(final String key) { public byte[] getByteArray(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof ByteArrayTag) { if (tag instanceof ByteArrayTag) {
return ((ByteArrayTag) tag).getValue(); return ((ByteArrayTag) tag).getValue();
} } else {
else {
return new byte[0]; return new byte[0];
} }
} }
/** /**
* Get a byte named with the given key. * Get a byte named with the given key. <p/> <p> If the key does not exist or its value is not a byte tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a byte tag, then {@code 0} * @param key the key
* will be returned.
* </p>
* *
* @param key
* the key
* @return a byte * @return a byte
*/ */
public byte getByte(final String key) { public byte getByte(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else {
else {
return (byte) 0; return (byte) 0;
} }
} }
/** /**
* Get a double named with the given key. * Get a double named with the given key. <p/> <p> If the key does not exist or its value is not a double tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a double tag, then * @param key the key
* {@code 0} will be returned.
* </p>
* *
* @param key
* the key
* @return a double * @return a double
*/ */
public double getDouble(final String key) { public double getDouble(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof DoubleTag) { if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue(); return ((DoubleTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a double named with the given key, even if it's another * Get a double named with the given key, even if it's another type of number. <p/> <p> If the key does not exist or
* type of number. * its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param key the key
* If the key does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param key
* the key
* @return a double * @return a double
*/ */
public double asDouble(final String key) { public double asDouble(final String key) {
@ -156,109 +133,83 @@ public final class CompoundTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue(); return ((FloatTag) tag).getValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue(); return ((DoubleTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a float named with the given key. * Get a float named with the given key. <p/> <p> If the key does not exist or its value is not a float tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a float tag, then {@code 0} * @param key the key
* will be returned.
* </p>
* *
* @param key
* the key
* @return a float * @return a float
*/ */
public float getFloat(final String key) { public float getFloat(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof FloatTag) { if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue(); return ((FloatTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a {@code int[]} named with the given key. * Get a {@code int[]} named with the given key. <p/> <p> If the key does not exist or its value is not an int array
* <p/> * tag, then an empty array will be returned. </p>
* <p> *
* If the key does not exist or its value is not an int array tag, then an * @param key the key
* empty array will be returned.
* </p>
* *
* @param key
* the key
* @return an int array * @return an int array
*/ */
public int[] getIntArray(final String key) { public int[] getIntArray(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof IntArrayTag) { if (tag instanceof IntArrayTag) {
return ((IntArrayTag) tag).getValue(); return ((IntArrayTag) tag).getValue();
} } else {
else {
return new int[0]; return new int[0];
} }
} }
/** /**
* Get an int named with the given key. * Get an int named with the given key. <p/> <p> If the key does not exist or its value is not an int tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not an int tag, then {@code 0} * @param key the key
* will be returned.
* </p>
* *
* @param key
* the key
* @return an int * @return an int
*/ */
public int getInt(final String key) { public int getInt(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof IntTag) { if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get an int named with the given key, even if it's another * Get an int named with the given key, even if it's another type of number. <p/> <p> If the key does not exist or
* type of number. * its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param key the key
* If the key does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param key
* the key
* @return an int * @return an int
*/ */
public int asInt(final String key) { public int asInt(final String key) {
@ -266,91 +217,69 @@ public final class CompoundTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue().intValue(); return ((LongTag) tag).getValue().intValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue().intValue(); return ((FloatTag) tag).getValue().intValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue().intValue(); return ((DoubleTag) tag).getValue().intValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a list of tags named with the given key. * Get a list of tags named with the given key. <p/> <p> If the key does not exist or its value is not a list tag,
* <p/> * then an empty list will be returned. </p>
* <p> *
* If the key does not exist or its value is not a list tag, then an empty * @param key the key
* list will be returned.
* </p>
* *
* @param key
* the key
* @return a list of tags * @return a list of tags
*/ */
public List<Tag> getList(final String key) { public List<Tag> getList(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return ((ListTag) tag).getValue(); return ((ListTag) tag).getValue();
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a {@code TagList} named with the given key. * Get a {@code TagList} named with the given key. <p/> <p> If the key does not exist or its value is not a list
* <p/> * tag, then an empty tag list will be returned. </p>
* <p> *
* If the key does not exist or its value is not a list tag, then an empty * @param key the key
* tag list will be returned.
* </p>
* *
* @param key
* the key
* @return a tag list instance * @return a tag list instance
*/ */
public ListTag getListTag(final String key) { public ListTag getListTag(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return (ListTag) tag; return (ListTag) tag;
} } else {
else {
return new ListTag(key, StringTag.class, Collections.<Tag>emptyList()); return new ListTag(key, StringTag.class, Collections.<Tag>emptyList());
} }
} }
/** /**
* Get a list of tags named with the given key. * Get a list of tags named with the given key. <p/> <p> If the key does not exist or its value is not a list tag,
* <p/> * then an empty list will be returned. If the given key references a list but the list of of a different type, then
* <p> * an empty list will also be returned. </p>
* If the key does not exist or its value is not a list tag, then an empty *
* list will be returned. If the given key references a list but the list of * @param key the key
* of a different type, then an empty list will also be returned. * @param listType the class of the contained type
* </p> * @param <T> the type of list
* *
* @param key
* the key
* @param listType
* the class of the contained type
* @param <T>
* the type of list
* @return a list of tags * @return a list of tags
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -360,49 +289,37 @@ public final class CompoundTag extends Tag {
final ListTag listTag = (ListTag) tag; final ListTag listTag = (ListTag) tag;
if (listTag.getType().equals(listType)) { if (listTag.getType().equals(listType)) {
return (List<T>) listTag.getValue(); return (List<T>) listTag.getValue();
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a long named with the given key. * Get a long named with the given key. <p/> <p> If the key does not exist or its value is not a long tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a long tag, then {@code 0} * @param key the key
* will be returned.
* </p>
* *
* @param key
* the key
* @return a long * @return a long
*/ */
public long getLong(final String key) { public long getLong(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof LongTag) { if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else {
else {
return 0L; return 0L;
} }
} }
/** /**
* Get a long named with the given key, even if it's another * Get a long named with the given key, even if it's another type of number. <p/> <p> If the key does not exist or
* type of number. * its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param key the key
* If the key does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param key
* the key
* @return a long * @return a long
*/ */
public long asLong(final String key) { public long asLong(final String key) {
@ -410,72 +327,56 @@ public final class CompoundTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue().longValue(); return ((FloatTag) tag).getValue().longValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue().longValue(); return ((DoubleTag) tag).getValue().longValue();
} } else {
else {
return 0L; return 0L;
} }
} }
/** /**
* Get a short named with the given key. * Get a short named with the given key. <p/> <p> If the key does not exist or its value is not a short tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a short tag, then {@code 0} * @param key the key
* will be returned.
* </p>
* *
* @param key
* the key
* @return a short * @return a short
*/ */
public short getShort(final String key) { public short getShort(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof ShortTag) { if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a string named with the given key. * Get a string named with the given key. <p/> <p> If the key does not exist or its value is not a string tag, then
* <p/> * {@code ""} will be returned. </p>
* <p> *
* If the key does not exist or its value is not a string tag, then * @param key the key
* {@code ""} will be returned.
* </p>
* *
* @param key
* the key
* @return a string * @return a string
*/ */
public String getString(final String key) { public String getString(final String key) {
final Tag tag = this.value.get(key); final Tag tag = this.value.get(key);
if (tag instanceof StringTag) { if (tag instanceof StringTag) {
return ((StringTag) tag).getValue(); return ((StringTag) tag).getValue();
} } else {
else {
return ""; return "";
} }
} }

View File

@ -1,10 +1,10 @@
package com.intellectualcrafters.jnbt; package com.intellectualcrafters.jnbt;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static com.google.common.base.Preconditions.checkNotNull;
/** /**
* Helps create compound tags. * Helps create compound tags.
*/ */
@ -22,8 +22,7 @@ public class CompoundTagBuilder {
/** /**
* Create a new instance and use the given map (which will be modified). * Create a new instance and use the given map (which will be modified).
* *
* @param value * @param value the value
* the value
*/ */
CompoundTagBuilder(final Map<String, Tag> value) { CompoundTagBuilder(final Map<String, Tag> value) {
checkNotNull(value); checkNotNull(value);
@ -42,10 +41,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and tag into the compound tag. * Put the given key and tag into the compound tag.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder put(final String key, final Tag value) { public CompoundTagBuilder put(final String key, final Tag value) {
@ -56,13 +54,11 @@ public class CompoundTagBuilder {
} }
/** /**
* Put the given key and value into the compound tag as a * Put the given key and value into the compound tag as a {@code ByteArrayTag}.
* {@code ByteArrayTag}. *
* @param key they key
* @param value the value
* *
* @param key
* they key
* @param value
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putByteArray(final String key, final byte[] value) { public CompoundTagBuilder putByteArray(final String key, final byte[] value) {
@ -72,10 +68,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code ByteTag}. * Put the given key and value into the compound tag as a {@code ByteTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putByte(final String key, final byte value) { public CompoundTagBuilder putByte(final String key, final byte value) {
@ -85,10 +80,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code DoubleTag}. * Put the given key and value into the compound tag as a {@code DoubleTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putDouble(final String key, final double value) { public CompoundTagBuilder putDouble(final String key, final double value) {
@ -98,10 +92,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code FloatTag}. * Put the given key and value into the compound tag as a {@code FloatTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putFloat(final String key, final float value) { public CompoundTagBuilder putFloat(final String key, final float value) {
@ -109,13 +102,11 @@ public class CompoundTagBuilder {
} }
/** /**
* Put the given key and value into the compound tag as a * Put the given key and value into the compound tag as a {@code IntArrayTag}.
* {@code IntArrayTag}. *
* @param key they key
* @param value the value
* *
* @param key
* they key
* @param value
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putIntArray(final String key, final int[] value) { public CompoundTagBuilder putIntArray(final String key, final int[] value) {
@ -125,10 +116,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as an {@code IntTag}. * Put the given key and value into the compound tag as an {@code IntTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putInt(final String key, final int value) { public CompoundTagBuilder putInt(final String key, final int value) {
@ -138,10 +128,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code LongTag}. * Put the given key and value into the compound tag as a {@code LongTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putLong(final String key, final long value) { public CompoundTagBuilder putLong(final String key, final long value) {
@ -151,10 +140,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code ShortTag}. * Put the given key and value into the compound tag as a {@code ShortTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putShort(final String key, final short value) { public CompoundTagBuilder putShort(final String key, final short value) {
@ -164,10 +152,9 @@ public class CompoundTagBuilder {
/** /**
* Put the given key and value into the compound tag as a {@code StringTag}. * Put the given key and value into the compound tag as a {@code StringTag}.
* *
* @param key * @param key they key
* they key * @param value the value
* @param value *
* the value
* @return this object * @return this object
*/ */
public CompoundTagBuilder putString(final String key, final String value) { public CompoundTagBuilder putString(final String key, final String value) {
@ -177,8 +164,8 @@ public class CompoundTagBuilder {
/** /**
* Put all the entries from the given map into this map. * Put all the entries from the given map into this map.
* *
* @param value * @param value the map of tags
* the map of tags *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putAll(final Map<String, ? extends Tag> value) { public CompoundTagBuilder putAll(final Map<String, ? extends Tag> value) {
@ -201,8 +188,8 @@ public class CompoundTagBuilder {
/** /**
* Build a new compound tag with this builder's entries. * Build a new compound tag with this builder's entries.
* *
* @param name * @param name the name of the tag
* the name of the tag *
* @return the created compound tag * @return the created compound tag
*/ */
public CompoundTag build(final String name) { public CompoundTag build(final String name) {

View File

@ -10,8 +10,7 @@ public final class DoubleTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public DoubleTag(final double value) { public DoubleTag(final double value) {
super(); super();
@ -21,10 +20,8 @@ public final class DoubleTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public DoubleTag(final String name, final double value) { public DoubleTag(final String name, final double value) {
super(name); super(name);

View File

@ -10,8 +10,7 @@ public final class FloatTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public FloatTag(final float value) { public FloatTag(final float value) {
super(); super();
@ -21,10 +20,8 @@ public final class FloatTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public FloatTag(final String name, final float value) { public FloatTag(final String name, final float value) {
super(name); super(name);

View File

@ -12,8 +12,7 @@ public final class IntArrayTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public IntArrayTag(final int[] value) { public IntArrayTag(final int[] value) {
super(); super();
@ -24,10 +23,8 @@ public final class IntArrayTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public IntArrayTag(final String name, final int[] value) { public IntArrayTag(final String name, final int[] value) {
super(name); super(name);

View File

@ -10,8 +10,7 @@ public final class IntTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public IntTag(final int value) { public IntTag(final int value) {
super(); super();
@ -21,10 +20,8 @@ public final class IntTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public IntTag(final String name, final int value) { public IntTag(final String name, final int value) {
super(name); super(name);

View File

@ -1,12 +1,11 @@
package com.intellectualcrafters.jnbt; package com.intellectualcrafters.jnbt;
import static com.google.common.base.Preconditions.checkNotNull; import javax.annotation.Nullable;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkNotNull;
/** /**
* The {@code TAG_List} tag. * The {@code TAG_List} tag.
@ -19,10 +18,8 @@ public final class ListTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param type * @param type the type of tag
* the type of tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public ListTag(final Class<? extends Tag> type, final List<? extends Tag> value) { public ListTag(final Class<? extends Tag> type, final List<? extends Tag> value) {
super(); super();
@ -34,12 +31,9 @@ public final class ListTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param type the type of tag
* @param type * @param value the value of the tag
* the type of tag
* @param value
* the value of the tag
*/ */
public ListTag(final String name, final Class<? extends Tag> type, final List<? extends Tag> value) { public ListTag(final String name, final Class<? extends Tag> type, final List<? extends Tag> value) {
super(name); super(name);
@ -65,8 +59,8 @@ public final class ListTag extends Tag {
/** /**
* Create a new list tag with this tag's name and type. * Create a new list tag with this tag's name and type.
* *
* @param list * @param list the new list
* the new list *
* @return a new list tag * @return a new list tag
*/ */
public ListTag setValue(final List<Tag> list) { public ListTag setValue(final List<Tag> list) {
@ -76,97 +70,76 @@ public final class ListTag extends Tag {
/** /**
* Get the tag if it exists at the given index. * Get the tag if it exists at the given index.
* *
* @param index * @param index the index
* the index *
* @return the tag or null * @return the tag or null
*/ */
@Nullable @Nullable
public Tag getIfExists(final int index) { public Tag getIfExists(final int index) {
try { try {
return this.value.get(index); return this.value.get(index);
} } catch (final NoSuchElementException e) {
catch (final NoSuchElementException e) {
return null; return null;
} }
} }
/** /**
* Get a byte array named with the given index. * Get a byte array named with the given index. <p/> <p> If the index does not exist or its value is not a byte
* <p/> * array tag, then an empty byte array will be returned. </p>
* <p> *
* If the index does not exist or its value is not a byte array tag, then an * @param index the index
* empty byte array will be returned.
* </p>
* *
* @param index
* the index
* @return a byte array * @return a byte array
*/ */
public byte[] getByteArray(final int index) { public byte[] getByteArray(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof ByteArrayTag) { if (tag instanceof ByteArrayTag) {
return ((ByteArrayTag) tag).getValue(); return ((ByteArrayTag) tag).getValue();
} } else {
else {
return new byte[0]; return new byte[0];
} }
} }
/** /**
* Get a byte named with the given index. * Get a byte named with the given index. <p/> <p> If the index does not exist or its value is not a byte tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a byte tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return a byte * @return a byte
*/ */
public byte getByte(final int index) { public byte getByte(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else {
else {
return (byte) 0; return (byte) 0;
} }
} }
/** /**
* Get a double named with the given index. * Get a double named with the given index. <p/> <p> If the index does not exist or its value is not a double tag,
* <p/> * then {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a double tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return a double * @return a double
*/ */
public double getDouble(final int index) { public double getDouble(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof DoubleTag) { if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue(); return ((DoubleTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a double named with the given index, even if it's another * Get a double named with the given index, even if it's another type of number. <p/> <p> If the index does not
* type of number. * exist or its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param index the index
* If the index does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param index
* the index
* @return a double * @return a double
*/ */
public double asDouble(final int index) { public double asDouble(final int index) {
@ -174,109 +147,83 @@ public final class ListTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue(); return ((FloatTag) tag).getValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue(); return ((DoubleTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a float named with the given index. * Get a float named with the given index. <p/> <p> If the index does not exist or its value is not a float tag,
* <p/> * then {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a float tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return a float * @return a float
*/ */
public float getFloat(final int index) { public float getFloat(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof FloatTag) { if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue(); return ((FloatTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a {@code int[]} named with the given index. * Get a {@code int[]} named with the given index. <p/> <p> If the index does not exist or its value is not an int
* <p/> * array tag, then an empty array will be returned. </p>
* <p> *
* If the index does not exist or its value is not an int array tag, then an * @param index the index
* empty array will be returned.
* </p>
* *
* @param index
* the index
* @return an int array * @return an int array
*/ */
public int[] getIntArray(final int index) { public int[] getIntArray(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof IntArrayTag) { if (tag instanceof IntArrayTag) {
return ((IntArrayTag) tag).getValue(); return ((IntArrayTag) tag).getValue();
} } else {
else {
return new int[0]; return new int[0];
} }
} }
/** /**
* Get an int named with the given index. * Get an int named with the given index. <p/> <p> If the index does not exist or its value is not an int tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not an int tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return an int * @return an int
*/ */
public int getInt(final int index) { public int getInt(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof IntTag) { if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get an int named with the given index, even if it's another * Get an int named with the given index, even if it's another type of number. <p/> <p> If the index does not exist
* type of number. * or its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param index the index
* If the index does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param index
* the index
* @return an int * @return an int
*/ */
public int asInt(final int index) { public int asInt(final int index) {
@ -284,91 +231,69 @@ public final class ListTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue().intValue(); return ((LongTag) tag).getValue().intValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue().intValue(); return ((FloatTag) tag).getValue().intValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue().intValue(); return ((DoubleTag) tag).getValue().intValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a list of tags named with the given index. * Get a list of tags named with the given index. <p/> <p> If the index does not exist or its value is not a list
* <p/> * tag, then an empty list will be returned. </p>
* <p> *
* If the index does not exist or its value is not a list tag, then an empty * @param index the index
* list will be returned.
* </p>
* *
* @param index
* the index
* @return a list of tags * @return a list of tags
*/ */
public List<Tag> getList(final int index) { public List<Tag> getList(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return ((ListTag) tag).getValue(); return ((ListTag) tag).getValue();
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a {@code TagList} named with the given index. * Get a {@code TagList} named with the given index. <p/> <p> If the index does not exist or its value is not a list
* <p/> * tag, then an empty tag list will be returned. </p>
* <p> *
* If the index does not exist or its value is not a list tag, then an empty * @param index the index
* tag list will be returned.
* </p>
* *
* @param index
* the index
* @return a tag list instance * @return a tag list instance
*/ */
public ListTag getListTag(final int index) { public ListTag getListTag(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return (ListTag) tag; return (ListTag) tag;
} } else {
else {
return new ListTag(StringTag.class, Collections.<Tag>emptyList()); return new ListTag(StringTag.class, Collections.<Tag>emptyList());
} }
} }
/** /**
* Get a list of tags named with the given index. * Get a list of tags named with the given index. <p/> <p> If the index does not exist or its value is not a list
* <p/> * tag, then an empty list will be returned. If the given index references a list but the list of of a different
* <p> * type, then an empty list will also be returned. </p>
* If the index does not exist or its value is not a list tag, then an empty *
* list will be returned. If the given index references a list but the list * @param index the index
* of of a different type, then an empty list will also be returned. * @param listType the class of the contained type
* </p> * @param <T> the NBT type
* *
* @param index
* the index
* @param listType
* the class of the contained type
* @param <T>
* the NBT type
* @return a list of tags * @return a list of tags
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -378,49 +303,37 @@ public final class ListTag extends Tag {
final ListTag listTag = (ListTag) tag; final ListTag listTag = (ListTag) tag;
if (listTag.getType().equals(listType)) { if (listTag.getType().equals(listType)) {
return (List<T>) listTag.getValue(); return (List<T>) listTag.getValue();
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} } else {
else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a long named with the given index. * Get a long named with the given index. <p/> <p> If the index does not exist or its value is not a long tag, then
* <p/> * {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a long tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return a long * @return a long
*/ */
public long getLong(final int index) { public long getLong(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof LongTag) { if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else {
else {
return 0L; return 0L;
} }
} }
/** /**
* Get a long named with the given index, even if it's another * Get a long named with the given index, even if it's another type of number. <p/> <p> If the index does not exist
* type of number. * or its value is not a number, then {@code 0} will be returned. </p>
* <p/> *
* <p> * @param index the index
* If the index does not exist or its value is not a number, then {@code 0}
* will be returned.
* </p>
* *
* @param index
* the index
* @return a long * @return a long
*/ */
public long asLong(final int index) { public long asLong(final int index) {
@ -428,72 +341,56 @@ public final class ListTag extends Tag {
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} } else if (tag instanceof ShortTag) {
else if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else if (tag instanceof IntTag) {
else if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} } else if (tag instanceof LongTag) {
else if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} } else if (tag instanceof FloatTag) {
else if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue().longValue(); return ((FloatTag) tag).getValue().longValue();
} } else if (tag instanceof DoubleTag) {
else if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue().longValue(); return ((DoubleTag) tag).getValue().longValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a short named with the given index. * Get a short named with the given index. <p/> <p> If the index does not exist or its value is not a short tag,
* <p/> * then {@code 0} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a short tag, then * @param index the index
* {@code 0} will be returned.
* </p>
* *
* @param index
* the index
* @return a short * @return a short
*/ */
public short getShort(final int index) { public short getShort(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof ShortTag) { if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} } else {
else {
return 0; return 0;
} }
} }
/** /**
* Get a string named with the given index. * Get a string named with the given index. <p/> <p> If the index does not exist or its value is not a string tag,
* <p/> * then {@code ""} will be returned. </p>
* <p> *
* If the index does not exist or its value is not a string tag, then * @param index the index
* {@code ""} will be returned.
* </p>
* *
* @param index
* the index
* @return a string * @return a string
*/ */
public String getString(final int index) { public String getString(final int index) {
final Tag tag = getIfExists(index); final Tag tag = getIfExists(index);
if (tag instanceof StringTag) { if (tag instanceof StringTag) {
return ((StringTag) tag).getValue(); return ((StringTag) tag).getValue();
} } else {
else {
return ""; return "";
} }
} }

View File

@ -1,12 +1,12 @@
package com.intellectualcrafters.jnbt; package com.intellectualcrafters.jnbt;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import static com.google.common.base.Preconditions.checkNotNull;
/** /**
* Helps create list tags. * Helps create list tags.
*/ */
@ -18,8 +18,7 @@ public class ListTagBuilder {
/** /**
* Create a new instance. * Create a new instance.
* *
* @param type * @param type of tag contained in this list
* of tag contained in this list
*/ */
ListTagBuilder(final Class<? extends Tag> type) { ListTagBuilder(final Class<? extends Tag> type) {
checkNotNull(type); checkNotNull(type);
@ -64,8 +63,8 @@ public class ListTagBuilder {
/** /**
* Add the given tag. * Add the given tag.
* *
* @param value * @param value the tag
* the tag *
* @return this object * @return this object
*/ */
public ListTagBuilder add(final Tag value) { public ListTagBuilder add(final Tag value) {
@ -80,8 +79,8 @@ public class ListTagBuilder {
/** /**
* Add all the tags in the given list. * Add all the tags in the given list.
* *
* @param value * @param value a list of tags
* a list of tags *
* @return this object * @return this object
*/ */
public ListTagBuilder addAll(final Collection<? extends Tag> value) { public ListTagBuilder addAll(final Collection<? extends Tag> value) {
@ -104,8 +103,8 @@ public class ListTagBuilder {
/** /**
* Build a new list tag with this builder's entries. * Build a new list tag with this builder's entries.
* *
* @param name * @param name the name of the tag
* the name of the tag *
* @return the created list tag * @return the created list tag
*/ */
public ListTag build(final String name) { public ListTag build(final String name) {

View File

@ -10,8 +10,7 @@ public final class LongTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public LongTag(final long value) { public LongTag(final long value) {
super(); super();
@ -21,10 +20,8 @@ public final class LongTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public LongTag(final String name, final long value) { public LongTag(final String name, final long value) {
super(name); super(name);

View File

@ -42,11 +42,11 @@ public final class NBTConstants {
/** /**
* Convert a type ID to its corresponding {@link Tag} class. * Convert a type ID to its corresponding {@link Tag} class.
* *
* @param id * @param id type ID
* type ID *
* @return tag class * @return tag class
* @throws IllegalArgumentException *
* thrown if the tag ID is not valid * @throws IllegalArgumentException thrown if the tag ID is not valid
*/ */
public static Class<? extends Tag> getClassFromType(final int id) { public static Class<? extends Tag> getClassFromType(final int id) {
switch (id) { switch (id) {

View File

@ -10,28 +10,20 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* This class reads <strong>NBT</strong>, or <strong>Named Binary Tag</strong> * This class reads <strong>NBT</strong>, or <strong>Named Binary Tag</strong> streams, and produces an object graph of
* streams, and produces an object graph of subclasses of the {@code Tag} * subclasses of the {@code Tag} object. <p/> <p> The NBT format was created by Markus Persson, and the specification
* object. * may be found at <a href="http://www.minecraft.net/docs/NBT.txt"> http://www.minecraft.net/docs/NBT.txt</a>. </p>
* <p/>
* <p>
* The NBT format was created by Markus Persson, and the specification may be
* found at <a href="http://www.minecraft.net/docs/NBT.txt">
* http://www.minecraft.net/docs/NBT.txt</a>.
* </p>
*/ */
public final class NBTInputStream implements Closeable { public final class NBTInputStream implements Closeable {
private final DataInputStream is; private final DataInputStream is;
/** /**
* Creates a new {@code NBTInputStream}, which will source its data * Creates a new {@code NBTInputStream}, which will source its data from the specified input stream.
* from the specified input stream.
* *
* @param is * @param is the input stream
* the input stream *
* @throws IOException * @throws IOException if an I/O error occurs
* if an I/O error occurs
*/ */
public NBTInputStream(final InputStream is) throws IOException { public NBTInputStream(final InputStream is) throws IOException {
this.is = new DataInputStream(is); this.is = new DataInputStream(is);
@ -41,8 +33,8 @@ public final class NBTInputStream implements Closeable {
* Reads an NBT tag from the stream. * Reads an NBT tag from the stream.
* *
* @return The tag that was read. * @return The tag that was read.
* @throws IOException *
* if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
public Tag readTag() throws IOException { public Tag readTag() throws IOException {
return readTag(0); return readTag(0);
@ -51,11 +43,11 @@ public final class NBTInputStream implements Closeable {
/** /**
* Reads an NBT from the stream. * Reads an NBT from the stream.
* *
* @param depth * @param depth the depth of this tag
* the depth of this tag *
* @return The tag that was read. * @return The tag that was read.
* @throws IOException *
* if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
private Tag readTag(final int depth) throws IOException { private Tag readTag(final int depth) throws IOException {
final int type = this.is.readByte() & 0xFF; final int type = this.is.readByte() & 0xFF;
@ -66,8 +58,7 @@ public final class NBTInputStream implements Closeable {
final byte[] nameBytes = new byte[nameLength]; final byte[] nameBytes = new byte[nameLength];
this.is.readFully(nameBytes); this.is.readFully(nameBytes);
name = new String(nameBytes, NBTConstants.CHARSET); name = new String(nameBytes, NBTConstants.CHARSET);
} } else {
else {
name = ""; name = "";
} }
@ -77,23 +68,20 @@ public final class NBTInputStream implements Closeable {
/** /**
* Reads the payload of a tag, given the name and type. * Reads the payload of a tag, given the name and type.
* *
* @param type * @param type the type
* the type * @param name the name
* @param name * @param depth the depth
* the name *
* @param depth
* the depth
* @return the tag * @return the tag
* @throws IOException *
* if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
private Tag readTagPayload(final int type, final String name, final int depth) throws IOException { private Tag readTagPayload(final int type, final String name, final int depth) throws IOException {
switch (type) { switch (type) {
case NBTConstants.TYPE_END: case NBTConstants.TYPE_END:
if (depth == 0) { if (depth == 0) {
throw new IOException("TAG_End found without a TAG_Compound/TAG_List tag preceding it."); throw new IOException("TAG_End found without a TAG_Compound/TAG_List tag preceding it.");
} } else {
else {
return new EndTag(); return new EndTag();
} }
case NBTConstants.TYPE_BYTE: case NBTConstants.TYPE_BYTE:
@ -138,8 +126,7 @@ public final class NBTInputStream implements Closeable {
final Tag tag = readTag(depth + 1); final Tag tag = readTag(depth + 1);
if (tag instanceof EndTag) { if (tag instanceof EndTag) {
break; break;
} } else {
else {
tagMap.put(tag.getName(), tag); tagMap.put(tag.getName(), tag);
} }
} }

View File

@ -28,15 +28,9 @@ import java.io.OutputStream;
import java.util.List; import java.util.List;
/** /**
* <p> * <p> This class writes <strong>NBT</strong>, or <strong>Named Binary Tag</strong> <code>Tag</code> objects to an
* This class writes <strong>NBT</strong>, or <strong>Named Binary Tag</strong> * underlying <code>OutputStream</code>. </p> <p/> <p> The NBT format was created by Markus Persson, and the
* <code>Tag</code> objects to an underlying <code>OutputStream</code>. * specification may be found at <a href="http://www.minecraft.net/docs/NBT.txt"> http://www.minecraft.net/docs/NBT.txt</a>.
* </p>
* <p/>
* <p>
* The NBT format was created by Markus Persson, and the specification may be
* found at <a href="http://www.minecraft.net/docs/NBT.txt">
* http://www.minecraft.net/docs/NBT.txt</a>.
* </p> * </p>
* *
* @author Graham Edgecombe * @author Graham Edgecombe
@ -49,13 +43,11 @@ public final class NBTOutputStream implements Closeable {
private final DataOutputStream os; private final DataOutputStream os;
/** /**
* Creates a new <code>NBTOutputStream</code>, which will write data to the * Creates a new <code>NBTOutputStream</code>, which will write data to the specified underlying output stream.
* specified underlying output stream.
* *
* @param os * @param os The output stream.
* The output stream. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
public NBTOutputStream(final OutputStream os) throws IOException { public NBTOutputStream(final OutputStream os) throws IOException {
this.os = new DataOutputStream(os); this.os = new DataOutputStream(os);
@ -64,10 +56,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a tag. * Writes a tag.
* *
* @param tag * @param tag The tag to write.
* The tag to write. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
public void writeTag(final Tag tag) throws IOException { public void writeTag(final Tag tag) throws IOException {
final int type = NBTUtils.getTypeCode(tag.getClass()); final int type = NBTUtils.getTypeCode(tag.getClass());
@ -88,10 +79,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes tag payload. * Writes tag payload.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeTagPayload(final Tag tag) throws IOException { private void writeTagPayload(final Tag tag) throws IOException {
final int type = NBTUtils.getTypeCode(tag.getClass()); final int type = NBTUtils.getTypeCode(tag.getClass());
@ -140,10 +130,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Byte</code> tag. * Writes a <code>TAG_Byte</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeByteTagPayload(final ByteTag tag) throws IOException { private void writeByteTagPayload(final ByteTag tag) throws IOException {
this.os.writeByte(tag.getValue()); this.os.writeByte(tag.getValue());
@ -152,10 +141,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Byte_Array</code> tag. * Writes a <code>TAG_Byte_Array</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeByteArrayTagPayload(final ByteArrayTag tag) throws IOException { private void writeByteArrayTagPayload(final ByteArrayTag tag) throws IOException {
final byte[] bytes = tag.getValue(); final byte[] bytes = tag.getValue();
@ -166,10 +154,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Compound</code> tag. * Writes a <code>TAG_Compound</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeCompoundTagPayload(final CompoundTag tag) throws IOException { private void writeCompoundTagPayload(final CompoundTag tag) throws IOException {
for (final Tag childTag : tag.getValue().values()) { for (final Tag childTag : tag.getValue().values()) {
@ -181,10 +168,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_List</code> tag. * Writes a <code>TAG_List</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeListTagPayload(final ListTag tag) throws IOException { private void writeListTagPayload(final ListTag tag) throws IOException {
final Class<? extends Tag> clazz = tag.getType(); final Class<? extends Tag> clazz = tag.getType();
@ -201,10 +187,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_String</code> tag. * Writes a <code>TAG_String</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeStringTagPayload(final StringTag tag) throws IOException { private void writeStringTagPayload(final StringTag tag) throws IOException {
final byte[] bytes = tag.getValue().getBytes(NBTConstants.CHARSET); final byte[] bytes = tag.getValue().getBytes(NBTConstants.CHARSET);
@ -215,10 +200,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Double</code> tag. * Writes a <code>TAG_Double</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeDoubleTagPayload(final DoubleTag tag) throws IOException { private void writeDoubleTagPayload(final DoubleTag tag) throws IOException {
this.os.writeDouble(tag.getValue()); this.os.writeDouble(tag.getValue());
@ -227,10 +211,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Float</code> tag. * Writes a <code>TAG_Float</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeFloatTagPayload(final FloatTag tag) throws IOException { private void writeFloatTagPayload(final FloatTag tag) throws IOException {
this.os.writeFloat(tag.getValue()); this.os.writeFloat(tag.getValue());
@ -239,10 +222,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Long</code> tag. * Writes a <code>TAG_Long</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeLongTagPayload(final LongTag tag) throws IOException { private void writeLongTagPayload(final LongTag tag) throws IOException {
this.os.writeLong(tag.getValue()); this.os.writeLong(tag.getValue());
@ -251,10 +233,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Int</code> tag. * Writes a <code>TAG_Int</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeIntTagPayload(final IntTag tag) throws IOException { private void writeIntTagPayload(final IntTag tag) throws IOException {
this.os.writeInt(tag.getValue()); this.os.writeInt(tag.getValue());
@ -263,10 +244,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Short</code> tag. * Writes a <code>TAG_Short</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeShortTagPayload(final ShortTag tag) throws IOException { private void writeShortTagPayload(final ShortTag tag) throws IOException {
this.os.writeShort(tag.getValue()); this.os.writeShort(tag.getValue());
@ -275,10 +255,9 @@ public final class NBTOutputStream implements Closeable {
/** /**
* Writes a <code>TAG_Empty</code> tag. * Writes a <code>TAG_Empty</code> tag.
* *
* @param tag * @param tag The tag.
* The tag. *
* @throws IOException * @throws IOException if an I/O error occurs.
* if an I/O error occurs.
*/ */
private void writeEndTagPayload(final EndTag tag) { private void writeEndTagPayload(final EndTag tag) {
/* empty */ /* empty */

View File

@ -16,48 +16,36 @@ public final class NBTUtils {
/** /**
* Gets the type name of a tag. * Gets the type name of a tag.
* *
* @param clazz * @param clazz the tag class
* the tag class *
* @return The type name. * @return The type name.
*/ */
public static String getTypeName(final Class<? extends Tag> clazz) { public static String getTypeName(final Class<? extends Tag> clazz) {
if (clazz.equals(ByteArrayTag.class)) { if (clazz.equals(ByteArrayTag.class)) {
return "TAG_Byte_Array"; return "TAG_Byte_Array";
} } else if (clazz.equals(ByteTag.class)) {
else if (clazz.equals(ByteTag.class)) {
return "TAG_Byte"; return "TAG_Byte";
} } else if (clazz.equals(CompoundTag.class)) {
else if (clazz.equals(CompoundTag.class)) {
return "TAG_Compound"; return "TAG_Compound";
} } else if (clazz.equals(DoubleTag.class)) {
else if (clazz.equals(DoubleTag.class)) {
return "TAG_Double"; return "TAG_Double";
} } else if (clazz.equals(EndTag.class)) {
else if (clazz.equals(EndTag.class)) {
return "TAG_End"; return "TAG_End";
} } else if (clazz.equals(FloatTag.class)) {
else if (clazz.equals(FloatTag.class)) {
return "TAG_Float"; return "TAG_Float";
} } else if (clazz.equals(IntTag.class)) {
else if (clazz.equals(IntTag.class)) {
return "TAG_Int"; return "TAG_Int";
} } else if (clazz.equals(ListTag.class)) {
else if (clazz.equals(ListTag.class)) {
return "TAG_List"; return "TAG_List";
} } else if (clazz.equals(LongTag.class)) {
else if (clazz.equals(LongTag.class)) {
return "TAG_Long"; return "TAG_Long";
} } else if (clazz.equals(ShortTag.class)) {
else if (clazz.equals(ShortTag.class)) {
return "TAG_Short"; return "TAG_Short";
} } else if (clazz.equals(StringTag.class)) {
else if (clazz.equals(StringTag.class)) {
return "TAG_String"; return "TAG_String";
} } else if (clazz.equals(IntArrayTag.class)) {
else if (clazz.equals(IntArrayTag.class)) {
return "TAG_Int_Array"; return "TAG_Int_Array";
} } else {
else {
throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ")."); throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ").");
} }
} }
@ -65,50 +53,38 @@ public final class NBTUtils {
/** /**
* Gets the type code of a tag class. * Gets the type code of a tag class.
* *
* @param clazz * @param clazz the tag class
* the tag class *
* @return The type code. * @return The type code.
* @throws IllegalArgumentException *
* if the tag class is invalid. * @throws IllegalArgumentException if the tag class is invalid.
*/ */
public static int getTypeCode(final Class<? extends Tag> clazz) { public static int getTypeCode(final Class<? extends Tag> clazz) {
if (clazz.equals(ByteArrayTag.class)) { if (clazz.equals(ByteArrayTag.class)) {
return NBTConstants.TYPE_BYTE_ARRAY; return NBTConstants.TYPE_BYTE_ARRAY;
} } else if (clazz.equals(ByteTag.class)) {
else if (clazz.equals(ByteTag.class)) {
return NBTConstants.TYPE_BYTE; return NBTConstants.TYPE_BYTE;
} } else if (clazz.equals(CompoundTag.class)) {
else if (clazz.equals(CompoundTag.class)) {
return NBTConstants.TYPE_COMPOUND; return NBTConstants.TYPE_COMPOUND;
} } else if (clazz.equals(DoubleTag.class)) {
else if (clazz.equals(DoubleTag.class)) {
return NBTConstants.TYPE_DOUBLE; return NBTConstants.TYPE_DOUBLE;
} } else if (clazz.equals(EndTag.class)) {
else if (clazz.equals(EndTag.class)) {
return NBTConstants.TYPE_END; return NBTConstants.TYPE_END;
} } else if (clazz.equals(FloatTag.class)) {
else if (clazz.equals(FloatTag.class)) {
return NBTConstants.TYPE_FLOAT; return NBTConstants.TYPE_FLOAT;
} } else if (clazz.equals(IntTag.class)) {
else if (clazz.equals(IntTag.class)) {
return NBTConstants.TYPE_INT; return NBTConstants.TYPE_INT;
} } else if (clazz.equals(ListTag.class)) {
else if (clazz.equals(ListTag.class)) {
return NBTConstants.TYPE_LIST; return NBTConstants.TYPE_LIST;
} } else if (clazz.equals(LongTag.class)) {
else if (clazz.equals(LongTag.class)) {
return NBTConstants.TYPE_LONG; return NBTConstants.TYPE_LONG;
} } else if (clazz.equals(ShortTag.class)) {
else if (clazz.equals(ShortTag.class)) {
return NBTConstants.TYPE_SHORT; return NBTConstants.TYPE_SHORT;
} } else if (clazz.equals(StringTag.class)) {
else if (clazz.equals(StringTag.class)) {
return NBTConstants.TYPE_STRING; return NBTConstants.TYPE_STRING;
} } else if (clazz.equals(IntArrayTag.class)) {
else if (clazz.equals(IntArrayTag.class)) {
return NBTConstants.TYPE_INT_ARRAY; return NBTConstants.TYPE_INT_ARRAY;
} } else {
else {
throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ")."); throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ").");
} }
} }
@ -116,11 +92,11 @@ public final class NBTUtils {
/** /**
* Gets the class of a type of tag. * Gets the class of a type of tag.
* *
* @param type * @param type the type
* the type *
* @return The class. * @return The class.
* @throws IllegalArgumentException *
* if the tag type is invalid. * @throws IllegalArgumentException if the tag type is invalid.
*/ */
public static Class<? extends Tag> getTypeClass(final int type) { public static Class<? extends Tag> getTypeClass(final int type) {
switch (type) { switch (type) {
@ -156,12 +132,10 @@ public final class NBTUtils {
/** /**
* Get child tag of a NBT structure. * Get child tag of a NBT structure.
* *
* @param items * @param items the map to read from
* the map to read from * @param key the key to look for
* @param key * @param expected the expected NBT class type
* the key to look for *
* @param expected
* the expected NBT class type
* @return child tag * @return child tag
*/ */
public static <T extends Tag> T getChildTag(final Map<String, Tag> items, final String key, final Class<T> expected) throws IllegalArgumentException { public static <T extends Tag> T getChildTag(final Map<String, Tag> items, final String key, final Class<T> expected) throws IllegalArgumentException {

View File

@ -31,8 +31,7 @@ public final class ShortTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public ShortTag(final short value) { public ShortTag(final short value) {
super(); super();
@ -42,10 +41,8 @@ public final class ShortTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public ShortTag(final String name, final short value) { public ShortTag(final String name, final short value) {
super(name); super(name);

View File

@ -12,8 +12,7 @@ public final class StringTag extends Tag {
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value * @param value the value of the tag
* the value of the tag
*/ */
public StringTag(final String value) { public StringTag(final String value) {
super(); super();
@ -24,10 +23,8 @@ public final class StringTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name * @param name the name of the tag
* the name of the tag * @param value the value of the tag
* @param value
* the value of the tag
*/ */
public StringTag(final String name, final String value) { public StringTag(final String name, final String value) {
super(name); super(name);

View File

@ -38,8 +38,7 @@ public abstract class Tag {
/** /**
* Creates the tag with the specified name. * Creates the tag with the specified name.
* *
* @param name * @param name the name
* the name
*/ */
Tag(String name) { Tag(String name) {
if (name == null) { if (name == null) {

View File

@ -1,21 +1,18 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* This provides static methods to convert comma delimited text into a * This provides static methods to convert comma delimited text into a JSONArray, and to covert a JSONArray into comma
* JSONArray, and to covert a JSONArray into comma delimited text. Comma * delimited text. Comma delimited text is a very popular format for data interchange. It is understood by most
* delimited text is a very popular format for data interchange. It is * database, spreadsheet, and organizer programs.
* understood by most database, spreadsheet, and organizer programs.
* <p/> * <p/>
* Each row of text represents a row in a table or a data record. Each row ends * Each row of text represents a row in a table or a data record. Each row ends with a NEWLINE character. Each row
* with a NEWLINE character. Each row contains one or more values. Values are * contains one or more values. Values are separated by commas. A value can contain any character except for comma,
* separated by commas. A value can contain any character except for comma,
* unless is is wrapped in single quotes or double quotes. * unless is is wrapped in single quotes or double quotes.
* <p/> * <p/>
* The first row usually contains the names of the columns. * The first row usually contains the names of the columns.
* <p/> * <p/>
* A comma delimited list can be converted into a JSONArray of JSONObjects. The * A comma delimited list can be converted into a JSONArray of JSONObjects. The names for the elements in the
* names for the elements in the JSONObjects can be taken from the names in the * JSONObjects can be taken from the names in the first row.
* first row.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -23,14 +20,13 @@ package com.intellectualcrafters.json;
public class CDL { public class CDL {
/** /**
* Get the next value. The value can be wrapped in quotes. The value can * Get the next value. The value can be wrapped in quotes. The value can be empty.
* be empty. *
* @param x A JSONTokener of the source text.
* *
* @param x
* A JSONTokener of the source text.
* @return The value string, or null if empty. * @return The value string, or null if empty.
* @throws JSONException *
* if the quoted string is badly formed. * @throws JSONException if the quoted string is badly formed.
*/ */
private static String getValue(final JSONTokener x) throws JSONException { private static String getValue(final JSONTokener x) throws JSONException {
char c; char c;
@ -38,8 +34,7 @@ public class CDL {
StringBuffer sb; StringBuffer sb;
do { do {
c = x.next(); c = x.next();
} } while ((c == ' ') || (c == '\t'));
while ((c == ' ') || (c == '\t'));
switch (c) { switch (c) {
case 0: case 0:
return null; return null;
@ -70,9 +65,10 @@ public class CDL {
/** /**
* Produce a JSONArray of strings from a row of comma delimited values. * Produce a JSONArray of strings from a row of comma delimited values.
* *
* @param x * @param x A JSONTokener of the source text.
* A JSONTokener of the source text. *
* @return A JSONArray of strings. * @return A JSONArray of strings.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray rowToJSONArray(final JSONTokener x) throws JSONException { public static JSONArray rowToJSONArray(final JSONTokener x) throws JSONException {
@ -100,17 +96,15 @@ public class CDL {
} }
/** /**
* Produce a JSONObject from a row of comma delimited text, using a * Produce a JSONObject from a row of comma delimited text, using a parallel JSONArray of strings to provides the
* parallel JSONArray of strings to provides the names of the elements. * names of the elements.
*
* @param names A JSONArray of names. This is commonly obtained from the first row of a comma delimited text file
* using the rowToJSONArray method.
* @param x A JSONTokener of the source text.
* *
* @param names
* A JSONArray of names. This is commonly obtained from the
* first row of a comma delimited text file using the
* rowToJSONArray
* method.
* @param x
* A JSONTokener of the source text.
* @return A JSONObject combining the names and values. * @return A JSONObject combining the names and values.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject rowToJSONObject(final JSONArray names, final JSONTokener x) throws JSONException { public static JSONObject rowToJSONObject(final JSONArray names, final JSONTokener x) throws JSONException {
@ -119,12 +113,11 @@ public class CDL {
} }
/** /**
* Produce a comma delimited text row from a JSONArray. Values containing * Produce a comma delimited text row from a JSONArray. Values containing the comma character will be quoted.
* the comma character will be quoted. Troublesome characters may be * Troublesome characters may be removed.
* removed. *
* @param ja A JSONArray of strings.
* *
* @param ja
* A JSONArray of strings.
* @return A string ending in NEWLINE. * @return A string ending in NEWLINE.
*/ */
public static String rowToString(final JSONArray ja) { public static String rowToString(final JSONArray ja) {
@ -146,8 +139,7 @@ public class CDL {
} }
} }
sb.append('"'); sb.append('"');
} } else {
else {
sb.append(string); sb.append(string);
} }
} }
@ -157,12 +149,12 @@ public class CDL {
} }
/** /**
* Produce a JSONArray of JSONObjects from a comma delimited text string, * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as a source of names.
* using the first row as a source of names. *
* @param string The comma delimited text.
* *
* @param string
* The comma delimited text.
* @return A JSONArray of JSONObjects. * @return A JSONArray of JSONObjects.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final String string) throws JSONException { public static JSONArray toJSONArray(final String string) throws JSONException {
@ -170,12 +162,12 @@ public class CDL {
} }
/** /**
* Produce a JSONArray of JSONObjects from a comma delimited text string, * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as a source of names.
* using the first row as a source of names. *
* @param x The JSONTokener containing the comma delimited text.
* *
* @param x
* The JSONTokener containing the comma delimited text.
* @return A JSONArray of JSONObjects. * @return A JSONArray of JSONObjects.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final JSONTokener x) throws JSONException { public static JSONArray toJSONArray(final JSONTokener x) throws JSONException {
@ -183,14 +175,14 @@ public class CDL {
} }
/** /**
* Produce a JSONArray of JSONObjects from a comma delimited text string * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied JSONArray as the source of
* using a supplied JSONArray as the source of element names. * element names.
*
* @param names A JSONArray of strings.
* @param string The comma delimited text.
* *
* @param names
* A JSONArray of strings.
* @param string
* The comma delimited text.
* @return A JSONArray of JSONObjects. * @return A JSONArray of JSONObjects.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final JSONArray names, final String string) throws JSONException { public static JSONArray toJSONArray(final JSONArray names, final String string) throws JSONException {
@ -198,14 +190,14 @@ public class CDL {
} }
/** /**
* Produce a JSONArray of JSONObjects from a comma delimited text string * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied JSONArray as the source of
* using a supplied JSONArray as the source of element names. * element names.
*
* @param names A JSONArray of strings.
* @param x A JSONTokener of the source text.
* *
* @param names
* A JSONArray of strings.
* @param x
* A JSONTokener of the source text.
* @return A JSONArray of JSONObjects. * @return A JSONArray of JSONObjects.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final JSONArray names, final JSONTokener x) throws JSONException { public static JSONArray toJSONArray(final JSONArray names, final JSONTokener x) throws JSONException {
@ -227,13 +219,13 @@ public class CDL {
} }
/** /**
* Produce a comma delimited text from a JSONArray of JSONObjects. The * Produce a comma delimited text from a JSONArray of JSONObjects. The first row will be a list of names obtained by
* first row will be a list of names obtained by inspecting the first * inspecting the first JSONObject.
* JSONObject. *
* @param ja A JSONArray of JSONObjects.
* *
* @param ja
* A JSONArray of JSONObjects.
* @return A comma delimited text. * @return A comma delimited text.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONArray ja) throws JSONException { public static String toString(final JSONArray ja) throws JSONException {
@ -248,15 +240,14 @@ public class CDL {
} }
/** /**
* Produce a comma delimited text from a JSONArray of JSONObjects using * Produce a comma delimited text from a JSONArray of JSONObjects using a provided list of names. The list of names
* a provided list of names. The list of names is not included in the * is not included in the output.
* output. *
* @param names A JSONArray of strings.
* @param ja A JSONArray of JSONObjects.
* *
* @param names
* A JSONArray of strings.
* @param ja
* A JSONArray of JSONObjects.
* @return A comma delimited text. * @return A comma delimited text.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONArray names, final JSONArray ja) throws JSONException { public static String toString(final JSONArray names, final JSONArray ja) throws JSONException {

View File

@ -22,8 +22,8 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* Convert a web browser cookie specification to a JSONObject and back. * Convert a web browser cookie specification to a JSONObject and back. JSON and Cookies are both notations for
* JSON and Cookies are both notations for name/value pairs. * name/value pairs.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -31,17 +31,14 @@ package com.intellectualcrafters.json;
public class Cookie { public class Cookie {
/** /**
* Produce a copy of a string in which the characters '+', '%', '=', ';' * Produce a copy of a string in which the characters '+', '%', '=', ';' and control characters are replaced with
* and control characters are replaced with "%hh". This is a gentle form * "%hh". This is a gentle form of URL encoding, attempting to cause as little distortion to the string as possible.
* of URL encoding, attempting to cause as little distortion to the * The characters '=' and ';' are meta characters in cookies. By convention, they are escaped using the
* string as possible. The characters '=' and ';' are meta characters in * URL-encoding. This is only a convention, not a standard. Often, cookies are expected to have encoded values. We
* cookies. By convention, they are escaped using the URL-encoding. This is * encode '=' and ';' because we must. We encode '%' and '+' because they are meta characters in URL encoding.
* only a convention, not a standard. Often, cookies are expected to have *
* encoded values. We encode '=' and ';' because we must. We encode '%' and * @param string The source string.
* '+' because they are meta characters in URL encoding.
* *
* @param string
* The source string.
* @return The escaped result. * @return The escaped result.
*/ */
public static String escape(final String string) { public static String escape(final String string) {
@ -55,8 +52,7 @@ public class Cookie {
sb.append('%'); sb.append('%');
sb.append(Character.forDigit((char) ((c >>> 4) & 0x0f), 16)); sb.append(Character.forDigit((char) ((c >>> 4) & 0x0f), 16));
sb.append(Character.forDigit((char) (c & 0x0f), 16)); sb.append(Character.forDigit((char) (c & 0x0f), 16));
} } else {
else {
sb.append(c); sb.append(c);
} }
} }
@ -64,20 +60,17 @@ public class Cookie {
} }
/** /**
* Convert a cookie specification string into a JSONObject. The string * Convert a cookie specification string into a JSONObject. The string will contain a name value pair separated by
* will contain a name value pair separated by '='. The name and the value * '='. The name and the value will be unescaped, possibly converting '+' and '%' sequences. The cookie properties
* will be unescaped, possibly converting '+' and '%' sequences. The * may follow, separated by ';', also represented as name=value (except the secure property, which does not have a
* cookie properties may follow, separated by ';', also represented as * value). The name will be stored under the key "name", and the value will be stored under the key "value". This
* name=value (except the secure property, which does not have a value). * method does not do checking or validation of the parameters. It only converts the cookie string into a
* The name will be stored under the key "name", and the value will be * JSONObject.
* stored under the key "value". This method does not do checking or *
* validation of the parameters. It only converts the cookie string into * @param string The cookie specification string.
* a JSONObject. *
* @return A JSONObject containing "name", "value", and possibly other members.
* *
* @param string
* The cookie specification string.
* @return A JSONObject containing "name", "value", and possibly other
* members.
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final String string) throws JSONException { public static JSONObject toJSONObject(final String string) throws JSONException {
@ -94,12 +87,10 @@ public class Cookie {
if (x.next() != '=') { if (x.next() != '=') {
if (name.equals("secure")) { if (name.equals("secure")) {
value = Boolean.TRUE; value = Boolean.TRUE;
} } else {
else {
throw x.syntaxError("Missing '=' in cookie parameter."); throw x.syntaxError("Missing '=' in cookie parameter.");
} }
} } else {
else {
value = unescape(x.nextTo(';')); value = unescape(x.nextTo(';'));
x.next(); x.next();
} }
@ -109,15 +100,14 @@ public class Cookie {
} }
/** /**
* Convert a JSONObject into a cookie specification string. The JSONObject * Convert a JSONObject into a cookie specification string. The JSONObject must contain "name" and "value" members.
* must contain "name" and "value" members. * If the JSONObject contains "expires", "domain", "path", or "secure" members, they will be appended to the cookie
* If the JSONObject contains "expires", "domain", "path", or "secure" * specification string. All other members are ignored.
* members, they will be appended to the cookie specification string. *
* All other members are ignored. * @param jo A JSONObject
* *
* @param jo
* A JSONObject
* @return A cookie specification string * @return A cookie specification string
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONObject jo) throws JSONException { public static String toString(final JSONObject jo) throws JSONException {
@ -145,13 +135,11 @@ public class Cookie {
} }
/** /**
* Convert <code>%</code><i>hh</i> sequences to single characters, and * Convert <code>%</code><i>hh</i> sequences to single characters, and convert plus to space.
* convert plus to space.
* *
* @param string * @param string A string that may contain <code>+</code> &nbsp;<small>(plus)</small> and <code>%</code><i>hh</i>
* A string that may contain <code>+</code>
* &nbsp;<small>(plus)</small> and <code>%</code><i>hh</i>
* sequences. * sequences.
*
* @return The unescaped string. * @return The unescaped string.
*/ */
public static String unescape(final String string) { public static String unescape(final String string) {
@ -161,8 +149,7 @@ public class Cookie {
char c = string.charAt(i); char c = string.charAt(i);
if (c == '+') { if (c == '+') {
c = ' '; c = ' ';
} } else if ((c == '%') && ((i + 2) < length)) {
else if ((c == '%') && ((i + 2) < length)) {
final int d = JSONTokener.dehexchar(string.charAt(i + 1)); final int d = JSONTokener.dehexchar(string.charAt(i + 1));
final int e = JSONTokener.dehexchar(string.charAt(i + 2)); final int e = JSONTokener.dehexchar(string.charAt(i + 2));
if ((d >= 0) && (e >= 0)) { if ((d >= 0) && (e >= 0)) {

View File

@ -11,18 +11,17 @@ import java.util.Iterator;
public class CookieList { public class CookieList {
/** /**
* Convert a cookie list into a JSONObject. A cookie list is a sequence * Convert a cookie list into a JSONObject. A cookie list is a sequence of name/value pairs. The names are separated
* of name/value pairs. The names are separated from the values by '='. * from the values by '='. The pairs are separated by ';'. The names and the values will be unescaped, possibly
* The pairs are separated by ';'. The names and the values * converting '+' and '%' sequences.
* will be unescaped, possibly converting '+' and '%' sequences.
* <p/> * <p/>
* To add a cookie to a cooklist, * To add a cookie to a cooklist, cookielistJSONObject.put(cookieJSONObject.getString("name"),
* cookielistJSONObject.put(cookieJSONObject.getString("name"),
* cookieJSONObject.getString("value")); * cookieJSONObject.getString("value"));
* *
* @param string * @param string A cookie list string
* A cookie list string *
* @return A JSONObject * @return A JSONObject
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final String string) throws JSONException { public static JSONObject toJSONObject(final String string) throws JSONException {
@ -38,14 +37,14 @@ public class CookieList {
} }
/** /**
* Convert a JSONObject into a cookie list. A cookie list is a sequence * Convert a JSONObject into a cookie list. A cookie list is a sequence of name/value pairs. The names are separated
* of name/value pairs. The names are separated from the values by '='. * from the values by '='. The pairs are separated by ';'. The characters '%', '+', '=', and ';' in the names and
* The pairs are separated by ';'. The characters '%', '+', '=', and ';' * values are replaced by "%hh".
* in the names and values are replaced by "%hh". *
* @param jo A JSONObject
* *
* @param jo
* A JSONObject
* @return A cookie list string * @return A cookie list string
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONObject jo) throws JSONException { public static String toString(final JSONObject jo) throws JSONException {

View File

@ -37,10 +37,10 @@ public class HTTP {
public static final String CRLF = "\r\n"; public static final String CRLF = "\r\n";
/** /**
* Convert an HTTP header string into a JSONObject. It can be a request * Convert an HTTP header string into a JSONObject. It can be a request header or a response header. A request
* header or a response header. A request header will contain * header will contain
* <p/>
* <p/> * <p/>
*
* <pre> * <pre>
* { * {
* Method: "POST" (for example), * Method: "POST" (for example),
@ -51,7 +51,7 @@ public class HTTP {
* <p/> * <p/>
* A response header will contain * A response header will contain
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* { * {
* "HTTP-Version": "HTTP/1.1" (for example), * "HTTP-Version": "HTTP/1.1" (for example),
@ -60,10 +60,10 @@ public class HTTP {
* } * }
* </pre> * </pre>
* <p/> * <p/>
* In addition, the other parameters in the header will be captured, using * In addition, the other parameters in the header will be captured, using the HTTP field names as JSON names, so
* the HTTP field names as JSON names, so that * that
* <p/>
* <p/> * <p/>
*
* <pre> * <pre>
* Date: Sun, 26 May 2002 18:06:04 GMT * Date: Sun, 26 May 2002 18:06:04 GMT
* Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s * Cookie: Q=q2=PPEAsg--; B=677gi6ouf29bn&b=2&f=s
@ -72,7 +72,7 @@ public class HTTP {
* <p/> * <p/>
* become * become
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* {... * {...
* Date: "Sun, 26 May 2002 18:06:04 GMT", * Date: "Sun, 26 May 2002 18:06:04 GMT",
@ -81,13 +81,12 @@ public class HTTP {
* ...} * ...}
* </pre> * </pre>
* <p/> * <p/>
* It does no further checking or conversion. It does not parse dates. It * It does no further checking or conversion. It does not parse dates. It does not do '%' transforms on URLs.
* does not do '%' transforms on URLs. *
* @param string An HTTP header string.
*
* @return A JSONObject containing the elements and attributes of the XML string.
* *
* @param string
* An HTTP header string.
* @return A JSONObject containing the elements and attributes
* of the XML string.
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final String string) throws JSONException { public static JSONObject toJSONObject(final String string) throws JSONException {
@ -105,8 +104,7 @@ public class HTTP {
jo.put("Reason-Phrase", x.nextTo('\0')); jo.put("Reason-Phrase", x.nextTo('\0'));
x.next(); x.next();
} } else {
else {
// Request // Request
@ -129,7 +127,7 @@ public class HTTP {
/** /**
* Convert a JSONObject into an HTTP header. A request header must contain * Convert a JSONObject into an HTTP header. A request header must contain
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* { * {
* Method: "POST" (for example), * Method: "POST" (for example),
@ -140,7 +138,7 @@ public class HTTP {
* <p/> * <p/>
* A response header must contain * A response header must contain
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* { * {
* "HTTP-Version": "HTTP/1.1" (for example), * "HTTP-Version": "HTTP/1.1" (for example),
@ -149,15 +147,13 @@ public class HTTP {
* } * }
* </pre> * </pre>
* <p/> * <p/>
* Any other members of the JSONObject will be output as HTTP fields. The * Any other members of the JSONObject will be output as HTTP fields. The result will end with two CRLF pairs.
* result will end with two CRLF pairs. *
* @param jo A JSONObject
* *
* @param jo
* A JSONObject
* @return An HTTP header string. * @return An HTTP header string.
* @throws JSONException *
* if the object does not contain enough * @throws JSONException if the object does not contain enough information.
* information.
*/ */
public static String toString(final JSONObject jo) throws JSONException { public static String toString(final JSONObject jo) throws JSONException {
final Iterator<String> keys = jo.keys(); final Iterator<String> keys = jo.keys();
@ -169,8 +165,7 @@ public class HTTP {
sb.append(jo.getString("Status-Code")); sb.append(jo.getString("Status-Code"));
sb.append(' '); sb.append(' ');
sb.append(jo.getString("Reason-Phrase")); sb.append(jo.getString("Reason-Phrase"));
} } else if (jo.has("Method") && jo.has("Request-URI")) {
else if (jo.has("Method") && jo.has("Request-URI")) {
sb.append(jo.getString("Method")); sb.append(jo.getString("Method"));
sb.append(' '); sb.append(' ');
sb.append('"'); sb.append('"');
@ -178,8 +173,7 @@ public class HTTP {
sb.append('"'); sb.append('"');
sb.append(' '); sb.append(' ');
sb.append(jo.getString("HTTP-Version")); sb.append(jo.getString("HTTP-Version"));
} } else {
else {
throw new JSONException("Not enough material for an HTTP header."); throw new JSONException("Not enough material for an HTTP header.");
} }
sb.append(CRLF); sb.append(CRLF);

View File

@ -1,8 +1,7 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* The HTTPTokener extends the JSONTokener to provide additional methods * The HTTPTokener extends the JSONTokener to provide additional methods for the parsing of HTTP headers.
* for the parsing of HTTP headers.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -12,8 +11,7 @@ public class HTTPTokener extends JSONTokener {
/** /**
* Construct an HTTPTokener from a string. * Construct an HTTPTokener from a string.
* *
* @param string * @param string A source string.
* A source string.
*/ */
public HTTPTokener(final String string) { public HTTPTokener(final String string) {
super(string); super(string);
@ -23,6 +21,7 @@ public class HTTPTokener extends JSONTokener {
* Get the next token or string. This is used in parsing HTTP headers. * Get the next token or string. This is used in parsing HTTP headers.
* *
* @return A String. * @return A String.
*
* @throws JSONException * @throws JSONException
*/ */
public String nextToken() throws JSONException { public String nextToken() throws JSONException {
@ -31,8 +30,7 @@ public class HTTPTokener extends JSONTokener {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
do { do {
c = next(); c = next();
} } while (Character.isWhitespace(c));
while (Character.isWhitespace(c));
if ((c == '"') || (c == '\'')) { if ((c == '"') || (c == '\'')) {
q = c; q = c;
for (; ; ) { for (; ; ) {

View File

@ -30,45 +30,29 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
/** /**
* A JSONArray is an ordered sequence of values. Its external text form is a * A JSONArray is an ordered sequence of values. Its external text form is a string wrapped in square brackets with
* string wrapped in square brackets with commas separating the values. The * commas separating the values. The internal form is an object having <code>get</code> and <code>opt</code> methods for
* internal form is an object having <code>get</code> and <code>opt</code> * accessing the values by index, and <code>put</code> methods for adding or replacing values. The values can be any of
* methods for accessing the values by index, and <code>put</code> methods for * these types: <code>Boolean</code>, <code>JSONArray</code>, <code>JSONObject</code>, <code>Number</code>,
* adding or replacing values. The values can be any of these types: * <code>String</code>, or the <code>JSONObject.NULL object</code>.
* <code>Boolean</code>, <code>JSONArray</code>, <code>JSONObject</code>,
* <code>Number</code>, <code>String</code>, or the
* <code>JSONObject.NULL object</code>.
* <p/> * <p/>
* The constructor can convert a JSON text into a Java object. The * The constructor can convert a JSON text into a Java object. The <code>toString</code> method converts to JSON text.
* <code>toString</code> method converts to JSON text.
* <p/> * <p/>
* A <code>get</code> method returns a value if one can be found, and throws an * A <code>get</code> method returns a value if one can be found, and throws an exception if one cannot be found. An
* exception if one cannot be found. An <code>opt</code> method returns a * <code>opt</code> method returns a default value instead of throwing an exception, and so is useful for obtaining
* default value instead of throwing an exception, and so is useful for * optional values.
* obtaining optional values.
* <p/> * <p/>
* The generic <code>get()</code> and <code>opt()</code> methods return an * The generic <code>get()</code> and <code>opt()</code> methods return an object which you can cast or query for type.
* object which you can cast or query for type. There are also typed * There are also typed <code>get</code> and <code>opt</code> methods that do type checking and type coercion for you.
* <code>get</code> and <code>opt</code> methods that do type checking and type
* coercion for you.
* <p/> * <p/>
* The texts produced by the <code>toString</code> methods strictly conform to * The texts produced by the <code>toString</code> methods strictly conform to JSON syntax rules. The constructors are
* JSON syntax rules. The constructors are more forgiving in the texts they will * more forgiving in the texts they will accept: <ul> <li>An extra <code>,</code>&nbsp;<small>(comma)</small> may appear
* accept: * just before the closing bracket.</li> <li>The <code>null</code> value will be inserted when there is <code>,</code>
* <ul> * &nbsp;<small>(comma)</small> elision.</li> <li>Strings may be quoted with <code>'</code>&nbsp;<small>(single
* <li>An extra <code>,</code>&nbsp;<small>(comma)</small> may appear just * quote)</small>.</li> <li>Strings do not need to be quoted at all if they do not begin with a quote or single quote,
* before the closing bracket.</li> * and if they do not contain leading or trailing spaces, and if they do not contain any of these characters: <code>{ }
* <li>The <code>null</code> value will be inserted when there is <code>,</code> * [ ] / \ : , #</code> and if they do not look like numbers and if they are not the reserved words <code>true</code>,
* &nbsp;<small>(comma)</small> elision.</li> * <code>false</code>, or <code>null</code>.</li> </ul>
* <li>Strings may be quoted with <code>'</code>&nbsp;<small>(single
* quote)</small>.</li>
* <li>Strings do not need to be quoted at all if they do not begin with a quote
* or single quote, and if they do not contain leading or trailing spaces, and
* if they do not contain any of these characters:
* <code>{ } [ ] / \ : , #</code> and if they do not look like numbers and if
* they are not the reserved words <code>true</code>, <code>false</code>, or
* <code>null</code>.</li>
* </ul>
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -90,10 +74,9 @@ public class JSONArray {
/** /**
* Construct a JSONArray from a JSONTokener. * Construct a JSONArray from a JSONTokener.
* *
* @param x * @param x A JSONTokener
* A JSONTokener *
* @throws JSONException * @throws JSONException If there is a syntax error.
* If there is a syntax error.
*/ */
public JSONArray(final JSONTokener x) throws JSONException { public JSONArray(final JSONTokener x) throws JSONException {
this(); this();
@ -106,8 +89,7 @@ public class JSONArray {
if (x.nextClean() == ',') { if (x.nextClean() == ',') {
x.back(); x.back();
this.myArrayList.add(JSONObject.NULL); this.myArrayList.add(JSONObject.NULL);
} } else {
else {
x.back(); x.back();
this.myArrayList.add(x.nextValue()); this.myArrayList.add(x.nextValue());
} }
@ -130,12 +112,10 @@ public class JSONArray {
/** /**
* Construct a JSONArray from a source JSON text. * Construct a JSONArray from a source JSON text.
* *
* @param source * @param source A string that begins with <code>[</code>&nbsp;<small>(left bracket)</small> and ends with
* A string that begins with <code>[</code>&nbsp;<small>(left * <code>]</code> &nbsp;<small>(right bracket)</small>.
* bracket)</small> and ends with <code>]</code> *
* &nbsp;<small>(right bracket)</small>. * @throws JSONException If there is a syntax error.
* @throws JSONException
* If there is a syntax error.
*/ */
public JSONArray(final String source) throws JSONException { public JSONArray(final String source) throws JSONException {
this(new JSONTokener(source)); this(new JSONTokener(source));
@ -144,8 +124,7 @@ public class JSONArray {
/** /**
* Construct a JSONArray from a Collection. * Construct a JSONArray from a Collection.
* *
* @param collection * @param collection A Collection.
* A Collection.
*/ */
public JSONArray(final Collection<Object> collection) { public JSONArray(final Collection<Object> collection) {
this.myArrayList = new ArrayList<Object>(); this.myArrayList = new ArrayList<Object>();
@ -159,8 +138,7 @@ public class JSONArray {
/** /**
* Construct a JSONArray from an array * Construct a JSONArray from an array
* *
* @throws JSONException * @throws JSONException If not an array.
* If not an array.
*/ */
public JSONArray(final Object array) throws JSONException { public JSONArray(final Object array) throws JSONException {
this(); this();
@ -169,8 +147,7 @@ public class JSONArray {
for (int i = 0; i < length; i += 1) { for (int i = 0; i < length; i += 1) {
this.put(JSONObject.wrap(Array.get(array, i))); this.put(JSONObject.wrap(Array.get(array, i)));
} }
} } else {
else {
throw new JSONException("JSONArray initial value should be a string or collection or array."); throw new JSONException("JSONArray initial value should be a string or collection or array.");
} }
} }
@ -178,11 +155,11 @@ public class JSONArray {
/** /**
* Get the object value associated with an index. * Get the object value associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return An object value. * @return An object value.
* @throws JSONException *
* If there is no value for the index. * @throws JSONException If there is no value for the index.
*/ */
public Object get(final int index) throws JSONException { public Object get(final int index) throws JSONException {
final Object object = this.opt(index); final Object object = this.opt(index);
@ -193,22 +170,19 @@ public class JSONArray {
} }
/** /**
* Get the boolean value associated with an index. The string values "true" * Get the boolean value associated with an index. The string values "true" and "false" are converted to boolean.
* and "false" are converted to boolean. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return The truth. * @return The truth.
* @throws JSONException *
* If there is no value for the index or if the value is not * @throws JSONException If there is no value for the index or if the value is not convertible to boolean.
* convertible to boolean.
*/ */
public boolean getBoolean(final int index) throws JSONException { public boolean getBoolean(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
if (object.equals(Boolean.FALSE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("false"))) { if (object.equals(Boolean.FALSE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("false"))) {
return false; return false;
} } else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) {
else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) {
return true; return true;
} }
throw new JSONException("JSONArray[" + index + "] is not a boolean."); throw new JSONException("JSONArray[" + index + "] is not a boolean.");
@ -217,19 +191,17 @@ public class JSONArray {
/** /**
* Get the double value associated with an index. * Get the double value associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return The value. * @return The value.
* @throws JSONException *
* If the key is not found or if the value cannot be converted * @throws JSONException If the key is not found or if the value cannot be converted to a number.
* to a number.
*/ */
public double getDouble(final int index) throws JSONException { public double getDouble(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
try { try {
return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object); return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object);
} } catch (final Exception e) {
catch (final Exception e) {
throw new JSONException("JSONArray[" + index + "] is not a number."); throw new JSONException("JSONArray[" + index + "] is not a number.");
} }
} }
@ -237,18 +209,17 @@ public class JSONArray {
/** /**
* Get the int value associated with an index. * Get the int value associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return The value. * @return The value.
* @throws JSONException *
* If the key is not found or if the value is not a number. * @throws JSONException If the key is not found or if the value is not a number.
*/ */
public int getInt(final int index) throws JSONException { public int getInt(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
try { try {
return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object); return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object);
} } catch (final Exception e) {
catch (final Exception e) {
throw new JSONException("JSONArray[" + index + "] is not a number."); throw new JSONException("JSONArray[" + index + "] is not a number.");
} }
} }
@ -256,12 +227,11 @@ public class JSONArray {
/** /**
* Get the JSONArray associated with an index. * Get the JSONArray associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return A JSONArray value. * @return A JSONArray value.
* @throws JSONException *
* If there is no value for the index. or if the value is not a * @throws JSONException If there is no value for the index. or if the value is not a JSONArray
* JSONArray
*/ */
public JSONArray getJSONArray(final int index) throws JSONException { public JSONArray getJSONArray(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
@ -274,12 +244,11 @@ public class JSONArray {
/** /**
* Get the JSONObject associated with an index. * Get the JSONObject associated with an index.
* *
* @param index * @param index subscript
* subscript *
* @return A JSONObject value. * @return A JSONObject value.
* @throws JSONException *
* If there is no value for the index or if the value is not a * @throws JSONException If there is no value for the index or if the value is not a JSONObject
* JSONObject
*/ */
public JSONObject getJSONObject(final int index) throws JSONException { public JSONObject getJSONObject(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
@ -292,19 +261,17 @@ public class JSONArray {
/** /**
* Get the long value associated with an index. * Get the long value associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return The value. * @return The value.
* @throws JSONException *
* If the key is not found or if the value cannot be converted * @throws JSONException If the key is not found or if the value cannot be converted to a number.
* to a number.
*/ */
public long getLong(final int index) throws JSONException { public long getLong(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
try { try {
return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object); return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object);
} } catch (final Exception e) {
catch (final Exception e) {
throw new JSONException("JSONArray[" + index + "] is not a number."); throw new JSONException("JSONArray[" + index + "] is not a number.");
} }
} }
@ -312,11 +279,11 @@ public class JSONArray {
/** /**
* Get the string associated with an index. * Get the string associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return A string value. * @return A string value.
* @throws JSONException *
* If there is no string value for the index. * @throws JSONException If there is no string value for the index.
*/ */
public String getString(final int index) throws JSONException { public String getString(final int index) throws JSONException {
final Object object = this.get(index); final Object object = this.get(index);
@ -329,8 +296,8 @@ public class JSONArray {
/** /**
* Determine if the value is null. * Determine if the value is null.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return true if the value at the index is null, or if there is no value. * @return true if the value at the index is null, or if there is no value.
*/ */
public boolean isNull(final int index) { public boolean isNull(final int index) {
@ -338,15 +305,14 @@ public class JSONArray {
} }
/** /**
* Make a string from the contents of this JSONArray. The * Make a string from the contents of this JSONArray. The <code>separator</code> string is inserted between each
* <code>separator</code> string is inserted between each element. Warning: * element. Warning: This method assumes that the data structure is acyclical.
* This method assumes that the data structure is acyclical. *
* @param separator A string that will be inserted between the elements.
* *
* @param separator
* A string that will be inserted between the elements.
* @return a string. * @return a string.
* @throws JSONException *
* If the array contains an invalid number. * @throws JSONException If the array contains an invalid number.
*/ */
public String join(final String separator) throws JSONException { public String join(final String separator) throws JSONException {
final int len = this.length(); final int len = this.length();
@ -373,8 +339,8 @@ public class JSONArray {
/** /**
* Get the optional object value associated with an index. * Get the optional object value associated with an index.
* *
* @param index * @param index The index must be between 0 and length() - 1.
* The index must be between 0 and length() - 1. *
* @return An object value, or null if there is no object at that index. * @return An object value, or null if there is no object at that index.
*/ */
public Object opt(final int index) { public Object opt(final int index) {
@ -382,12 +348,11 @@ public class JSONArray {
} }
/** /**
* Get the optional boolean value associated with an index. It returns false * Get the optional boolean value associated with an index. It returns false if there is no value at that index, or
* if there is no value at that index, or if the value is not Boolean.TRUE * if the value is not Boolean.TRUE or the String "true".
* or the String "true". *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return The truth. * @return The truth.
*/ */
public boolean optBoolean(final int index) { public boolean optBoolean(final int index) {
@ -395,32 +360,28 @@ public class JSONArray {
} }
/** /**
* Get the optional boolean value associated with an index. It returns the * Get the optional boolean value associated with an index. It returns the defaultValue if there is no value at that
* defaultValue if there is no value at that index or if it is not a Boolean * index or if it is not a Boolean or the String "true" or "false" (case insensitive).
* or the String "true" or "false" (case insensitive). *
* @param index The index must be between 0 and length() - 1.
* @param defaultValue A boolean default.
* *
* @param index
* The index must be between 0 and length() - 1.
* @param defaultValue
* A boolean default.
* @return The truth. * @return The truth.
*/ */
public boolean optBoolean(final int index, final boolean defaultValue) { public boolean optBoolean(final int index, final boolean defaultValue) {
try { try {
return this.getBoolean(index); return this.getBoolean(index);
} } catch (final Exception e) {
catch (final Exception e) {
return defaultValue; return defaultValue;
} }
} }
/** /**
* Get the optional double value associated with an index. NaN is returned * Get the optional double value associated with an index. NaN is returned if there is no value for the index, or if
* if there is no value for the index, or if the value is not a number and * the value is not a number and cannot be converted to a number.
* cannot be converted to a number. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return The value. * @return The value.
*/ */
public double optDouble(final int index) { public double optDouble(final int index) {
@ -428,32 +389,28 @@ public class JSONArray {
} }
/** /**
* Get the optional double value associated with an index. The defaultValue * Get the optional double value associated with an index. The defaultValue is returned if there is no value for the
* is returned if there is no value for the index, or if the value is not a * index, or if the value is not a number and cannot be converted to a number.
* number and cannot be converted to a number. *
* @param index subscript
* @param defaultValue The default value.
* *
* @param index
* subscript
* @param defaultValue
* The default value.
* @return The value. * @return The value.
*/ */
public double optDouble(final int index, final double defaultValue) { public double optDouble(final int index, final double defaultValue) {
try { try {
return this.getDouble(index); return this.getDouble(index);
} } catch (final Exception e) {
catch (final Exception e) {
return defaultValue; return defaultValue;
} }
} }
/** /**
* Get the optional int value associated with an index. Zero is returned if * Get the optional int value associated with an index. Zero is returned if there is no value for the index, or if
* there is no value for the index, or if the value is not a number and * the value is not a number and cannot be converted to a number.
* cannot be converted to a number. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return The value. * @return The value.
*/ */
public int optInt(final int index) { public int optInt(final int index) {
@ -461,21 +418,18 @@ public class JSONArray {
} }
/** /**
* Get the optional int value associated with an index. The defaultValue is * Get the optional int value associated with an index. The defaultValue is returned if there is no value for the
* returned if there is no value for the index, or if the value is not a * index, or if the value is not a number and cannot be converted to a number.
* number and cannot be converted to a number. *
* @param index The index must be between 0 and length() - 1.
* @param defaultValue The default value.
* *
* @param index
* The index must be between 0 and length() - 1.
* @param defaultValue
* The default value.
* @return The value. * @return The value.
*/ */
public int optInt(final int index, final int defaultValue) { public int optInt(final int index, final int defaultValue) {
try { try {
return this.getInt(index); return this.getInt(index);
} } catch (final Exception e) {
catch (final Exception e) {
return defaultValue; return defaultValue;
} }
} }
@ -483,10 +437,9 @@ public class JSONArray {
/** /**
* Get the optional JSONArray associated with an index. * Get the optional JSONArray associated with an index.
* *
* @param index * @param index subscript
* subscript *
* @return A JSONArray value, or null if the index has no value, or if the * @return A JSONArray value, or null if the index has no value, or if the value is not a JSONArray.
* value is not a JSONArray.
*/ */
public JSONArray optJSONArray(final int index) { public JSONArray optJSONArray(final int index) {
final Object o = this.opt(index); final Object o = this.opt(index);
@ -494,12 +447,11 @@ public class JSONArray {
} }
/** /**
* Get the optional JSONObject associated with an index. Null is returned if * Get the optional JSONObject associated with an index. Null is returned if the key is not found, or null if the
* the key is not found, or null if the index has no value, or if the value * index has no value, or if the value is not a JSONObject.
* is not a JSONObject. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return A JSONObject value. * @return A JSONObject value.
*/ */
public JSONObject optJSONObject(final int index) { public JSONObject optJSONObject(final int index) {
@ -508,12 +460,11 @@ public class JSONArray {
} }
/** /**
* Get the optional long value associated with an index. Zero is returned if * Get the optional long value associated with an index. Zero is returned if there is no value for the index, or if
* there is no value for the index, or if the value is not a number and * the value is not a number and cannot be converted to a number.
* cannot be converted to a number. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return The value. * @return The value.
*/ */
public long optLong(final int index) { public long optLong(final int index) {
@ -521,32 +472,28 @@ public class JSONArray {
} }
/** /**
* Get the optional long value associated with an index. The defaultValue is * Get the optional long value associated with an index. The defaultValue is returned if there is no value for the
* returned if there is no value for the index, or if the value is not a * index, or if the value is not a number and cannot be converted to a number.
* number and cannot be converted to a number. *
* @param index The index must be between 0 and length() - 1.
* @param defaultValue The default value.
* *
* @param index
* The index must be between 0 and length() - 1.
* @param defaultValue
* The default value.
* @return The value. * @return The value.
*/ */
public long optLong(final int index, final long defaultValue) { public long optLong(final int index, final long defaultValue) {
try { try {
return this.getLong(index); return this.getLong(index);
} } catch (final Exception e) {
catch (final Exception e) {
return defaultValue; return defaultValue;
} }
} }
/** /**
* Get the optional string value associated with an index. It returns an * Get the optional string value associated with an index. It returns an empty string if there is no value at that
* empty string if there is no value at that index. If the value is not a * index. If the value is not a string and is not null, then it is coverted to a string.
* string and is not null, then it is coverted to a string. *
* @param index The index must be between 0 and length() - 1.
* *
* @param index
* The index must be between 0 and length() - 1.
* @return A String value. * @return A String value.
*/ */
public String optString(final int index) { public String optString(final int index) {
@ -554,13 +501,11 @@ public class JSONArray {
} }
/** /**
* Get the optional string associated with an index. The defaultValue is * Get the optional string associated with an index. The defaultValue is returned if the key is not found.
* returned if the key is not found. *
* @param index The index must be between 0 and length() - 1.
* @param defaultValue The default value.
* *
* @param index
* The index must be between 0 and length() - 1.
* @param defaultValue
* The default value.
* @return A String value. * @return A String value.
*/ */
public String optString(final int index, final String defaultValue) { public String optString(final int index, final String defaultValue) {
@ -571,8 +516,8 @@ public class JSONArray {
/** /**
* Append a boolean value. This increases the array's length by one. * Append a boolean value. This increases the array's length by one.
* *
* @param value * @param value A boolean value.
* A boolean value. *
* @return this. * @return this.
*/ */
public JSONArray put(final boolean value) { public JSONArray put(final boolean value) {
@ -581,11 +526,10 @@ public class JSONArray {
} }
/** /**
* Put a value in the JSONArray, where the value will be a JSONArray which * Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
* is produced from a Collection. *
* @param value A Collection value.
* *
* @param value
* A Collection value.
* @return this. * @return this.
*/ */
public JSONArray put(final Collection<Object> value) { public JSONArray put(final Collection<Object> value) {
@ -596,11 +540,11 @@ public class JSONArray {
/** /**
* Append a double value. This increases the array's length by one. * Append a double value. This increases the array's length by one.
* *
* @param value * @param value A double value.
* A double value. *
* @return this. * @return this.
* @throws JSONException *
* if the value is not finite. * @throws JSONException if the value is not finite.
*/ */
public JSONArray put(final double value) throws JSONException { public JSONArray put(final double value) throws JSONException {
final Double d = value; final Double d = value;
@ -612,8 +556,8 @@ public class JSONArray {
/** /**
* Append an int value. This increases the array's length by one. * Append an int value. This increases the array's length by one.
* *
* @param value * @param value An int value.
* An int value. *
* @return this. * @return this.
*/ */
public JSONArray put(final int value) { public JSONArray put(final int value) {
@ -624,8 +568,8 @@ public class JSONArray {
/** /**
* Append an long value. This increases the array's length by one. * Append an long value. This increases the array's length by one.
* *
* @param value * @param value A long value.
* A long value. *
* @return this. * @return this.
*/ */
public JSONArray put(final long value) { public JSONArray put(final long value) {
@ -634,11 +578,10 @@ public class JSONArray {
} }
/** /**
* Put a value in the JSONArray, where the value will be a JSONObject which * Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map.
* is produced from a Map. *
* @param value A Map value.
* *
* @param value
* A Map value.
* @return this. * @return this.
*/ */
public JSONArray put(final Map<String, Object> value) { public JSONArray put(final Map<String, Object> value) {
@ -649,10 +592,9 @@ public class JSONArray {
/** /**
* Append an object value. This increases the array's length by one. * Append an object value. This increases the array's length by one.
* *
* @param value * @param value An object value. The value should be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or
* An object value. The value should be a Boolean, Double, * String, or the JSONObject.NULL object.
* Integer, JSONArray, JSONObject, Long, or String, or the *
* JSONObject.NULL object.
* @return this. * @return this.
*/ */
public JSONArray put(final Object value) { public JSONArray put(final Object value) {
@ -661,17 +603,15 @@ public class JSONArray {
} }
/** /**
* Put or replace a boolean value in the JSONArray. If the index is greater * Put or replace a boolean value in the JSONArray. If the index is greater than the length of the JSONArray, then
* than the length of the JSONArray, then null elements will be added as * null elements will be added as necessary to pad it out.
* necessary to pad it out. *
* @param index The subscript.
* @param value A boolean value.
* *
* @param index
* The subscript.
* @param value
* A boolean value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final boolean value) throws JSONException { public JSONArray put(final int index, final boolean value) throws JSONException {
this.put(index, value ? Boolean.TRUE : Boolean.FALSE); this.put(index, value ? Boolean.TRUE : Boolean.FALSE);
@ -679,16 +619,14 @@ public class JSONArray {
} }
/** /**
* Put a value in the JSONArray, where the value will be a JSONArray which * Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection.
* is produced from a Collection. *
* @param index The subscript.
* @param value A Collection value.
* *
* @param index
* The subscript.
* @param value
* A Collection value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative or if the value is not finite. * @throws JSONException If the index is negative or if the value is not finite.
*/ */
public JSONArray put(final int index, final Collection<Object> value) throws JSONException { public JSONArray put(final int index, final Collection<Object> value) throws JSONException {
this.put(index, new JSONArray(value)); this.put(index, new JSONArray(value));
@ -696,17 +634,15 @@ public class JSONArray {
} }
/** /**
* Put or replace a double value. If the index is greater than the length of * Put or replace a double value. If the index is greater than the length of the JSONArray, then null elements will
* the JSONArray, then null elements will be added as necessary to pad it * be added as necessary to pad it out.
* out. *
* @param index The subscript.
* @param value A double value.
* *
* @param index
* The subscript.
* @param value
* A double value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative or if the value is not finite. * @throws JSONException If the index is negative or if the value is not finite.
*/ */
public JSONArray put(final int index, final double value) throws JSONException { public JSONArray put(final int index, final double value) throws JSONException {
this.put(index, new Double(value)); this.put(index, new Double(value));
@ -714,17 +650,15 @@ public class JSONArray {
} }
/** /**
* Put or replace an int value. If the index is greater than the length of * Put or replace an int value. If the index is greater than the length of the JSONArray, then null elements will be
* the JSONArray, then null elements will be added as necessary to pad it * added as necessary to pad it out.
* out. *
* @param index The subscript.
* @param value An int value.
* *
* @param index
* The subscript.
* @param value
* An int value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final int value) throws JSONException { public JSONArray put(final int index, final int value) throws JSONException {
this.put(index, new Integer(value)); this.put(index, new Integer(value));
@ -732,17 +666,15 @@ public class JSONArray {
} }
/** /**
* Put or replace a long value. If the index is greater than the length of * Put or replace a long value. If the index is greater than the length of the JSONArray, then null elements will be
* the JSONArray, then null elements will be added as necessary to pad it * added as necessary to pad it out.
* out. *
* @param index The subscript.
* @param value A long value.
* *
* @param index
* The subscript.
* @param value
* A long value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final long value) throws JSONException { public JSONArray put(final int index, final long value) throws JSONException {
this.put(index, new Long(value)); this.put(index, new Long(value));
@ -750,17 +682,14 @@ public class JSONArray {
} }
/** /**
* Put a value in the JSONArray, where the value will be a JSONObject that * Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map.
* is produced from a Map. *
* @param index The subscript.
* @param value The Map value.
* *
* @param index
* The subscript.
* @param value
* The Map value.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative or if the the value is an invalid * @throws JSONException If the index is negative or if the the value is an invalid number.
* number.
*/ */
public JSONArray put(final int index, final Map<String, Object> value) throws JSONException { public JSONArray put(final int index, final Map<String, Object> value) throws JSONException {
this.put(index, new JSONObject(value)); this.put(index, new JSONObject(value));
@ -768,20 +697,16 @@ public class JSONArray {
} }
/** /**
* Put or replace an object value in the JSONArray. If the index is greater * Put or replace an object value in the JSONArray. If the index is greater than the length of the JSONArray, then
* than the length of the JSONArray, then null elements will be added as * null elements will be added as necessary to pad it out.
* necessary to pad it out. *
* @param index The subscript.
* @param value The value to put into the array. The value should be a Boolean, Double, Integer, JSONArray,
* JSONObject, Long, or String, or the JSONObject.NULL object.
* *
* @param index
* The subscript.
* @param value
* The value to put into the array. The value should be a
* Boolean, Double, Integer, JSONArray, JSONObject, Long, or
* String, or the JSONObject.NULL object.
* @return this. * @return this.
* @throws JSONException *
* If the index is negative or if the the value is an invalid * @throws JSONException If the index is negative or if the the value is an invalid number.
* number.
*/ */
public JSONArray put(final int index, final Object value) throws JSONException { public JSONArray put(final int index, final Object value) throws JSONException {
JSONObject.testValidity(value); JSONObject.testValidity(value);
@ -790,8 +715,7 @@ public class JSONArray {
} }
if (index < this.length()) { if (index < this.length()) {
this.myArrayList.set(index, value); this.myArrayList.set(index, value);
} } else {
else {
while (index != this.length()) { while (index != this.length()) {
this.put(JSONObject.NULL); this.put(JSONObject.NULL);
} }
@ -803,21 +727,19 @@ public class JSONArray {
/** /**
* Remove an index and close the hole. * Remove an index and close the hole.
* *
* @param index * @param index The index of the element to be removed.
* The index of the element to be removed. *
* @return The value that was associated with the index, or null if there * @return The value that was associated with the index, or null if there was no value.
* was no value.
*/ */
public Object remove(final int index) { public Object remove(final int index) {
return (index >= 0) && (index < this.length()) ? this.myArrayList.remove(index) : null; return (index >= 0) && (index < this.length()) ? this.myArrayList.remove(index) : null;
} }
/** /**
* Determine if two JSONArrays are similar. * Determine if two JSONArrays are similar. They must contain similar sequences.
* They must contain similar sequences. *
* @param other The other JSONArray
* *
* @param other
* The other JSONArray
* @return true if they are equal * @return true if they are equal
*/ */
public boolean similar(final Object other) { public boolean similar(final Object other) {
@ -835,13 +757,11 @@ public class JSONArray {
if (!((JSONObject) valueThis).similar(valueOther)) { if (!((JSONObject) valueThis).similar(valueOther)) {
return false; return false;
} }
} } else if (valueThis instanceof JSONArray) {
else if (valueThis instanceof JSONArray) {
if (!((JSONArray) valueThis).similar(valueOther)) { if (!((JSONArray) valueThis).similar(valueOther)) {
return false; return false;
} }
} } else if (!valueThis.equals(valueOther)) {
else if (!valueThis.equals(valueOther)) {
return false; return false;
} }
} }
@ -849,16 +769,13 @@ public class JSONArray {
} }
/** /**
* Produce a JSONObject by combining a JSONArray of names with the values of * Produce a JSONObject by combining a JSONArray of names with the values of this JSONArray.
* this JSONArray.
* *
* @param names * @param names A JSONArray containing a list of key strings. These will be paired with the values.
* A JSONArray containing a list of key strings. These will be *
* paired with the values. * @return A JSONObject, or null if there are no names or if this JSONArray has no values.
* @return A JSONObject, or null if there are no names or if this JSONArray *
* has no values. * @throws JSONException If any of the names are null.
* @throws JSONException
* If any of the names are null.
*/ */
public JSONObject toJSONObject(final JSONArray names) throws JSONException { public JSONObject toJSONObject(final JSONArray names) throws JSONException {
if ((names == null) || (names.length() == 0) || (this.length() == 0)) { if ((names == null) || (names.length() == 0) || (this.length() == 0)) {
@ -872,36 +789,33 @@ public class JSONArray {
} }
/** /**
* Make a JSON text of this JSONArray. For compactness, no unnecessary * Make a JSON text of this JSONArray. For compactness, no unnecessary whitespace is added. If it is not possible to
* whitespace is added. If it is not possible to produce a syntactically * produce a syntactically correct JSON text then null will be returned instead. This could occur if the array
* correct JSON text then null will be returned instead. This could occur if * contains an invalid number.
* the array contains an invalid number.
* <p/> * <p/>
* Warning: This method assumes that the data structure is acyclical. * Warning: This method assumes that the data structure is acyclical.
* *
* @return a printable, displayable, transmittable representation of the * @return a printable, displayable, transmittable representation of the array.
* array.
*/ */
@Override @Override
public String toString() { public String toString() {
try { try {
return this.toString(0); return this.toString(0);
} } catch (final Exception e) {
catch (final Exception e) {
return null; return null;
} }
} }
/** /**
* Make a prettyprinted JSON text of this JSONArray. Warning: This method * Make a prettyprinted JSON text of this JSONArray. Warning: This method assumes that the data structure is
* assumes that the data structure is acyclical. * acyclical.
*
* @param indentFactor The number of spaces to add to each level of indentation.
*
* @return a printable, displayable, transmittable representation of the object, beginning with
* <code>[</code>&nbsp;<small>(left bracket)</small> and ending with <code>]</code> &nbsp;<small>(right
* bracket)</small>.
* *
* @param indentFactor
* The number of spaces to add to each level of indentation.
* @return a printable, displayable, transmittable representation of the
* object, beginning with <code>[</code>&nbsp;<small>(left
* bracket)</small> and ending with <code>]</code>
* &nbsp;<small>(right bracket)</small>.
* @throws JSONException * @throws JSONException
*/ */
public String toString(final int indentFactor) throws JSONException { public String toString(final int indentFactor) throws JSONException {
@ -912,12 +826,12 @@ public class JSONArray {
} }
/** /**
* Write the contents of the JSONArray as JSON text to a writer. For * Write the contents of the JSONArray as JSON text to a writer. For compactness, no whitespace is added.
* compactness, no whitespace is added.
* <p/> * <p/>
* Warning: This method assumes that the data structure is acyclical. * Warning: This method assumes that the data structure is acyclical.
* *
* @return The writer. * @return The writer.
*
* @throws JSONException * @throws JSONException
*/ */
public Writer write(final Writer writer) throws JSONException { public Writer write(final Writer writer) throws JSONException {
@ -925,16 +839,15 @@ public class JSONArray {
} }
/** /**
* Write the contents of the JSONArray as JSON text to a writer. For * Write the contents of the JSONArray as JSON text to a writer. For compactness, no whitespace is added.
* compactness, no whitespace is added.
* <p/> * <p/>
* Warning: This method assumes that the data structure is acyclical. * Warning: This method assumes that the data structure is acyclical.
* *
* @param indentFactor * @param indentFactor The number of spaces to add to each level of indentation.
* The number of spaces to add to each level of indentation. * @param indent The indention of the top level.
* @param indent *
* The indention of the top level.
* @return The writer. * @return The writer.
*
* @throws JSONException * @throws JSONException
*/ */
Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException { Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException {
@ -945,8 +858,7 @@ public class JSONArray {
if (length == 1) { if (length == 1) {
JSONObject.writeValue(writer, this.myArrayList.get(0), indentFactor, indent); JSONObject.writeValue(writer, this.myArrayList.get(0), indentFactor, indent);
} } else if (length != 0) {
else if (length != 0) {
final int newindent = indent + indentFactor; final int newindent = indent + indentFactor;
for (int i = 0; i < length; i += 1) { for (int i = 0; i < length; i += 1) {
@ -967,8 +879,7 @@ public class JSONArray {
} }
writer.write(']'); writer.write(']');
return writer; return writer;
} } catch (final IOException e) {
catch (final IOException e) {
throw new JSONException(e); throw new JSONException(e);
} }
} }

View File

@ -13,8 +13,7 @@ public class JSONException extends RuntimeException {
/** /**
* Constructs a JSONException with an explanatory message. * Constructs a JSONException with an explanatory message.
* *
* @param message * @param message Detail about the reason for the exception.
* Detail about the reason for the exception.
*/ */
public JSONException(final String message) { public JSONException(final String message) {
super(message); super(message);
@ -23,8 +22,7 @@ public class JSONException extends RuntimeException {
/** /**
* Constructs a new JSONException with the specified cause. * Constructs a new JSONException with the specified cause.
* *
* @param cause * @param cause The cause.
* The cause.
*/ */
public JSONException(final Throwable cause) { public JSONException(final Throwable cause) {
super(cause.getMessage()); super(cause.getMessage());
@ -32,11 +30,9 @@ public class JSONException extends RuntimeException {
} }
/** /**
* Returns the cause of this exception or null if the cause is nonexistent * Returns the cause of this exception or null if the cause is nonexistent or unknown.
* or unknown.
* *
* @return the cause of this exception or null if the cause is nonexistent * @return the cause of this exception or null if the cause is nonexistent or unknown.
* or unknown.
*/ */
@Override @Override
public Throwable getCause() { public Throwable getCause() {

View File

@ -3,9 +3,8 @@ package com.intellectualcrafters.json;
import java.util.Iterator; import java.util.Iterator;
/** /**
* This provides static methods to convert an XML text into a JSONArray or * This provides static methods to convert an XML text into a JSONArray or JSONObject, and to covert a JSONArray or
* JSONObject, and to covert a JSONArray or JSONObject into an XML text using * JSONObject into an XML text using the JsonML transform.
* the JsonML transform.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -15,14 +14,12 @@ public class JSONML {
/** /**
* Parse XML values and store them in a JSONArray. * Parse XML values and store them in a JSONArray.
* *
* @param x * @param x The XMLTokener containing the source string.
* The XMLTokener containing the source string. * @param arrayForm true if array form, false if object form.
* @param arrayForm * @param ja The JSONArray that is containing the current tag or null if we are at the outermost level.
* true if array form, false if object form. *
* @param ja
* The JSONArray that is containing the current tag or null
* if we are at the outermost level.
* @return A JSONArray if the value is the outermost tag, otherwise null. * @return A JSONArray if the value is the outermost tag, otherwise null.
*
* @throws JSONException * @throws JSONException
*/ */
private static Object parse(final XMLTokener x, final boolean arrayForm, final JSONArray ja) throws JSONException { private static Object parse(final XMLTokener x, final boolean arrayForm, final JSONArray ja) throws JSONException {
@ -61,8 +58,7 @@ public class JSONML {
throw x.syntaxError("Misshaped close tag"); throw x.syntaxError("Misshaped close tag");
} }
return token; return token;
} } else if (token == XML.BANG) {
else if (token == XML.BANG) {
// <! // <!
@ -70,53 +66,43 @@ public class JSONML {
if (c == '-') { if (c == '-') {
if (x.next() == '-') { if (x.next() == '-') {
x.skipPast("-->"); x.skipPast("-->");
} } else {
else {
x.back(); x.back();
} }
} } else if (c == '[') {
else if (c == '[') {
token = x.nextToken(); token = x.nextToken();
if (token.equals("CDATA") && (x.next() == '[')) { if (token.equals("CDATA") && (x.next() == '[')) {
if (ja != null) { if (ja != null) {
ja.put(x.nextCDATA()); ja.put(x.nextCDATA());
} }
} } else {
else {
throw x.syntaxError("Expected 'CDATA['"); throw x.syntaxError("Expected 'CDATA['");
} }
} } else {
else {
i = 1; i = 1;
do { do {
token = x.nextMeta(); token = x.nextMeta();
if (token == null) { if (token == null) {
throw x.syntaxError("Missing '>' after '<!'."); throw x.syntaxError("Missing '>' after '<!'.");
} } else if (token == XML.LT) {
else if (token == XML.LT) {
i += 1; i += 1;
} } else if (token == XML.GT) {
else if (token == XML.GT) {
i -= 1; i -= 1;
} }
} while (i > 0);
} }
while (i > 0); } else if (token == XML.QUEST) {
}
}
else if (token == XML.QUEST) {
// <? // <?
x.skipPast("?>"); x.skipPast("?>");
} } else {
else {
throw x.syntaxError("Misshaped tag"); throw x.syntaxError("Misshaped tag");
} }
// Open tag < // Open tag <
} } else {
else {
if (!(token instanceof String)) { if (!(token instanceof String)) {
throw x.syntaxError("Bad tagName '" + token + "'."); throw x.syntaxError("Bad tagName '" + token + "'.");
} }
@ -128,8 +114,7 @@ public class JSONML {
if (ja != null) { if (ja != null) {
ja.put(newja); ja.put(newja);
} }
} } else {
else {
newjo.put("tagName", tagName); newjo.put("tagName", tagName);
if (ja != null) { if (ja != null) {
ja.put(newjo); ja.put(newjo);
@ -161,8 +146,7 @@ public class JSONML {
} }
newjo.accumulate(attribute, XML.stringToValue((String) token)); newjo.accumulate(attribute, XML.stringToValue((String) token));
token = null; token = null;
} } else {
else {
newjo.accumulate(attribute, ""); newjo.accumulate(attribute, "");
} }
} }
@ -179,16 +163,14 @@ public class JSONML {
if (ja == null) { if (ja == null) {
if (arrayForm) { if (arrayForm) {
return newja; return newja;
} } else {
else {
return newjo; return newjo;
} }
} }
// Content, between <...> and </...> // Content, between <...> and </...>
} } else {
else {
if (token != XML.GT) { if (token != XML.GT) {
throw x.syntaxError("Misshaped tag"); throw x.syntaxError("Misshaped tag");
} }
@ -204,16 +186,14 @@ public class JSONML {
if (ja == null) { if (ja == null) {
if (arrayForm) { if (arrayForm) {
return newja; return newja;
} } else {
else {
return newjo; return newjo;
} }
} }
} }
} }
} }
} } else {
else {
if (ja != null) { if (ja != null) {
ja.put(token instanceof String ? XML.stringToValue((String) token) : token); ja.put(token instanceof String ? XML.stringToValue((String) token) : token);
} }
@ -222,17 +202,15 @@ public class JSONML {
} }
/** /**
* Convert a well-formed (but not necessarily valid) XML string into a * Convert a well-formed (but not necessarily valid) XML string into a JSONArray using the JsonML transform. Each
* JSONArray using the JsonML transform. Each XML tag is represented as * XML tag is represented as a JSONArray in which the first element is the tag name. If the tag has attributes, then
* a JSONArray in which the first element is the tag name. If the tag has * the second element will be JSONObject containing the name/value pairs. If the tag contains children, then strings
* attributes, then the second element will be JSONObject containing the * and JSONArrays will represent the child tags. Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
* name/value pairs. If the tag contains children, then strings and *
* JSONArrays will represent the child tags. * @param string The source string.
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
* *
* @param string
* The source string.
* @return A JSONArray containing the structured data from the XML string. * @return A JSONArray containing the structured data from the XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final String string) throws JSONException { public static JSONArray toJSONArray(final String string) throws JSONException {
@ -240,17 +218,16 @@ public class JSONML {
} }
/** /**
* Convert a well-formed (but not necessarily valid) XML string into a * Convert a well-formed (but not necessarily valid) XML string into a JSONArray using the JsonML transform. Each
* JSONArray using the JsonML transform. Each XML tag is represented as * XML tag is represented as a JSONArray in which the first element is the tag name. If the tag has attributes, then
* a JSONArray in which the first element is the tag name. If the tag has * the second element will be JSONObject containing the name/value pairs. If the tag contains children, then strings
* attributes, then the second element will be JSONObject containing the * and JSONArrays will represent the child content and tags. Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code>
* name/value pairs. If the tag contains children, then strings and * are ignored.
* JSONArrays will represent the child content and tags. *
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored. * @param x An XMLTokener.
* *
* @param x
* An XMLTokener.
* @return A JSONArray containing the structured data from the XML string. * @return A JSONArray containing the structured data from the XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONArray toJSONArray(final XMLTokener x) throws JSONException { public static JSONArray toJSONArray(final XMLTokener x) throws JSONException {
@ -258,18 +235,17 @@ public class JSONML {
} }
/** /**
* Convert a well-formed (but not necessarily valid) XML string into a * Convert a well-formed (but not necessarily valid) XML string into a JSONObject using the JsonML transform. Each
* JSONObject using the JsonML transform. Each XML tag is represented as * XML tag is represented as a JSONObject with a "tagName" property. If the tag has attributes, then the attributes
* a JSONObject with a "tagName" property. If the tag has attributes, then * will be in the JSONObject as properties. If the tag contains children, the object will have a "childNodes"
* the attributes will be in the JSONObject as properties. If the tag * property which will be an array of strings and JsonML JSONObjects.
* contains children, the object will have a "childNodes" property which
* will be an array of strings and JsonML JSONObjects.
* <p/> * <p/>
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored. * Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
* *
* @param x * @param x An XMLTokener of the XML source text.
* An XMLTokener of the XML source text. *
* @return A JSONObject containing the structured data from the XML string. * @return A JSONObject containing the structured data from the XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final XMLTokener x) throws JSONException { public static JSONObject toJSONObject(final XMLTokener x) throws JSONException {
@ -277,18 +253,17 @@ public class JSONML {
} }
/** /**
* Convert a well-formed (but not necessarily valid) XML string into a * Convert a well-formed (but not necessarily valid) XML string into a JSONObject using the JsonML transform. Each
* JSONObject using the JsonML transform. Each XML tag is represented as * XML tag is represented as a JSONObject with a "tagName" property. If the tag has attributes, then the attributes
* a JSONObject with a "tagName" property. If the tag has attributes, then * will be in the JSONObject as properties. If the tag contains children, the object will have a "childNodes"
* the attributes will be in the JSONObject as properties. If the tag * property which will be an array of strings and JsonML JSONObjects.
* contains children, the object will have a "childNodes" property which
* will be an array of strings and JsonML JSONObjects.
* <p/> * <p/>
* Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored. * Comments, prologs, DTDs, and <code>&lt;[ [ ]]></code> are ignored.
* *
* @param string * @param string The XML source text.
* The XML source text. *
* @return A JSONObject containing the structured data from the XML string. * @return A JSONObject containing the structured data from the XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final String string) throws JSONException { public static JSONObject toJSONObject(final String string) throws JSONException {
@ -298,9 +273,10 @@ public class JSONML {
/** /**
* Reverse the JSONML transformation, making an XML text from a JSONArray. * Reverse the JSONML transformation, making an XML text from a JSONArray.
* *
* @param ja * @param ja A JSONArray.
* A JSONArray. *
* @return An XML string. * @return An XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONArray ja) throws JSONException { public static String toString(final JSONArray ja) throws JSONException {
@ -343,8 +319,7 @@ public class JSONML {
sb.append('"'); sb.append('"');
} }
} }
} } else {
else {
i = 1; i = 1;
} }
@ -354,8 +329,7 @@ public class JSONML {
if (i >= length) { if (i >= length) {
sb.append('/'); sb.append('/');
sb.append('>'); sb.append('>');
} } else {
else {
sb.append('>'); sb.append('>');
do { do {
object = ja.get(i); object = ja.get(i);
@ -363,16 +337,13 @@ public class JSONML {
if (object != null) { if (object != null) {
if (object instanceof String) { if (object instanceof String) {
sb.append(XML.escape(object.toString())); sb.append(XML.escape(object.toString()));
} } else if (object instanceof JSONObject) {
else if (object instanceof JSONObject) {
sb.append(toString((JSONObject) object)); sb.append(toString((JSONObject) object));
} } else if (object instanceof JSONArray) {
else if (object instanceof JSONArray) {
sb.append(toString((JSONArray) object)); sb.append(toString((JSONArray) object));
} }
} }
} } while (i < length);
while (i < length);
sb.append('<'); sb.append('<');
sb.append('/'); sb.append('/');
sb.append(tagName); sb.append(tagName);
@ -382,14 +353,14 @@ public class JSONML {
} }
/** /**
* Reverse the JSONML transformation, making an XML text from a JSONObject. * Reverse the JSONML transformation, making an XML text from a JSONObject. The JSONObject must contain a "tagName"
* The JSONObject must contain a "tagName" property. If it has children, * property. If it has children, then it must have a "childNodes" property containing an array of objects. The other
* then it must have a "childNodes" property containing an array of objects. * properties are attributes with string values.
* The other properties are attributes with string values. *
* @param jo A JSONObject.
* *
* @param jo
* A JSONObject.
* @return An XML string. * @return An XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final JSONObject jo) throws JSONException { public static String toString(final JSONObject jo) throws JSONException {
@ -439,8 +410,7 @@ public class JSONML {
if (ja == null) { if (ja == null) {
sb.append('/'); sb.append('/');
sb.append('>'); sb.append('>');
} } else {
else {
sb.append('>'); sb.append('>');
length = ja.length(); length = ja.length();
for (i = 0; i < length; i += 1) { for (i = 0; i < length; i += 1) {
@ -448,14 +418,11 @@ public class JSONML {
if (object != null) { if (object != null) {
if (object instanceof String) { if (object instanceof String) {
sb.append(XML.escape(object.toString())); sb.append(XML.escape(object.toString()));
} } else if (object instanceof JSONObject) {
else if (object instanceof JSONObject) {
sb.append(toString((JSONObject) object)); sb.append(toString((JSONObject) object));
} } else if (object instanceof JSONArray) {
else if (object instanceof JSONArray) {
sb.append(toString((JSONArray) object)); sb.append(toString((JSONArray) object));
} } else {
else {
sb.append(object.toString()); sb.append(object.toString());
} }
} }

View File

@ -1,18 +1,14 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* The <code>JSONString</code> interface allows a <code>toJSONString()</code> * The <code>JSONString</code> interface allows a <code>toJSONString()</code> method so that a class can change the
* method so that a class can change the behavior of * behavior of <code>JSONObject.toString()</code>, <code>JSONArray.toString()</code>, and
* <code>JSONObject.toString()</code>, <code>JSONArray.toString()</code>, * <code>JSONWriter.value(</code>Object<code>)</code>. The <code>toJSONString</code> method will be used instead of the
* and <code>JSONWriter.value(</code>Object<code>)</code>. The * default behavior of using the Object's <code>toString()</code> method and quoting the result.
* <code>toJSONString</code> method will be used instead of the default behavior
* of using the Object's <code>toString()</code> method and quoting the result.
*/ */
public interface JSONString { public interface JSONString {
/** /**
* The <code>toJSONString</code> method allows a class to produce its own * The <code>toJSONString</code> method allows a class to produce its own JSON serialization.
* JSON
* serialization.
* *
* @return A strictly syntactically correct JSON text. * @return A strictly syntactically correct JSON text.
*/ */

View File

@ -3,34 +3,30 @@ package com.intellectualcrafters.json;
import java.io.StringWriter; import java.io.StringWriter;
/** /**
* JSONStringer provides a quick and convenient way of producing JSON text. * JSONStringer provides a quick and convenient way of producing JSON text. The texts produced strictly conform to JSON
* The texts produced strictly conform to JSON syntax rules. No whitespace is * syntax rules. No whitespace is added, so the results are ready for transmission or storage. Each instance of
* added, so the results are ready for transmission or storage. Each instance of
* JSONStringer can produce one JSON text. * JSONStringer can produce one JSON text.
* <p/> * <p/>
* A JSONStringer instance provides a <code>value</code> method for appending * A JSONStringer instance provides a <code>value</code> method for appending values to the text, and a <code>key</code>
* values to the text, and a <code>key</code> method for adding keys before * method for adding keys before values in objects. There are <code>array</code> and <code>endArray</code> methods that
* values in objects. There are <code>array</code> and <code>endArray</code> * make and bound array values, and <code>object</code> and <code>endObject</code> methods which make and bound object
* methods that make and bound array values, and <code>object</code> and * values. All of these methods return the JSONWriter instance, permitting cascade style. For example,
* <code>endObject</code> methods which make and bound object values. All of * <p/>
* these methods return the JSONWriter instance, permitting cascade style. For
* example,
* <p/> * <p/>
*
* <pre> * <pre>
* myString = new JSONStringer().object().key(&quot;JSON&quot;).value(&quot;Hello, World!&quot;).endObject().toString(); * myString = new JSONStringer().object().key(&quot;JSON&quot;).value(&quot;Hello,
* World!&quot;).endObject().toString();
* </pre> * </pre>
* <p/> * <p/>
* which produces the string * which produces the string
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* {"JSON":"Hello, World!"} * {"JSON":"Hello, World!"}
* </pre> * </pre>
* <p/> * <p/>
* The first method called must be <code>array</code> or <code>object</code>. * The first method called must be <code>array</code> or <code>object</code>. There are no methods for adding commas or
* There are no methods for adding commas or colons. JSONStringer adds them for * colons. JSONStringer adds them for you. Objects and arrays can be nested up to 20 levels deep.
* you. Objects and arrays can be nested up to 20 levels deep.
* <p/> * <p/>
* This can sometimes be easier than using a JSONObject to build a string. * This can sometimes be easier than using a JSONObject to build a string.
* *
@ -46,11 +42,9 @@ public class JSONStringer extends JSONWriter {
} }
/** /**
* Return the JSON text. This method is used to obtain the product of the * Return the JSON text. This method is used to obtain the product of the JSONStringer instance. It will return
* JSONStringer instance. It will return <code>null</code> if there was a * <code>null</code> if there was a problem in the construction of the JSON text (such as the calls to
* problem in the construction of the JSON text (such as the calls to * <code>array</code> were not properly balanced with calls to <code>endArray</code>).
* <code>array</code> were not properly balanced with calls to
* <code>endArray</code>).
* *
* @return The JSON text. * @return The JSON text.
*/ */

View File

@ -1,16 +1,10 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
import java.io.BufferedReader; import java.io.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
/** /**
* A JSONTokener takes a source string and extracts characters and tokens from * A JSONTokener takes a source string and extracts characters and tokens from it. It is used by the JSONObject and
* it. It is used by the JSONObject and JSONArray constructors to parse * JSONArray constructors to parse JSON source strings.
* JSON source strings.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -28,8 +22,7 @@ public class JSONTokener {
/** /**
* Construct a JSONTokener from a Reader. * Construct a JSONTokener from a Reader.
* *
* @param reader * @param reader A reader.
* A reader.
*/ */
public JSONTokener(final Reader reader) { public JSONTokener(final Reader reader) {
this.reader = reader.markSupported() ? reader : new BufferedReader(reader); this.reader = reader.markSupported() ? reader : new BufferedReader(reader);
@ -44,8 +37,7 @@ public class JSONTokener {
/** /**
* Construct a JSONTokener from an InputStream. * Construct a JSONTokener from an InputStream.
* *
* @param inputStream * @param inputStream The source.
* The source.
*/ */
public JSONTokener(final InputStream inputStream) throws JSONException { public JSONTokener(final InputStream inputStream) throws JSONException {
this(new InputStreamReader(inputStream)); this(new InputStreamReader(inputStream));
@ -54,8 +46,7 @@ public class JSONTokener {
/** /**
* Construct a JSONTokener from a string. * Construct a JSONTokener from a string.
* *
* @param s * @param s A source string.
* A source string.
*/ */
public JSONTokener(final String s) { public JSONTokener(final String s) {
this(new StringReader(s)); this(new StringReader(s));
@ -64,9 +55,8 @@ public class JSONTokener {
/** /**
* Get the hex value of a character (base16). * Get the hex value of a character (base16).
* *
* @param c * @param c A character between '0' and '9' or between 'A' and 'F' or between 'a' and 'f'.
* A character between '0' and '9' or between 'A' and 'F' or *
* between 'a' and 'f'.
* @return An int between 0 and 15, or -1 if c was not a hex digit. * @return An int between 0 and 15, or -1 if c was not a hex digit.
*/ */
public static int dehexchar(final char c) { public static int dehexchar(final char c) {
@ -83,9 +73,8 @@ public class JSONTokener {
} }
/** /**
* Back up one character. This provides a sort of lookahead capability, * Back up one character. This provides a sort of lookahead capability, so that you can test for a digit or letter
* so that you can test for a digit or letter before attempting to parse * before attempting to parse the next number or identifier.
* the next number or identifier.
*/ */
public void back() throws JSONException { public void back() throws JSONException {
if (this.usePrevious || (this.index <= 0)) { if (this.usePrevious || (this.index <= 0)) {
@ -102,8 +91,7 @@ public class JSONTokener {
} }
/** /**
* Determine if the source string still contains characters that next() * Determine if the source string still contains characters that next() can consume.
* can consume.
* *
* @return true if not yet at the end of the source. * @return true if not yet at the end of the source.
*/ */
@ -126,12 +114,10 @@ public class JSONTokener {
if (this.usePrevious) { if (this.usePrevious) {
this.usePrevious = false; this.usePrevious = false;
c = this.previous; c = this.previous;
} } else {
else {
try { try {
c = this.reader.read(); c = this.reader.read();
} } catch (final IOException exception) {
catch (final IOException exception) {
throw new JSONException(exception); throw new JSONException(exception);
} }
@ -144,12 +130,10 @@ public class JSONTokener {
if (this.previous == '\r') { if (this.previous == '\r') {
this.line += 1; this.line += 1;
this.character = c == '\n' ? 0 : 1; this.character = c == '\n' ? 0 : 1;
} } else if (c == '\n') {
else if (c == '\n') {
this.line += 1; this.line += 1;
this.character = 0; this.character = 0;
} } else {
else {
this.character += 1; this.character += 1;
} }
this.previous = (char) c; this.previous = (char) c;
@ -157,14 +141,13 @@ public class JSONTokener {
} }
/** /**
* Consume the next character, and check that it matches a specified * Consume the next character, and check that it matches a specified character.
* character. *
* @param c The character to match.
* *
* @param c
* The character to match.
* @return The character. * @return The character.
* @throws JSONException *
* if the character does not match. * @throws JSONException if the character does not match.
*/ */
public char next(final char c) throws JSONException { public char next(final char c) throws JSONException {
final char n = this.next(); final char n = this.next();
@ -177,12 +160,11 @@ public class JSONTokener {
/** /**
* Get the next n characters. * Get the next n characters.
* *
* @param n * @param n The number of characters to take.
* The number of characters to take. *
* @return A string of n characters. * @return A string of n characters.
* @throws JSONException *
* Substring bounds error if there are not * @throws JSONException Substring bounds error if there are not n characters remaining in the source string.
* n characters remaining in the source string.
*/ */
public String next(final int n) throws JSONException { public String next(final int n) throws JSONException {
if (n == 0) { if (n == 0) {
@ -206,6 +188,7 @@ public class JSONTokener {
* Get the next char in the string, skipping whitespace. * Get the next char in the string, skipping whitespace.
* *
* @return A character, or 0 if there are no more characters. * @return A character, or 0 if there are no more characters.
*
* @throws JSONException * @throws JSONException
*/ */
public char nextClean() throws JSONException { public char nextClean() throws JSONException {
@ -218,18 +201,15 @@ public class JSONTokener {
} }
/** /**
* Return the characters up to the next close quote character. * Return the characters up to the next close quote character. Backslash processing is done. The formal JSON format
* Backslash processing is done. The formal JSON format does not * does not allow strings in single quotes, but an implementation is allowed to accept them.
* allow strings in single quotes, but an implementation is allowed to
* accept them.
* *
* @param quote * @param quote The quoting character, either <code>"</code> &nbsp;<small>(double quote)</small> or <code>'</code>
* The quoting character, either <code>"</code>
* &nbsp;<small>(double quote)</small> or <code>'</code>
* &nbsp;<small>(single quote)</small>. * &nbsp;<small>(single quote)</small>.
*
* @return A String. * @return A String.
* @throws JSONException *
* Unterminated string. * @throws JSONException Unterminated string.
*/ */
public String nextString(final char quote) throws JSONException { public String nextString(final char quote) throws JSONException {
char c; char c;
@ -282,11 +262,10 @@ public class JSONTokener {
} }
/** /**
* Get the text up but not including the specified character or the * Get the text up but not including the specified character or the end of line, whichever comes first.
* end of line, whichever comes first. *
* @param delimiter A delimiter character.
* *
* @param delimiter
* A delimiter character.
* @return A string. * @return A string.
*/ */
public String nextTo(final char delimiter) throws JSONException { public String nextTo(final char delimiter) throws JSONException {
@ -304,11 +283,11 @@ public class JSONTokener {
} }
/** /**
* Get the text up but not including one of the specified delimiter * Get the text up but not including one of the specified delimiter characters or the end of line, whichever comes
* characters or the end of line, whichever comes first. * first.
*
* @param delimiters A set of delimiter characters.
* *
* @param delimiters
* A set of delimiter characters.
* @return A string, trimmed. * @return A string, trimmed.
*/ */
public String nextTo(final String delimiters) throws JSONException { public String nextTo(final String delimiters) throws JSONException {
@ -327,12 +306,12 @@ public class JSONTokener {
} }
/** /**
* Get the next value. The value can be a Boolean, Double, Integer, * Get the next value. The value can be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the
* JSONArray, JSONObject, Long, or String, or the JSONObject.NULL object. * JSONObject.NULL object.
* *
* @return An object. * @return An object.
* @throws JSONException *
* If syntax error. * @throws JSONException If syntax error.
*/ */
public Object nextValue() throws JSONException { public Object nextValue() throws JSONException {
char c = this.nextClean(); char c = this.nextClean();
@ -373,13 +352,12 @@ public class JSONTokener {
} }
/** /**
* Skip characters until the next character is the requested character. * Skip characters until the next character is the requested character. If the requested character is not found, no
* If the requested character is not found, no characters are skipped. * characters are skipped.
* *
* @param to * @param to A character to skip to.
* A character to skip to. *
* @return The requested character, or zero if the requested character * @return The requested character, or zero if the requested character is not found.
* is not found.
*/ */
public char skipTo(final char to) throws JSONException { public char skipTo(final char to) throws JSONException {
char c; char c;
@ -397,10 +375,8 @@ public class JSONTokener {
this.line = startLine; this.line = startLine;
return c; return c;
} }
} } while (c != to);
while (c != to); } catch (final IOException exception) {
}
catch (final IOException exception) {
throw new JSONException(exception); throw new JSONException(exception);
} }
this.back(); this.back();
@ -410,8 +386,8 @@ public class JSONTokener {
/** /**
* Make a JSONException to signal a syntax error. * Make a JSONException to signal a syntax error.
* *
* @param message * @param message The error message.
* The error message. *
* @return A JSONException object, suitable for throwing * @return A JSONException object, suitable for throwing
*/ */
public JSONException syntaxError(final String message) { public JSONException syntaxError(final String message) {

View File

@ -4,34 +4,29 @@ import java.io.IOException;
import java.io.Writer; import java.io.Writer;
/** /**
* JSONWriter provides a quick and convenient way of producing JSON text. * JSONWriter provides a quick and convenient way of producing JSON text. The texts produced strictly conform to JSON
* The texts produced strictly conform to JSON syntax rules. No whitespace is * syntax rules. No whitespace is added, so the results are ready for transmission or storage. Each instance of
* added, so the results are ready for transmission or storage. Each instance of
* JSONWriter can produce one JSON text. * JSONWriter can produce one JSON text.
* <p/> * <p/>
* A JSONWriter instance provides a <code>value</code> method for appending * A JSONWriter instance provides a <code>value</code> method for appending values to the text, and a <code>key</code>
* values to the text, and a <code>key</code> method for adding keys before * method for adding keys before values in objects. There are <code>array</code> and <code>endArray</code> methods that
* values in objects. There are <code>array</code> and <code>endArray</code> * make and bound array values, and <code>object</code> and <code>endObject</code> methods which make and bound object
* methods that make and bound array values, and <code>object</code> and * values. All of these methods return the JSONWriter instance, permitting a cascade style. For example,
* <code>endObject</code> methods which make and bound object values. All of * <p/>
* these methods return the JSONWriter instance, permitting a cascade style. For
* example,
* <p/> * <p/>
*
* <pre> * <pre>
* new JSONWriter(myWriter).object().key(&quot;JSON&quot;).value(&quot;Hello, World!&quot;).endObject(); * new JSONWriter(myWriter).object().key(&quot;JSON&quot;).value(&quot;Hello, World!&quot;).endObject();
* </pre> * </pre>
* <p/> * <p/>
* which writes * which writes
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* {"JSON":"Hello, World!"} * {"JSON":"Hello, World!"}
* </pre> * </pre>
* <p/> * <p/>
* The first method called must be <code>array</code> or <code>object</code>. * The first method called must be <code>array</code> or <code>object</code>. There are no methods for adding commas or
* There are no methods for adding commas or colons. JSONWriter adds them for * colons. JSONWriter adds them for you. Objects and arrays can be nested up to 20 levels deep.
* you. Objects and arrays can be nested up to 20 levels deep.
* <p/> * <p/>
* This can sometimes be easier than using a JSONObject to build a string. * This can sometimes be easier than using a JSONObject to build a string.
* *
@ -49,17 +44,11 @@ public class JSONWriter {
*/ */
private final JSONObject stack[]; private final JSONObject stack[];
/** /**
* The current mode. Values: * The current mode. Values: 'a' (array), 'd' (done), 'i' (initial), 'k' (key), 'o' (object).
* 'a' (array),
* 'd' (done),
* 'i' (initial),
* 'k' (key),
* 'o' (object).
*/ */
protected char mode; protected char mode;
/** /**
* The comma flag determines if a comma should be output before the next * The comma flag determines if a comma should be output before the next value.
* value.
*/ */
private boolean comma; private boolean comma;
/** /**
@ -81,11 +70,11 @@ public class JSONWriter {
/** /**
* Append a value. * Append a value.
* *
* @param string * @param string A string value.
* A string value. *
* @return this * @return this
* @throws JSONException *
* If the value is out of sequence. * @throws JSONException If the value is out of sequence.
*/ */
private JSONWriter append(final String string) throws JSONException { private JSONWriter append(final String string) throws JSONException {
if (string == null) { if (string == null) {
@ -97,8 +86,7 @@ public class JSONWriter {
this.writer.write(','); this.writer.write(',');
} }
this.writer.write(string); this.writer.write(string);
} } catch (final IOException e) {
catch (final IOException e) {
throw new JSONException(e); throw new JSONException(e);
} }
if (this.mode == 'o') { if (this.mode == 'o') {
@ -111,16 +99,13 @@ public class JSONWriter {
} }
/** /**
* Begin appending a new array. All values until the balancing * Begin appending a new array. All values until the balancing <code>endArray</code> will be appended to this array.
* <code>endArray</code> will be appended to this array. The * The <code>endArray</code> method must be called to mark the array's end.
* <code>endArray</code> method must be called to mark the array's end.
* *
* @return this * @return this
* @throws JSONException *
* If the nesting is too deep, or if the object is * @throws JSONException If the nesting is too deep, or if the object is started in the wrong place (for example as
* started in the wrong place (for example as a key or after the * a key or after the end of the outermost array or object).
* end of the
* outermost array or object).
*/ */
public JSONWriter array() throws JSONException { public JSONWriter array() throws JSONException {
if ((this.mode == 'i') || (this.mode == 'o') || (this.mode == 'a')) { if ((this.mode == 'i') || (this.mode == 'o') || (this.mode == 'a')) {
@ -135,13 +120,12 @@ public class JSONWriter {
/** /**
* End something. * End something.
* *
* @param mode * @param mode Mode
* Mode * @param c Closing character
* @param c *
* Closing character
* @return this * @return this
* @throws JSONException *
* If unbalanced. * @throws JSONException If unbalanced.
*/ */
private JSONWriter end(final char mode, final char c) throws JSONException { private JSONWriter end(final char mode, final char c) throws JSONException {
if (this.mode != mode) { if (this.mode != mode) {
@ -150,8 +134,7 @@ public class JSONWriter {
this.pop(mode); this.pop(mode);
try { try {
this.writer.write(c); this.writer.write(c);
} } catch (final IOException e) {
catch (final IOException e) {
throw new JSONException(e); throw new JSONException(e);
} }
this.comma = true; this.comma = true;
@ -159,39 +142,37 @@ public class JSONWriter {
} }
/** /**
* End an array. This method most be called to balance calls to * End an array. This method most be called to balance calls to <code>array</code>.
* <code>array</code>.
* *
* @return this * @return this
* @throws JSONException *
* If incorrectly nested. * @throws JSONException If incorrectly nested.
*/ */
public JSONWriter endArray() throws JSONException { public JSONWriter endArray() throws JSONException {
return this.end('a', ']'); return this.end('a', ']');
} }
/** /**
* End an object. This method most be called to balance calls to * End an object. This method most be called to balance calls to <code>object</code>.
* <code>object</code>.
* *
* @return this * @return this
* @throws JSONException *
* If incorrectly nested. * @throws JSONException If incorrectly nested.
*/ */
public JSONWriter endObject() throws JSONException { public JSONWriter endObject() throws JSONException {
return this.end('k', '}'); return this.end('k', '}');
} }
/** /**
* Append a key. The key will be associated with the next value. In an * Append a key. The key will be associated with the next value. In an object, every value must be preceded by a
* object, every value must be preceded by a key. * key.
*
* @param string A key string.
* *
* @param string
* A key string.
* @return this * @return this
* @throws JSONException *
* If the key is out of place. For example, keys * @throws JSONException If the key is out of place. For example, keys do not belong in arrays or if the key is
* do not belong in arrays or if the key is null. * null.
*/ */
public JSONWriter key(final String string) throws JSONException { public JSONWriter key(final String string) throws JSONException {
if (string == null) { if (string == null) {
@ -208,8 +189,7 @@ public class JSONWriter {
this.comma = false; this.comma = false;
this.mode = 'o'; this.mode = 'o';
return this; return this;
} } catch (final IOException e) {
catch (final IOException e) {
throw new JSONException(e); throw new JSONException(e);
} }
} }
@ -217,16 +197,13 @@ public class JSONWriter {
} }
/** /**
* Begin appending a new object. All keys and values until the balancing * Begin appending a new object. All keys and values until the balancing <code>endObject</code> will be appended to
* <code>endObject</code> will be appended to this object. The * this object. The <code>endObject</code> method must be called to mark the object's end.
* <code>endObject</code> method must be called to mark the object's end.
* *
* @return this * @return this
* @throws JSONException *
* If the nesting is too deep, or if the object is * @throws JSONException If the nesting is too deep, or if the object is started in the wrong place (for example as
* started in the wrong place (for example as a key or after the * a key or after the end of the outermost array or object).
* end of the
* outermost array or object).
*/ */
public JSONWriter object() throws JSONException { public JSONWriter object() throws JSONException {
if (this.mode == 'i') { if (this.mode == 'i') {
@ -245,10 +222,9 @@ public class JSONWriter {
/** /**
* Pop an array or object scope. * Pop an array or object scope.
* *
* @param c * @param c The scope to close.
* The scope to close. *
* @throws JSONException * @throws JSONException If nesting is wrong.
* If nesting is wrong.
*/ */
private void pop(final char c) throws JSONException { private void pop(final char c) throws JSONException {
if (this.top <= 0) { if (this.top <= 0) {
@ -265,10 +241,9 @@ public class JSONWriter {
/** /**
* Push an array or object scope. * Push an array or object scope.
* *
* @param jo * @param jo The scope to open.
* The scope to open. *
* @throws JSONException * @throws JSONException If nesting is too deep.
* If nesting is too deep.
*/ */
private void push(final JSONObject jo) throws JSONException { private void push(final JSONObject jo) throws JSONException {
if (this.top >= maxdepth) { if (this.top >= maxdepth) {
@ -280,12 +255,12 @@ public class JSONWriter {
} }
/** /**
* Append either the value <code>true</code> or the value <code>false</code> * Append either the value <code>true</code> or the value <code>false</code> .
* . *
* @param b A boolean.
* *
* @param b
* A boolean.
* @return this * @return this
*
* @throws JSONException * @throws JSONException
*/ */
public JSONWriter value(final boolean b) throws JSONException { public JSONWriter value(final boolean b) throws JSONException {
@ -295,11 +270,11 @@ public class JSONWriter {
/** /**
* Append a double value. * Append a double value.
* *
* @param d * @param d A double.
* A double. *
* @return this * @return this
* @throws JSONException *
* If the number is not finite. * @throws JSONException If the number is not finite.
*/ */
public JSONWriter value(final double d) throws JSONException { public JSONWriter value(final double d) throws JSONException {
return this.value(new Double(d)); return this.value(new Double(d));
@ -308,9 +283,10 @@ public class JSONWriter {
/** /**
* Append a long value. * Append a long value.
* *
* @param l * @param l A long.
* A long. *
* @return this * @return this
*
* @throws JSONException * @throws JSONException
*/ */
public JSONWriter value(final long l) throws JSONException { public JSONWriter value(final long l) throws JSONException {
@ -320,13 +296,12 @@ public class JSONWriter {
/** /**
* Append an object value. * Append an object value.
* *
* @param object * @param object The object to append. It can be null, or a Boolean, Number, String, JSONObject, or JSONArray, or an
* The object to append. It can be null, or a Boolean, Number, * object that implements JSONString.
* String, JSONObject, or JSONArray, or an object that implements *
* JSONString.
* @return this * @return this
* @throws JSONException *
* If the value is out of sequence. * @throws JSONException If the value is out of sequence.
*/ */
public JSONWriter value(final Object object) throws JSONException { public JSONWriter value(final Object object) throws JSONException {
return this.append(JSONObject.valueToString(object)); return this.append(JSONObject.valueToString(object));

View File

@ -1,43 +1,35 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* Kim makes immutable eight bit Unicode strings. If the MSB of a byte is set, * Kim makes immutable eight bit Unicode strings. If the MSB of a byte is set, then the next byte is a continuation
* then the next byte is a continuation byte. The last byte of a character * byte. The last byte of a character never has the MSB reset. Every byte that is not the last byte has the MSB set. Kim
* never has the MSB reset. Every byte that is not the last byte has the MSB * stands for "Keep it minimal". A Unicode character is never longer than 3 bytes. Every byte contributes 7 bits to the
* set. Kim stands for "Keep it minimal". A Unicode character is never longer * character. ASCII is unmodified.
* than 3 bytes. Every byte contributes 7 bits to the character. ASCII is
* unmodified.
* <p/> * <p/>
* Kim UTF-8 one byte U+007F U+007F two bytes U+3FFF U+07FF three bytes U+10FFF * Kim UTF-8 one byte U+007F U+007F two bytes U+3FFF U+07FF three bytes U+10FFF U+FFFF four bytes U+10FFFF
* U+FFFF four bytes U+10FFFF
* <p/> * <p/>
* Characters in the ranges U+0800..U+3FFF and U+10000..U+10FFFF will be one * Characters in the ranges U+0800..U+3FFF and U+10000..U+10FFFF will be one byte smaller when encoded in Kim compared
* byte smaller when encoded in Kim compared to UTF-8. * to UTF-8.
* <p/> * <p/>
* Kim is beneficial when using scripts such as Old South Arabian, Aramaic, * Kim is beneficial when using scripts such as Old South Arabian, Aramaic, Avestan, Balinese, Batak, Bopomofo,
* Avestan, Balinese, Batak, Bopomofo, Buginese, Buhid, Carian, Cherokee, * Buginese, Buhid, Carian, Cherokee, Coptic, Cyrillic, Deseret, Egyptian Hieroglyphs, Ethiopic, Georgian, Glagolitic,
* Coptic, Cyrillic, Deseret, Egyptian Hieroglyphs, Ethiopic, Georgian, * Gothic, Hangul Jamo, Hanunoo, Hiragana, Kanbun, Kaithi, Kannada, Katakana, Kharoshthi, Khmer, Lao, Lepcha, Limbu,
* Glagolitic, Gothic, Hangul Jamo, Hanunoo, Hiragana, Kanbun, Kaithi, Kannada, * Lycian, Lydian, Malayalam, Mandaic, Meroitic, Miao, Mongolian, Myanmar, New Tai Lue, Ol Chiki, Old Turkic, Oriya,
* Katakana, Kharoshthi, Khmer, Lao, Lepcha, Limbu, Lycian, Lydian, Malayalam, * Osmanya, Pahlavi, Parthian, Phags-Pa, Phoenician, Samaritan, Sharada, Sinhala, Sora Sompeng, Tagalog, Tagbanwa,
* Mandaic, Meroitic, Miao, Mongolian, Myanmar, New Tai Lue, Ol Chiki, Old * Takri, Tai Le, Tai Tham, Tamil, Telugu, Thai, Tibetan, Tifinagh, UCAS.
* Turkic, Oriya, Osmanya, Pahlavi, Parthian, Phags-Pa, Phoenician, Samaritan,
* Sharada, Sinhala, Sora Sompeng, Tagalog, Tagbanwa, Takri, Tai Le, Tai Tham,
* Tamil, Telugu, Thai, Tibetan, Tifinagh, UCAS.
* <p/> * <p/>
* A kim object can be constructed from an ordinary UTF-16 string, or from a * A kim object can be constructed from an ordinary UTF-16 string, or from a byte array. A kim object can produce a
* byte array. A kim object can produce a UTF-16 string. * UTF-16 string.
* <p/> * <p/>
* As with UTF-8, it is possible to detect character boundaries within a byte * As with UTF-8, it is possible to detect character boundaries within a byte sequence. UTF-8 is one of the world's
* sequence. UTF-8 is one of the world's great inventions. While Kim is more * great inventions. While Kim is more efficient, it is not clear that it is worth the expense of transition.
* efficient, it is not clear that it is worth the expense of transition.
* *
* @version 2013-04-18 * @version 2013-04-18
*/ */
public class Kim { public class Kim {
/** /**
* The number of bytes in the kim. The number of bytes can be as much as * The number of bytes in the kim. The number of bytes can be as much as three times the number of characters.
* three times the number of characters.
*/ */
public int length = 0; public int length = 0;
/** /**
@ -56,12 +48,9 @@ public class Kim {
/** /**
* Make a kim from a portion of a byte array. * Make a kim from a portion of a byte array.
* *
* @param bytes * @param bytes A byte array.
* A byte array. * @param from The index of the first byte.
* @param from * @param thru The index of the last byte plus one.
* The index of the first byte.
* @param thru
* The index of the last byte plus one.
*/ */
public Kim(final byte[] bytes, final int from, final int thru) { public Kim(final byte[] bytes, final int from, final int thru) {
@ -88,25 +77,19 @@ public class Kim {
/** /**
* Make a kim from a byte array. * Make a kim from a byte array.
* *
* @param bytes * @param bytes The byte array.
* The byte array. * @param length The number of bytes.
* @param length
* The number of bytes.
*/ */
public Kim(final byte[] bytes, final int length) { public Kim(final byte[] bytes, final int length) {
this(bytes, 0, length); this(bytes, 0, length);
} }
/** /**
* Make a new kim from a substring of an existing kim. The coordinates are * Make a new kim from a substring of an existing kim. The coordinates are in byte units, not character units.
* in byte units, not character units.
* *
* @param kim * @param kim The source of bytes.
* The source of bytes. * @param from The point at which to take bytes.
* @param from * @param thru The point at which to stop taking bytes.
* The point at which to take bytes.
* @param thru
* The point at which to stop taking bytes.
*/ */
public Kim(final Kim kim, final int from, final int thru) { public Kim(final Kim kim, final int from, final int thru) {
this(kim.bytes, from, thru); this(kim.bytes, from, thru);
@ -115,10 +98,9 @@ public class Kim {
/** /**
* Make a kim from a string. * Make a kim from a string.
* *
* @param string * @param string The string.
* The string. *
* @throws JSONException * @throws JSONException if surrogate pair mismatch.
* if surrogate pair mismatch.
*/ */
public Kim(final String string) throws JSONException { public Kim(final String string) throws JSONException {
final int stringLength = string.length(); final int stringLength = string.length();
@ -133,11 +115,9 @@ public class Kim {
final int c = string.charAt(i); final int c = string.charAt(i);
if (c <= 0x7F) { if (c <= 0x7F) {
this.length += 1; this.length += 1;
} } else if (c <= 0x3FFF) {
else if (c <= 0x3FFF) {
this.length += 2; this.length += 2;
} } else {
else {
if ((c >= 0xD800) && (c <= 0xDFFF)) { if ((c >= 0xD800) && (c <= 0xDFFF)) {
i += 1; i += 1;
final int d = string.charAt(i); final int d = string.charAt(i);
@ -164,8 +144,7 @@ public class Kim {
sum += character; sum += character;
this.hashcode += sum; this.hashcode += sum;
at += 1; at += 1;
} } else if (character <= 0x3FFF) {
else if (character <= 0x3FFF) {
b = 0x80 | (character >>> 7); b = 0x80 | (character >>> 7);
this.bytes[at] = (byte) b; this.bytes[at] = (byte) b;
sum += b; sum += b;
@ -176,8 +155,7 @@ public class Kim {
sum += b; sum += b;
this.hashcode += sum; this.hashcode += sum;
at += 1; at += 1;
} } else {
else {
if ((character >= 0xD800) && (character <= 0xDBFF)) { if ((character >= 0xD800) && (character <= 0xDBFF)) {
i += 1; i += 1;
character = (((character & 0x3FF) << 10) | (string.charAt(i) & 0x3FF)) + 65536; character = (((character & 0x3FF) << 10) | (string.charAt(i) & 0x3FF)) + 65536;
@ -204,14 +182,13 @@ public class Kim {
} }
/** /**
* Returns the number of bytes needed to contain the character in Kim * Returns the number of bytes needed to contain the character in Kim format.
* format. *
* @param character a Unicode character between 0 and 0x10FFFF.
* *
* @param character
* a Unicode character between 0 and 0x10FFFF.
* @return 1, 2, or 3 * @return 1, 2, or 3
* @throws JSONException *
* if the character is not representable in a kim. * @throws JSONException if the character is not representable in a kim.
*/ */
public static int characterSize(final int character) throws JSONException { public static int characterSize(final int character) throws JSONException {
if ((character < 0) || (character > 0x10FFFF)) { if ((character < 0) || (character > 0x10FFFF)) {
@ -221,14 +198,12 @@ public class Kim {
} }
/** /**
* Returns the character at the specified index. The index refers to byte * Returns the character at the specified index. The index refers to byte values and ranges from 0 to length - 1.
* values and ranges from 0 to length - 1. The index of the next character * The index of the next character is at index + Kim.characterSize(kim.characterAt(index)).
* is at index + Kim.characterSize(kim.characterAt(index)).
* *
* @param at * @param at the index of the char value. The first character is at 0.
* the index of the char value. The first character is at 0. *
* @throws JSONException * @throws JSONException if at does not point to a valid character.
* if at does not point to a valid character.
* @returns a Unicode character between 0 and 0x10FFFF. * @returns a Unicode character between 0 and 0x10FFFF.
*/ */
public int characterAt(final int at) throws JSONException { public int characterAt(final int at) throws JSONException {
@ -243,8 +218,7 @@ public class Kim {
if (character > 0x7F) { if (character > 0x7F) {
return character; return character;
} }
} } else {
else {
final int c2 = get(at + 2); final int c2 = get(at + 2);
character = ((c & 0x7F) << 14) | ((c1 & 0x7F) << 7) | c2; character = ((c & 0x7F) << 14) | ((c1 & 0x7F) << 7) | c2;
if (((c2 & 0x80) == 0) && (character > 0x3FFF) && (character <= 0x10FFFF) && ((character < 0xD800) || (character > 0xDFFF))) { if (((c2 & 0x80) == 0) && (character > 0x3FFF) && (character <= 0x10FFFF) && ((character < 0xD800) || (character > 0xDFFF))) {
@ -257,10 +231,9 @@ public class Kim {
/** /**
* Copy the contents of this kim to a byte array. * Copy the contents of this kim to a byte array.
* *
* @param bytes * @param bytes A byte array of sufficient size.
* A byte array of sufficient size. * @param at The position within the byte array to take the byes.
* @param at *
* The position within the byte array to take the byes.
* @return The position immediately after the copy. * @return The position immediately after the copy.
*/ */
public int copy(final byte[] bytes, final int at) { public int copy(final byte[] bytes, final int at) {
@ -269,13 +242,11 @@ public class Kim {
} }
/** /**
* Two kim objects containing exactly the same bytes in the same order are * Two kim objects containing exactly the same bytes in the same order are equal to each other.
* equal to each other.
* *
* @param obj * @param obj the other kim with which to compare.
* the other kim with which to compare. *
* @returns true if this and obj are both kim objects containing identical * @returns true if this and obj are both kim objects containing identical byte sequences.
* byte sequences.
*/ */
@Override @Override
public boolean equals(final Object obj) { public boolean equals(final Object obj) {
@ -295,11 +266,11 @@ public class Kim {
/** /**
* Get a byte from a kim. * Get a byte from a kim.
* *
* @param at * @param at The position of the byte. The first byte is at 0.
* The position of the byte. The first byte is at 0. *
* @return The byte. * @return The byte.
* @throws JSONException *
* if there is no byte at that position. * @throws JSONException if there is no byte at that position.
*/ */
public int get(final int at) throws JSONException { public int get(final int at) throws JSONException {
if ((at < 0) || (at > this.length)) { if ((at < 0) || (at > this.length)) {
@ -317,13 +288,12 @@ public class Kim {
} }
/** /**
* Produce a UTF-16 String from this kim. The number of codepoints in the * Produce a UTF-16 String from this kim. The number of codepoints in the string will not be greater than the number
* string will not be greater than the number of bytes in the kim, although * of bytes in the kim, although it could be less.
* it could be less.
* *
* @return The string. A kim memoizes its string representation. * @return The string. A kim memoizes its string representation.
* @throws JSONException *
* if the kim is not valid. * @throws JSONException if the kim is not valid.
*/ */
@Override @Override
public String toString() throws JSONException { public String toString() throws JSONException {
@ -336,8 +306,7 @@ public class Kim {
if (c < 0x10000) { if (c < 0x10000) {
chars[length] = (char) c; chars[length] = (char) c;
length += 1; length += 1;
} } else {
else {
chars[length] = (char) (0xD800 | ((c - 0x10000) >>> 10)); chars[length] = (char) (0xD800 | ((c - 0x10000) >>> 10));
length += 1; length += 1;
chars[length] = (char) (0xDC00 | (c & 0x03FF)); chars[length] = (char) (0xDC00 | (c & 0x03FF));

View File

@ -33,12 +33,12 @@ import java.util.Properties;
*/ */
public class Property { public class Property {
/** /**
* Converts a property file object into a JSONObject. The property file * Converts a property file object into a JSONObject. The property file object is a table of name value pairs.
* object is a table of name value pairs. *
* @param properties java.util.Properties
* *
* @param properties
* java.util.Properties
* @return JSONObject * @return JSONObject
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final java.util.Properties properties) throws JSONException { public static JSONObject toJSONObject(final java.util.Properties properties) throws JSONException {
@ -56,9 +56,10 @@ public class Property {
/** /**
* Converts the JSONObject into a property file object. * Converts the JSONObject into a property file object.
* *
* @param jo * @param jo JSONObject
* JSONObject *
* @return java.util.Properties * @return java.util.Properties
*
* @throws JSONException * @throws JSONException
*/ */
public static Properties toProperties(final JSONObject jo) throws JSONException { public static Properties toProperties(final JSONObject jo) throws JSONException {

View File

@ -3,8 +3,7 @@ package com.intellectualcrafters.json;
import java.util.Iterator; import java.util.Iterator;
/** /**
* This provides static methods to convert an XML text into a JSONObject, * This provides static methods to convert an XML text into a JSONObject, and to covert a JSONObject into an XML text.
* and to covert a JSONObject into an XML text.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -59,7 +58,7 @@ public class XML {
/** /**
* Replace special characters with XML escapes: * Replace special characters with XML escapes:
* <p/> * <p/>
* * <p/>
* <pre> * <pre>
* &amp; <small>(ampersand)</small> is replaced by &amp;amp; * &amp; <small>(ampersand)</small> is replaced by &amp;amp;
* &lt; <small>(less than)</small> is replaced by &amp;lt; * &lt; <small>(less than)</small> is replaced by &amp;lt;
@ -67,8 +66,8 @@ public class XML {
* &quot; <small>(double quote)</small> is replaced by &amp;quot; * &quot; <small>(double quote)</small> is replaced by &amp;quot;
* </pre> * </pre>
* *
* @param string * @param string The string to be escaped.
* The string to be escaped. *
* @return The escaped string. * @return The escaped string.
*/ */
public static String escape(final String string) { public static String escape(final String string) {
@ -99,11 +98,10 @@ public class XML {
} }
/** /**
* Throw an exception if the string contains whitespace. * Throw an exception if the string contains whitespace. Whitespace is not allowed in tagNames and attributes.
* Whitespace is not allowed in tagNames and attributes. *
* @param string A string.
* *
* @param string
* A string.
* @throws JSONException * @throws JSONException
*/ */
public static void noSpace(final String string) throws JSONException { public static void noSpace(final String string) throws JSONException {
@ -122,13 +120,12 @@ public class XML {
/** /**
* Scan the content following the named tag, attaching it to the context. * Scan the content following the named tag, attaching it to the context.
* *
* @param x * @param x The XMLTokener containing the source string.
* The XMLTokener containing the source string. * @param context The JSONObject that will include the new material.
* @param context * @param name The tag name.
* The JSONObject that will include the new material. *
* @param name
* The tag name.
* @return true if the close tag is processed. * @return true if the close tag is processed.
*
* @throws JSONException * @throws JSONException
*/ */
private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException { private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException {
@ -161,8 +158,7 @@ public class XML {
return false; return false;
} }
x.back(); x.back();
} } else if (c == '[') {
else if (c == '[') {
token = x.nextToken(); token = x.nextToken();
if ("CDATA".equals(token)) { if ("CDATA".equals(token)) {
if (x.next() == '[') { if (x.next() == '[') {
@ -180,25 +176,20 @@ public class XML {
token = x.nextMeta(); token = x.nextMeta();
if (token == null) { if (token == null) {
throw x.syntaxError("Missing '>' after '<!'."); throw x.syntaxError("Missing '>' after '<!'.");
} } else if (token == LT) {
else if (token == LT) {
i += 1; i += 1;
} } else if (token == GT) {
else if (token == GT) {
i -= 1; i -= 1;
} }
} } while (i > 0);
while (i > 0);
return false; return false;
} } else if (token == QUEST) {
else if (token == QUEST) {
// <? // <?
x.skipPast("?>"); x.skipPast("?>");
return false; return false;
} } else if (token == SLASH) {
else if (token == SLASH) {
// Close tag </ // Close tag </
@ -214,14 +205,12 @@ public class XML {
} }
return true; return true;
} } else if (token instanceof Character) {
else if (token instanceof Character) {
throw x.syntaxError("Misshaped tag"); throw x.syntaxError("Misshaped tag");
// Open tag < // Open tag <
} } else {
else {
tagName = (String) token; tagName = (String) token;
token = null; token = null;
jsonobject = new JSONObject(); jsonobject = new JSONObject();
@ -242,30 +231,26 @@ public class XML {
} }
jsonobject.accumulate(string, XML.stringToValue((String) token)); jsonobject.accumulate(string, XML.stringToValue((String) token));
token = null; token = null;
} } else {
else {
jsonobject.accumulate(string, ""); jsonobject.accumulate(string, "");
} }
// Empty tag <.../> // Empty tag <.../>
} } else if (token == SLASH) {
else if (token == SLASH) {
if (x.nextToken() != GT) { if (x.nextToken() != GT) {
throw x.syntaxError("Misshaped tag"); throw x.syntaxError("Misshaped tag");
} }
if (jsonobject.length() > 0) { if (jsonobject.length() > 0) {
context.accumulate(tagName, jsonobject); context.accumulate(tagName, jsonobject);
} } else {
else {
context.accumulate(tagName, ""); context.accumulate(tagName, "");
} }
return false; return false;
// Content, between <...> and </...> // Content, between <...> and </...>
} } else if (token == GT) {
else if (token == GT) {
for (; ; ) { for (; ; ) {
token = x.nextContent(); token = x.nextContent();
if (token == null) { if (token == null) {
@ -273,8 +258,7 @@ public class XML {
throw x.syntaxError("Unclosed tag " + tagName); throw x.syntaxError("Unclosed tag " + tagName);
} }
return false; return false;
} } else if (token instanceof String) {
else if (token instanceof String) {
string = (String) token; string = (String) token;
if (string.length() > 0) { if (string.length() > 0) {
jsonobject.accumulate("content", XML.stringToValue(string)); jsonobject.accumulate("content", XML.stringToValue(string));
@ -282,24 +266,20 @@ public class XML {
// Nested element // Nested element
} } else if (token == LT) {
else if (token == LT) {
if (parse(x, jsonobject, tagName)) { if (parse(x, jsonobject, tagName)) {
if (jsonobject.length() == 0) { if (jsonobject.length() == 0) {
context.accumulate(tagName, ""); context.accumulate(tagName, "");
} } else if ((jsonobject.length() == 1) && (jsonobject.opt("content") != null)) {
else if ((jsonobject.length() == 1) && (jsonobject.opt("content") != null)) {
context.accumulate(tagName, jsonobject.opt("content")); context.accumulate(tagName, jsonobject.opt("content"));
} } else {
else {
context.accumulate(tagName, jsonobject); context.accumulate(tagName, jsonobject);
} }
return false; return false;
} }
} }
} }
} } else {
else {
throw x.syntaxError("Misshaped tag"); throw x.syntaxError("Misshaped tag");
} }
} }
@ -307,14 +287,12 @@ public class XML {
} }
/** /**
* Try to convert a string into a number, boolean, or null. If the string * Try to convert a string into a number, boolean, or null. If the string can't be converted, return the string.
* can't be converted, return the string. This is much less ambitious than * This is much less ambitious than JSONObject.stringToValue, especially because it does not attempt to convert plus
* JSONObject.stringToValue, especially because it does not attempt to * forms, octal forms, hex forms, or E forms lacking decimal points.
* convert plus forms, octal forms, hex forms, or E forms lacking decimal *
* points. * @param string A String.
* *
* @param string
* A String.
* @return A simple JSON value. * @return A simple JSON value.
*/ */
public static Object stringToValue(final String string) { public static Object stringToValue(final String string) {
@ -340,34 +318,30 @@ public class XML {
return value; return value;
} }
} }
} } catch (final Exception ignore) {
catch (final Exception ignore) {
try { try {
final Double value = new Double(string); final Double value = new Double(string);
if (value.toString().equals(string)) { if (value.toString().equals(string)) {
return value; return value;
} }
} } catch (final Exception ignoreAlso) {
catch (final Exception ignoreAlso) {
} }
} }
return string; return string;
} }
/** /**
* Convert a well-formed (but not necessarily valid) XML string into a * Convert a well-formed (but not necessarily valid) XML string into a JSONObject. Some information may be lost in
* JSONObject. Some information may be lost in this transformation * this transformation because JSON is a data format and XML is a document format. XML uses elements, attributes,
* because JSON is a data format and XML is a document format. XML uses * and content text, while JSON uses unordered collections of name/value pairs and arrays of values. JSON does not
* elements, attributes, and content text, while JSON uses unordered * does not like to distinguish between elements and attributes. Sequences of similar elements are represented as
* collections of name/value pairs and arrays of values. JSON does not * JSONArrays. Content text may be placed in a "content" member. Comments, prologs, DTDs, and <code>&lt;[ [
* does not like to distinguish between elements and attributes. * ]]></code> are ignored.
* Sequences of similar elements are represented as JSONArrays. Content *
* text may be placed in a "content" member. Comments, prologs, DTDs, and * @param string The source string.
* <code>&lt;[ [ ]]></code> are ignored.
* *
* @param string
* The source string.
* @return A JSONObject containing the structured data from the XML string. * @return A JSONObject containing the structured data from the XML string.
*
* @throws JSONException * @throws JSONException
*/ */
public static JSONObject toJSONObject(final String string) throws JSONException { public static JSONObject toJSONObject(final String string) throws JSONException {
@ -382,9 +356,10 @@ public class XML {
/** /**
* Convert a JSONObject into a well-formed, element-normal XML string. * Convert a JSONObject into a well-formed, element-normal XML string.
* *
* @param object * @param object A JSONObject.
* A JSONObject. *
* @return A string. * @return A string.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(final Object object) throws JSONException { public static String toString(final Object object) throws JSONException {
@ -394,11 +369,11 @@ public class XML {
/** /**
* Convert a JSONObject into a well-formed, element-normal XML string. * Convert a JSONObject into a well-formed, element-normal XML string.
* *
* @param object * @param object A JSONObject.
* A JSONObject. * @param tagName The optional name of the enclosing tag.
* @param tagName *
* The optional name of the enclosing tag.
* @return A string. * @return A string.
*
* @throws JSONException * @throws JSONException
*/ */
public static String toString(Object object, final String tagName) throws JSONException { public static String toString(Object object, final String tagName) throws JSONException {
@ -445,15 +420,13 @@ public class XML {
} }
sb.append(escape(ja.get(i).toString())); sb.append(escape(ja.get(i).toString()));
} }
} } else {
else {
sb.append(escape(value.toString())); sb.append(escape(value.toString()));
} }
// Emit an array of similar keys // Emit an array of similar keys
} } else if (value instanceof JSONArray) {
else if (value instanceof JSONArray) {
ja = (JSONArray) value; ja = (JSONArray) value;
length = ja.length(); length = ja.length();
for (i = 0; i < length; i += 1) { for (i = 0; i < length; i += 1) {
@ -466,21 +439,18 @@ public class XML {
sb.append("</"); sb.append("</");
sb.append(key); sb.append(key);
sb.append('>'); sb.append('>');
} } else {
else {
sb.append(toString(value, key)); sb.append(toString(value, key));
} }
} }
} } else if ("".equals(value)) {
else if ("".equals(value)) {
sb.append('<'); sb.append('<');
sb.append(key); sb.append(key);
sb.append("/>"); sb.append("/>");
// Emit a new tag <k> // Emit a new tag <k>
} } else {
else {
sb.append(toString(value, key)); sb.append(toString(value, key));
} }
} }
@ -498,8 +468,7 @@ public class XML {
// a place // a place
// where XML is lacking, synthesize an <array> element. // where XML is lacking, synthesize an <array> element.
} } else {
else {
if (object.getClass().isArray()) { if (object.getClass().isArray()) {
object = new JSONArray(object); object = new JSONArray(object);
} }
@ -510,8 +479,7 @@ public class XML {
sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName)); sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName));
} }
return sb.toString(); return sb.toString();
} } else {
else {
string = (object == null) ? "null" : escape(object.toString()); string = (object == null) ? "null" : escape(object.toString());
return (tagName == null) ? "\"" + string + "\"" : (string.length() == 0) ? "<" + tagName + "/>" : "<" + tagName + ">" + string + "</" + tagName + ">"; return (tagName == null) ? "\"" + string + "\"" : (string.length() == 0) ? "<" + tagName + "/>" : "<" + tagName + ">" + string + "</" + tagName + ">";
} }

View File

@ -1,8 +1,7 @@
package com.intellectualcrafters.json; package com.intellectualcrafters.json;
/** /**
* The XMLTokener extends the JSONTokener to provide additional methods * The XMLTokener extends the JSONTokener to provide additional methods for the parsing of XML texts.
* for the parsing of XML texts.
* *
* @author JSON.org * @author JSON.org
* @version 2014-05-03 * @version 2014-05-03
@ -10,8 +9,7 @@ package com.intellectualcrafters.json;
public class XMLTokener extends JSONTokener { public class XMLTokener extends JSONTokener {
/** /**
* The table of entity values. It initially contains Character values for * The table of entity values. It initially contains Character values for amp, apos, gt, lt, quot.
* amp, apos, gt, lt, quot.
*/ */
public static final java.util.HashMap<String, Character> entity; public static final java.util.HashMap<String, Character> entity;
@ -27,8 +25,7 @@ public class XMLTokener extends JSONTokener {
/** /**
* Construct an XMLTokener from a string. * Construct an XMLTokener from a string.
* *
* @param s * @param s A source string.
* A source string.
*/ */
public XMLTokener(final String s) { public XMLTokener(final String s) {
super(s); super(s);
@ -38,8 +35,8 @@ public class XMLTokener extends JSONTokener {
* Get the text in the CDATA block. * Get the text in the CDATA block.
* *
* @return The string up to the <code>]]&gt;</code>. * @return The string up to the <code>]]&gt;</code>.
* @throws JSONException *
* If the <code>]]&gt;</code> is not found. * @throws JSONException If the <code>]]&gt;</code> is not found.
*/ */
public String nextCDATA() throws JSONException { public String nextCDATA() throws JSONException {
char c; char c;
@ -60,12 +57,11 @@ public class XMLTokener extends JSONTokener {
} }
/** /**
* Get the next XML outer token, trimming whitespace. There are two kinds * Get the next XML outer token, trimming whitespace. There are two kinds of tokens: the '<' character which begins
* of tokens: the '<' character which begins a markup tag, and the content * a markup tag, and the content text between markup tags.
* text between markup tags. *
* @return A string, or a '<' Character, or null if there is no more source text.
* *
* @return A string, or a '<' Character, or null if there is no more
* source text.
* @throws JSONException * @throws JSONException
*/ */
public Object nextContent() throws JSONException { public Object nextContent() throws JSONException {
@ -73,8 +69,7 @@ public class XMLTokener extends JSONTokener {
StringBuilder sb; StringBuilder sb;
do { do {
c = next(); c = next();
} } while (Character.isWhitespace(c));
while (Character.isWhitespace(c));
if (c == 0) { if (c == 0) {
return null; return null;
} }
@ -89,8 +84,7 @@ public class XMLTokener extends JSONTokener {
} }
if (c == '&') { if (c == '&') {
sb.append(nextEntity(c)); sb.append(nextEntity(c));
} } else {
else {
sb.append(c); sb.append(c);
} }
c = next(); c = next();
@ -98,14 +92,14 @@ public class XMLTokener extends JSONTokener {
} }
/** /**
* Return the next entity. These entities are translated to Characters: * Return the next entity. These entities are translated to Characters: <code>&amp; &apos; &gt; &lt;
* <code>&amp; &apos; &gt; &lt; &quot;</code>. * &quot;</code>.
*
* @param ampersand An ampersand character.
* *
* @param ampersand
* An ampersand character.
* @return A Character or an entity String if the entity is not recognized. * @return A Character or an entity String if the entity is not recognized.
* @throws JSONException *
* If missing ';' in XML entity. * @throws JSONException If missing ';' in XML entity.
*/ */
public Object nextEntity(final char ampersand) throws JSONException { public Object nextEntity(final char ampersand) throws JSONException {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
@ -113,11 +107,9 @@ public class XMLTokener extends JSONTokener {
final char c = next(); final char c = next();
if (Character.isLetterOrDigit(c) || (c == '#')) { if (Character.isLetterOrDigit(c) || (c == '#')) {
sb.append(Character.toLowerCase(c)); sb.append(Character.toLowerCase(c));
} } else if (c == ';') {
else if (c == ';') {
break; break;
} } else {
else {
throw syntaxError("Missing ';' in XML entity: &" + sb); throw syntaxError("Missing ';' in XML entity: &" + sb);
} }
} }
@ -127,24 +119,19 @@ public class XMLTokener extends JSONTokener {
} }
/** /**
* Returns the next XML meta token. This is used for skipping over <!...> * Returns the next XML meta token. This is used for skipping over <!...> and <?...?> structures.
* and <?...?> structures.
* *
* @return Syntax characters (<code>< > / = ! ?</code>) are returned as * @return Syntax characters (<code>< > / = ! ?</code>) are returned as Character, and strings and names are
* Character, and strings and names are returned as Boolean. We * returned as Boolean. We don't care what the values actually are.
* don't care *
* what the values actually are. * @throws JSONException If a string is not properly closed or if the XML is badly structured.
* @throws JSONException
* If a string is not properly closed or if the XML
* is badly structured.
*/ */
public Object nextMeta() throws JSONException { public Object nextMeta() throws JSONException {
char c; char c;
char q; char q;
do { do {
c = next(); c = next();
} } while (Character.isWhitespace(c));
while (Character.isWhitespace(c));
switch (c) { switch (c) {
case 0: case 0:
throw syntaxError("Misshaped meta tag"); throw syntaxError("Misshaped meta tag");
@ -196,14 +183,12 @@ public class XMLTokener extends JSONTokener {
} }
/** /**
* Get the next XML Token. These tokens are found inside of angle * Get the next XML Token. These tokens are found inside of angle brackets. It may be one of these characters:
* brackets. It may be one of these characters: <code>/ > = ! ?</code> or it * <code>/ > = ! ?</code> or it may be a string wrapped in single quotes or double quotes, or it may be a name.
* may be a string wrapped in single quotes or double quotes, or it may be a
* name.
* *
* @return a String or a Character. * @return a String or a Character.
* @throws JSONException *
* If the XML is not well formed. * @throws JSONException If the XML is not well formed.
*/ */
public Object nextToken() throws JSONException { public Object nextToken() throws JSONException {
char c; char c;
@ -211,8 +196,7 @@ public class XMLTokener extends JSONTokener {
StringBuilder sb; StringBuilder sb;
do { do {
c = next(); c = next();
} } while (Character.isWhitespace(c));
while (Character.isWhitespace(c));
switch (c) { switch (c) {
case 0: case 0:
throw syntaxError("Misshaped element"); throw syntaxError("Misshaped element");
@ -245,8 +229,7 @@ public class XMLTokener extends JSONTokener {
} }
if (c == '&') { if (c == '&') {
sb.append(nextEntity(c)); sb.append(nextEntity(c));
} } else {
else {
sb.append(c); sb.append(c);
} }
} }
@ -283,12 +266,11 @@ public class XMLTokener extends JSONTokener {
} }
/** /**
* Skip characters until past the requested string. * Skip characters until past the requested string. If it is not found, we are left at the end of the source with a
* If it is not found, we are left at the end of the source with a result of * result of false.
* false. *
* @param to A string to skip past.
* *
* @param to
* A string to skip past.
* @throws JSONException * @throws JSONException
*/ */
public boolean skipPast(final String to) throws JSONException { public boolean skipPast(final String to) throws JSONException {

View File

@ -21,38 +21,31 @@
package com.intellectualcrafters.plot; package com.intellectualcrafters.plot;
import java.io.File; import com.intellectualcrafters.plot.commands.Auto;
import java.io.FileWriter; import com.intellectualcrafters.plot.commands.MainCommand;
import java.io.IOException; import com.intellectualcrafters.plot.config.C;
import java.sql.Connection; import com.intellectualcrafters.plot.config.ConfigurationNode;
import java.sql.DatabaseMetaData; import com.intellectualcrafters.plot.config.Settings;
import java.sql.ResultSet; import com.intellectualcrafters.plot.database.*;
import java.sql.SQLException; import com.intellectualcrafters.plot.events.PlayerTeleportToPlotEvent;
import java.util.ArrayList; import com.intellectualcrafters.plot.events.PlotDeleteEvent;
import java.util.Arrays; import com.intellectualcrafters.plot.flag.AbstractFlag;
import java.util.Collection; import com.intellectualcrafters.plot.flag.FlagManager;
import java.util.Date; import com.intellectualcrafters.plot.generator.DefaultPlotManager;
import java.util.HashMap; import com.intellectualcrafters.plot.generator.DefaultPlotWorld;
import java.util.HashSet; import com.intellectualcrafters.plot.generator.WorldGenerator;
import java.util.LinkedHashMap; import com.intellectualcrafters.plot.listeners.*;
import java.util.LinkedHashSet; import com.intellectualcrafters.plot.object.*;
import java.util.List; import com.intellectualcrafters.plot.util.*;
import java.util.Map; import com.intellectualcrafters.plot.util.Logger.LogLevel;
import java.util.Map.Entry; import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper;
import java.util.Set; import com.intellectualcrafters.plot.uuid.PlotUUIDSaver;
import java.util.UUID; import com.intellectualcrafters.plot.uuid.UUIDSaver;
import java.util.concurrent.TimeUnit; import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import me.confuser.barapi.BarAPI; import me.confuser.barapi.BarAPI;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@ -61,51 +54,16 @@ import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.intellectualcrafters.plot.commands.Auto; import java.io.File;
import com.intellectualcrafters.plot.commands.MainCommand; import java.io.FileWriter;
import com.intellectualcrafters.plot.config.C; import java.io.IOException;
import com.intellectualcrafters.plot.config.ConfigurationNode; import java.sql.Connection;
import com.intellectualcrafters.plot.config.Settings; import java.sql.DatabaseMetaData;
import com.intellectualcrafters.plot.database.DBFunc; import java.sql.ResultSet;
import com.intellectualcrafters.plot.database.MySQL; import java.sql.SQLException;
import com.intellectualcrafters.plot.database.PlotMeConverter; import java.util.*;
import com.intellectualcrafters.plot.database.SQLManager; import java.util.Map.Entry;
import com.intellectualcrafters.plot.database.SQLite; import java.util.concurrent.TimeUnit;
import com.intellectualcrafters.plot.events.PlayerTeleportToPlotEvent;
import com.intellectualcrafters.plot.events.PlotDeleteEvent;
import com.intellectualcrafters.plot.flag.AbstractFlag;
import com.intellectualcrafters.plot.flag.FlagManager;
import com.intellectualcrafters.plot.generator.DefaultPlotManager;
import com.intellectualcrafters.plot.generator.DefaultPlotWorld;
import com.intellectualcrafters.plot.generator.WorldGenerator;
import com.intellectualcrafters.plot.listeners.EntityListener;
import com.intellectualcrafters.plot.listeners.ForceFieldListener;
import com.intellectualcrafters.plot.listeners.InventoryListener;
import com.intellectualcrafters.plot.listeners.PlayerEvents;
import com.intellectualcrafters.plot.listeners.PlotListener;
import com.intellectualcrafters.plot.listeners.PlotPlusListener;
import com.intellectualcrafters.plot.listeners.WorldEditListener;
import com.intellectualcrafters.plot.listeners.WorldGuardListener;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.ConsoleColors;
import com.intellectualcrafters.plot.util.Lag;
import com.intellectualcrafters.plot.util.Logger;
import com.intellectualcrafters.plot.util.Logger.LogLevel;
import com.intellectualcrafters.plot.util.Metrics;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SendChunk;
import com.intellectualcrafters.plot.util.SetBlockFast;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper;
import com.intellectualcrafters.plot.uuid.PlotUUIDSaver;
import com.intellectualcrafters.plot.uuid.UUIDSaver;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
/** /**
* PlotMain class. * PlotMain class.
@ -113,8 +71,7 @@ import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused") public class PlotMain extends JavaPlugin {
public class PlotMain extends JavaPlugin {
private static PlotMain main = null; private static PlotMain main = null;
/** /**
* Permission that allows for "everything" * Permission that allows for "everything"
@ -208,8 +165,7 @@ public class PlotMain extends JavaPlugin {
*/ */
private static MySQL mySQL; private static MySQL mySQL;
/** /**
* List of all plots * List of all plots DO NOT USE EXCEPT FOR DATABASE PURPOSES
* DO NOT USE EXCEPT FOR DATABASE PURPOSES
*/ */
private static LinkedHashMap<String, HashMap<PlotId, Plot>> plots; private static LinkedHashMap<String, HashMap<PlotId, Plot>> plots;
@ -230,8 +186,7 @@ public class PlotMain extends JavaPlugin {
public void run() { public void run() {
try { try {
checkExpired(plugin, true); checkExpired(plugin, true);
} } catch (final Exception e) {
catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -239,15 +194,12 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* Check a range of permissions e.g. 'plots.plot.<0-100>'<br> * Check a range of permissions e.g. 'plots.plot.<0-100>'<br> Returns highest integer in range.
* Returns highest integer in range. *
* @param player to check
* @param stub to check
* @param range tp check
* *
* @param player
* to check
* @param stub
* to check
* @param range
* tp check
* @return permitted range * @return permitted range
*/ */
public static int hasPermissionRange(final Player player, final String stub, final int range) { public static int hasPermissionRange(final Player player, final String stub, final int range) {
@ -266,14 +218,11 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* Check a player for a permission<br> * Check a player for a permission<br> - Op has all permissions <br> - checks for '*' nodes
* - Op has all permissions <br> *
* - checks for '*' nodes * @param player to check
* @param perms to check
* *
* @param player
* to check
* @param perms
* to check
* @return true of player has permissions * @return true of player has permissions
*/ */
public static boolean hasPermissions(final Player player, final String[] perms) { public static boolean hasPermissions(final Player player, final String[] perms) {
@ -285,8 +234,7 @@ public class PlotMain extends JavaPlugin {
boolean permitted = false; boolean permitted = false;
if (player.hasPermission(perm)) { if (player.hasPermission(perm)) {
permitted = true; permitted = true;
} } else {
else {
final String[] nodes = perm.split("\\."); final String[] nodes = perm.split("\\.");
final StringBuilder n = new StringBuilder(); final StringBuilder n = new StringBuilder();
for (int i = 0; i < (nodes.length - 1); i++) { for (int i = 0; i < (nodes.length - 1); i++) {
@ -309,6 +257,7 @@ public class PlotMain extends JavaPlugin {
* Get the uuid saver * Get the uuid saver
* *
* @return uuid saver * @return uuid saver
*
* @see com.intellectualcrafters.plot.uuid.UUIDSaver; * @see com.intellectualcrafters.plot.uuid.UUIDSaver;
*/ */
public static UUIDSaver getUUIDSaver() { public static UUIDSaver getUUIDSaver() {
@ -318,8 +267,8 @@ public class PlotMain extends JavaPlugin {
/** /**
* Set the uuid saver * Set the uuid saver
* *
* @param saver * @param saver new saver
* new saver *
* @see com.intellectualcrafters.plot.uuid.UUIDSaver * @see com.intellectualcrafters.plot.uuid.UUIDSaver
*/ */
public static void setUUIDSaver(final UUIDSaver saver) { public static void setUUIDSaver(final UUIDSaver saver) {
@ -327,14 +276,11 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* Check a player for a permission<br> * Check a player for a permission<br> - Op has all permissions <br> - checks for '*' nodes
* - Op has all permissions <br> *
* - checks for '*' nodes * @param player to check
* @param perm to check
* *
* @param player
* to check
* @param perm
* to check
* @return true if player has the permission * @return true if player has the permission
*/ */
public static boolean hasPermission(final Player player, final String perm) { public static boolean hasPermission(final Player player, final String perm) {
@ -383,8 +329,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param player * @param player player
* player *
* @return Set Containing the players plots * @return Set Containing the players plots
*/ */
public static Set<Plot> getPlots(final Player player) { public static Set<Plot> getPlots(final Player player) {
@ -403,10 +349,9 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world plot world
* plot world * @param player plot owner
* @param player *
* plot owner
* @return players plots * @return players plots
*/ */
public static Set<Plot> getPlots(final World world, final Player player) { public static Set<Plot> getPlots(final World world, final Player player) {
@ -425,8 +370,8 @@ public class PlotMain extends JavaPlugin {
/** /**
* Get plots for the specified world * Get plots for the specified world
* *
* @param world * @param world A world, in which you want to search for plots
* A world, in which you want to search for plots *
* @return HashMap containing Plot IDs and Plot Objects * @return HashMap containing Plot IDs and Plot Objects
*/ */
public static HashMap<PlotId, Plot> getPlots(final String world) { public static HashMap<PlotId, Plot> getPlots(final String world) {
@ -437,8 +382,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world plot world
* plot world *
* @return plots in world * @return plots in world
*/ */
public static HashMap<PlotId, Plot> getPlots(final World world) { public static HashMap<PlotId, Plot> getPlots(final World world) {
@ -465,8 +410,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world plotworld(?)
* plotworld(?) *
* @return true if the world is a plotworld * @return true if the world is a plotworld
*/ */
public static boolean isPlotWorld(final World world) { public static boolean isPlotWorld(final World world) {
@ -474,8 +419,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world plotworld(?)
* plotworld(?) *
* @return true if the world is a plotworld * @return true if the world is a plotworld
*/ */
public static boolean isPlotWorld(final String world) { public static boolean isPlotWorld(final String world) {
@ -483,8 +428,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world World to get manager for
* World to get manager for *
* @return manager for world * @return manager for world
*/ */
public static PlotManager getPlotManager(final World world) { public static PlotManager getPlotManager(final World world) {
@ -495,8 +440,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world world
* world *
* @return PlotManager * @return PlotManager
*/ */
public static PlotManager getPlotManager(final String world) { public static PlotManager getPlotManager(final String world) {
@ -507,8 +452,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world to search
* to search *
* @return PlotWorld object * @return PlotWorld object
*/ */
public static PlotWorld getWorldSettings(final World world) { public static PlotWorld getWorldSettings(final World world) {
@ -519,8 +464,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world to search
* to search *
* @return PlotWorld object * @return PlotWorld object
*/ */
public static PlotWorld getWorldSettings(final String world) { public static PlotWorld getWorldSettings(final String world) {
@ -531,8 +476,8 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* @param world * @param world world to search
* world to search *
* @return set containing the plots for a world * @return set containing the plots for a world
*/ */
public static Plot[] getWorldPlots(final World world) { public static Plot[] getWorldPlots(final World world) {
@ -543,12 +488,10 @@ public class PlotMain extends JavaPlugin {
/** /**
* Remove a plot * Remove a plot
* *
* @param world * @param world The Plot World
* The Plot World * @param id The Plot ID
* @param id * @param callEvent Whether or not to call the PlotDeleteEvent
* The Plot ID *
* @param callEvent
* Whether or not to call the PlotDeleteEvent
* @return true if successful, false if not * @return true if successful, false if not
*/ */
public static boolean removePlot(final String world, final PlotId id, final boolean callEvent) { public static boolean removePlot(final String world, final PlotId id, final boolean callEvent) {
@ -567,8 +510,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Replace the plot object with an updated version * Replace the plot object with an updated version
* *
* @param plot * @param plot plot object
* plot object
*/ */
public static void updatePlot(final Plot plot) { public static void updatePlot(final Plot plot) {
final String world = plot.world; final String world = plot.world;
@ -580,30 +522,16 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* TODO: <b>Implement better system The whole point of this system is to * TODO: <b>Implement better system The whole point of this system is to recycle old plots</b> <br> So why not just
* recycle old plots</b> <br> * allow users to claim old plots, and try to hide the fact that the are owned. <br> <br> Reduce amount of expired
* So why not just allow users to claim old plots, and try to hide the fact * plots: <br> - On /plot <br> auto<br> - allow claiming of old plot, clear it so the user doesn't know<br> - On
* that the are owned. <br> * /plot info,<br> - show that the plot is expired and allowed to be claimed Have the task run less often:<br> - Run
* <br> * the task when there are very little, or no players online (great for small servers)<br> - Run the task at startup
* Reduce amount of expired plots: <br> * (also only useful for small servers)<br> Also, in terms of faster code:<br> - Have an array of plots, sorted by
* - On /plot <br> * expiry time.<br> - Add new plots to the end.<br> - The task then only needs to go through the first few plots
* auto<br>
* - allow claiming of old plot, clear it so the user doesn't know<br>
* - On /plot info,<br>
* - show that the plot is expired and allowed to be claimed Have the task
* run less often:<br>
* - Run the task when there are very little, or no players online (great
* for small servers)<br>
* - Run the task at startup (also only useful for small servers)<br>
* Also, in terms of faster code:<br>
* - Have an array of plots, sorted by expiry time.<br>
* - Add new plots to the end.<br>
* - The task then only needs to go through the first few plots
* *
* @param plugin * @param plugin Plugin
* Plugin * @param async Call async?
* @param async
* Call async?
*/ */
private static void checkExpired(final JavaPlugin plugin, final boolean async) { private static void checkExpired(final JavaPlugin plugin, final boolean async) {
if (async) { if (async) {
@ -629,8 +557,7 @@ public class PlotMain extends JavaPlugin {
Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
event.setCancelled(true); event.setCancelled(true);
} } else {
else {
toDeletePlot.add(plot); toDeletePlot.add(plot);
} }
} }
@ -649,8 +576,7 @@ public class PlotMain extends JavaPlugin {
} }
} }
}); });
} } else {
else {
for (final String world : getPlotWorldsString()) { for (final String world : getPlotWorldsString()) {
if (PlotMain.plots.containsKey(world)) { if (PlotMain.plots.containsKey(world)) {
for (final Plot plot : PlotMain.plots.get(world).values()) { for (final Plot plot : PlotMain.plots.get(world).values()) {
@ -659,8 +585,7 @@ public class PlotMain extends JavaPlugin {
Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
event.setCancelled(true); event.setCancelled(true);
} } else {
else {
DBFunc.delete(world, plot); DBFunc.delete(world, plot);
} }
} }
@ -691,14 +616,12 @@ public class PlotMain extends JavaPlugin {
/** /**
* Send a message to the console. * Send a message to the console.
* *
* @param string * @param string message
* message
*/ */
public static void sendConsoleSenderMessage(final String string) { public static void sendConsoleSenderMessage(final String string) {
if (getMain().getServer().getConsoleSender() == null) { if (getMain().getServer().getConsoleSender() == null) {
System.out.println(ChatColor.stripColor(ConsoleColors.fromString(string))); System.out.println(ChatColor.stripColor(ConsoleColors.fromString(string)));
} } else {
else {
getMain().getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', string)); getMain().getServer().getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', string));
} }
} }
@ -706,12 +629,10 @@ public class PlotMain extends JavaPlugin {
/** /**
* Teleport a player to a plot * Teleport a player to a plot
* *
* @param player * @param player Player to teleport
* Player to teleport * @param from Previous Location
* @param from * @param plot Plot to teleport to
* Previous Location *
* @param plot
* Plot to teleport to
* @return true if successful * @return true if successful
*/ */
public static boolean teleportPlayer(final Player player, final Location from, final Plot plot) { public static boolean teleportPlayer(final Player player, final Location from, final Plot plot) {
@ -732,8 +653,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Send a message to the console * Send a message to the console
* *
* @param c * @param c message
* message
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public static void sendConsoleSenderMessage(final C c) { public static void sendConsoleSenderMessage(final C c) {
@ -743,8 +663,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Broadcast publicly * Broadcast publicly
* *
* @param c * @param c message
* message
*/ */
public static void Broadcast(final C c) { public static void Broadcast(final C c) {
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', C.PREFIX.s() + c.s())); Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', C.PREFIX.s() + c.s()));
@ -762,8 +681,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Broadcast a message to all admins * Broadcast a message to all admins
* *
* @param c * @param c message
* message
*/ */
public static void BroadcastWithPerms(final C c) { public static void BroadcastWithPerms(final C c) {
for (final Player player : Bukkit.getOnlinePlayers()) { for (final Player player : Bukkit.getOnlinePlayers()) {
@ -786,8 +704,8 @@ public class PlotMain extends JavaPlugin {
/** /**
* Ge the last played time * Ge the last played time
* *
* @param uuid * @param uuid UUID for the player
* UUID for the player *
* @return last play time as a long * @return last play time as a long
*/ */
public static long getLastPlayed(final UUID uuid) { public static long getLastPlayed(final UUID uuid) {
@ -819,8 +737,7 @@ public class PlotMain extends JavaPlugin {
} }
config = YamlConfiguration.loadConfiguration(configFile); config = YamlConfiguration.loadConfiguration(configFile);
setupConfig(); setupConfig();
} } catch (final Exception err_trans) {
catch (final Exception err_trans) {
Logger.add(LogLevel.DANGER, "Failed to save settings.yml"); Logger.add(LogLevel.DANGER, "Failed to save settings.yml");
System.out.println("Failed to save settings.yml"); System.out.println("Failed to save settings.yml");
} }
@ -833,16 +750,14 @@ public class PlotMain extends JavaPlugin {
} }
storage = YamlConfiguration.loadConfiguration(storageFile); storage = YamlConfiguration.loadConfiguration(storageFile);
setupStorage(); setupStorage();
} } catch (final Exception err_trans) {
catch (final Exception err_trans) {
Logger.add(LogLevel.DANGER, "Failed to save storage.yml"); Logger.add(LogLevel.DANGER, "Failed to save storage.yml");
System.out.println("Failed to save storage.yml"); System.out.println("Failed to save storage.yml");
} }
try { try {
config.save(configFile); config.save(configFile);
storage.save(storageFile); storage.save(storageFile);
} } catch (final IOException e) {
catch (final IOException e) {
Logger.add(LogLevel.DANGER, "Configuration file saving failed"); Logger.add(LogLevel.DANGER, "Configuration file saving failed");
e.printStackTrace(); e.printStackTrace();
} }
@ -977,11 +892,9 @@ public class PlotMain extends JavaPlugin {
// } // }
} }
} }
} } catch (final Throwable e) {
catch (final Throwable e) {
++this.error; ++this.error;
} } finally {
finally {
++this.ticked; ++this.ticked;
} }
} }
@ -1049,8 +962,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Create a plotworld config section * Create a plotworld config section
* *
* @param plotworld * @param plotworld World to create the section for
* World to create the section for
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public static void createConfiguration(final PlotWorld plotworld) { public static void createConfiguration(final PlotWorld plotworld) {
@ -1068,8 +980,7 @@ public class PlotMain extends JavaPlugin {
try { try {
config.save(PlotMain.configFile); config.save(PlotMain.configFile);
} } catch (final IOException e) {
catch (final IOException e) {
PlotMain.sendConsoleSenderMessage("&c[Warning] PlotSquared failed to save the configuration&7 (settings.yml may differ from the one in memory)\n - To force a save from console use /plots save"); PlotMain.sendConsoleSenderMessage("&c[Warning] PlotSquared failed to save the configuration&7 (settings.yml may differ from the one in memory)\n - To force a save from console use /plots save");
} }
} }
@ -1105,15 +1016,13 @@ public class PlotMain extends JavaPlugin {
try { try {
config.save(configFile); config.save(configFile);
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
// Now add it // Now add it
addPlotWorld(world, plotWorld, plotManager); addPlotWorld(world, plotWorld, plotManager);
} } else {
else {
if (worlds.contains(world)) { if (worlds.contains(world)) {
sendConsoleSenderMessage("&cWorld '" + world + "' in settings.yml is not using PlotSquared generator!"); sendConsoleSenderMessage("&cWorld '" + world + "' in settings.yml is not using PlotSquared generator!");
@ -1129,8 +1038,7 @@ public class PlotMain extends JavaPlugin {
try { try {
config.save(configFile); config.save(configFile);
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -1141,13 +1049,11 @@ public class PlotMain extends JavaPlugin {
} }
/** /**
* Adds an external world as a recognized PlotSquared world - The PlotWorld * Adds an external world as a recognized PlotSquared world - The PlotWorld class created is based off the
* class created is based off the configuration in the settings.yml - Do not * configuration in the settings.yml - Do not use this method unless the required world is preconfigured in the
* use this method unless the required world is preconfigured in the
* settings.yml * settings.yml
* *
* @param world * @param world to load
* to load
*/ */
public static void loadWorld(final World world) { public static void loadWorld(final World world) {
if (world == null) { if (world == null) {
@ -1207,17 +1113,14 @@ public class PlotMain extends JavaPlugin {
seconds = 1; seconds = 1;
try { try {
amount = Integer.parseInt(values[0]); amount = Integer.parseInt(values[0]);
} } catch (final Exception e) {
catch (final Exception e) {
return null; return null;
} }
} } else {
else {
try { try {
amount = Integer.parseInt(values[0]); amount = Integer.parseInt(values[0]);
seconds = Integer.parseInt(values[1]); seconds = Integer.parseInt(values[1]);
} } catch (final Exception e) {
catch (final Exception e) {
return null; return null;
} }
} }
@ -1344,8 +1247,7 @@ public class PlotMain extends JavaPlugin {
public String parseValue(final String value) { public String parseValue(final String value) {
try { try {
return Long.parseLong(value) + ""; return Long.parseLong(value) + "";
} } catch (final Exception e) {
catch (final Exception e) {
return null; return null;
} }
} }
@ -1383,12 +1285,9 @@ public class PlotMain extends JavaPlugin {
/** /**
* Add a Plot world * Add a Plot world
* *
* @param world * @param world World to add
* World to add * @param plotworld PlotWorld Object
* @param plotworld * @param manager Plot Manager for the new world
* PlotWorld Object
* @param manager
* Plot Manager for the new world
*/ */
public static void addPlotWorld(final String world, final PlotWorld plotworld, final PlotManager manager) { public static void addPlotWorld(final String world, final PlotWorld plotworld, final PlotManager manager) {
worlds.put(world, plotworld); worlds.put(world, plotworld);
@ -1401,8 +1300,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Remove a plot world * Remove a plot world
* *
* @param world * @param world World to remove
* World to remove
*/ */
public static void removePlotWorld(final String world) { public static void removePlotWorld(final String world) {
plots.remove(world); plots.remove(world);
@ -1422,8 +1320,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Set all plots * Set all plots
* *
* @param plots * @param plots New Plot LinkedHashMap
* New Plot LinkedHashMap
*/ */
public static void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) { public static void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
PlotMain.plots = plots; PlotMain.plots = plots;
@ -1432,8 +1329,7 @@ public class PlotMain extends JavaPlugin {
/** /**
* Set all plots * Set all plots
* *
* @param plots * @param plots New Plot HashMap
* New Plot HashMap
*/ */
public static void setAllPlotsRaw(final HashMap<String, HashMap<PlotId, Plot>> plots) { public static void setAllPlotsRaw(final HashMap<String, HashMap<PlotId, Plot>> plots) {
PlotMain.plots = new LinkedHashMap<>(plots); PlotMain.plots = new LinkedHashMap<>(plots);
@ -1465,8 +1361,7 @@ public class PlotMain extends JavaPlugin {
writer.write("Created at: " + new Date().toString() + "\n\n\n"); writer.write("Created at: " + new Date().toString() + "\n\n\n");
writer.close(); writer.close();
} }
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -1493,8 +1388,7 @@ public class PlotMain extends JavaPlugin {
sendConsoleSenderMessage(C.PREFIX.s() + "&cURL: &6https://java.com/en/download/index.jsp"); sendConsoleSenderMessage(C.PREFIX.s() + "&cURL: &6https://java.com/en/download/index.jsp");
Bukkit.getPluginManager().disablePlugin(this); Bukkit.getPluginManager().disablePlugin(this);
return; return;
} } else if (getJavaVersion() < 1.8) {
else if (getJavaVersion() < 1.8) {
sendConsoleSenderMessage(C.PREFIX.s() + "&cIt's really recommended to run Java 1.8, as it increases performance"); sendConsoleSenderMessage(C.PREFIX.s() + "&cIt's really recommended to run Java 1.8, as it increases performance");
} }
// Setup configuration // Setup configuration
@ -1505,12 +1399,10 @@ public class PlotMain extends JavaPlugin {
final Metrics metrics = new Metrics(this); final Metrics metrics = new Metrics(this);
metrics.start(); metrics.start();
sendConsoleSenderMessage(C.PREFIX.s() + "&6Metrics enabled."); sendConsoleSenderMessage(C.PREFIX.s() + "&6Metrics enabled.");
} } catch (final Exception e) {
catch (final Exception e) {
sendConsoleSenderMessage(C.PREFIX.s() + "&cFailed to load up metrics."); sendConsoleSenderMessage(C.PREFIX.s() + "&cFailed to load up metrics.");
} }
} } else {
else {
// We should at least make them feel bad. // We should at least make them feel bad.
sendConsoleSenderMessage("Using metrics will allow us to improve the plugin\nPlease consider it :)"); sendConsoleSenderMessage("Using metrics will allow us to improve the plugin\nPlease consider it :)");
} }
@ -1538,8 +1430,7 @@ public class PlotMain extends JavaPlugin {
ResultSet res = meta.getTables(null, null, Settings.DB.PREFIX + "plot", null); ResultSet res = meta.getTables(null, null, Settings.DB.PREFIX + "plot", null);
if (!res.next()) { if (!res.next()) {
DBFunc.createTables("mysql", true); DBFunc.createTables("mysql", true);
} } else {
else {
for (final String table : tables) { for (final String table : tables) {
res = meta.getTables(null, null, Settings.DB.PREFIX + table, null); res = meta.getTables(null, null, Settings.DB.PREFIX + table, null);
if (!res.next()) { if (!res.next()) {
@ -1549,8 +1440,7 @@ public class PlotMain extends JavaPlugin {
// We should not repeat our self :P // We should not repeat our self :P
} }
} }
} } catch (final Exception e) {
catch (final Exception e) {
Logger.add(LogLevel.DANGER, "MySQL connection failed."); Logger.add(LogLevel.DANGER, "MySQL connection failed.");
sendConsoleSenderMessage("&c[Plots] MySQL is not setup correctly. The plugin will disable itself."); sendConsoleSenderMessage("&c[Plots] MySQL is not setup correctly. The plugin will disable itself.");
if ((config == null) || config.getBoolean("debug")) { if ((config == null) || config.getBoolean("debug")) {
@ -1568,8 +1458,7 @@ public class PlotMain extends JavaPlugin {
else if (Settings.DB.USE_MONGO) { else if (Settings.DB.USE_MONGO) {
// DBFunc.dbManager = new MongoManager(); // DBFunc.dbManager = new MongoManager();
sendConsoleSenderMessage(C.PREFIX.s() + "MongoDB is not yet implemented"); sendConsoleSenderMessage(C.PREFIX.s() + "MongoDB is not yet implemented");
} } else if (Settings.DB.USE_SQLITE) {
else if (Settings.DB.USE_SQLITE) {
try { try {
connection = new SQLite(this, Settings.DB.SQLITE_DB + ".db").openConnection(); connection = new SQLite(this, Settings.DB.SQLITE_DB + ".db").openConnection();
{ {
@ -1578,8 +1467,7 @@ public class PlotMain extends JavaPlugin {
ResultSet res = meta.getTables(null, null, Settings.DB.PREFIX + "plot", null); ResultSet res = meta.getTables(null, null, Settings.DB.PREFIX + "plot", null);
if (!res.next()) { if (!res.next()) {
DBFunc.createTables("sqlite", true); DBFunc.createTables("sqlite", true);
} } else {
else {
for (final String table : tables) { for (final String table : tables) {
res = meta.getTables(null, null, Settings.DB.PREFIX + table, null); res = meta.getTables(null, null, Settings.DB.PREFIX + table, null);
if (!res.next()) { if (!res.next()) {
@ -1588,8 +1476,7 @@ public class PlotMain extends JavaPlugin {
} }
} }
} }
} } catch (final Exception e) {
catch (final Exception e) {
Logger.add(LogLevel.DANGER, "SQLite connection failed"); Logger.add(LogLevel.DANGER, "SQLite connection failed");
sendConsoleSenderMessage(C.PREFIX.s() + "&cFailed to open SQLite connection. The plugin will disable itself."); sendConsoleSenderMessage(C.PREFIX.s() + "&cFailed to open SQLite connection. The plugin will disable itself.");
sendConsoleSenderMessage("&9==== Here is an ugly stacktrace, if you are interested in those things ==="); sendConsoleSenderMessage("&9==== Here is an ugly stacktrace, if you are interested in those things ===");
@ -1598,8 +1485,7 @@ public class PlotMain extends JavaPlugin {
return; return;
} }
plots = DBFunc.getPlots(); plots = DBFunc.getPlots();
} } else {
else {
Logger.add(LogLevel.DANGER, "No storage type is set."); Logger.add(LogLevel.DANGER, "No storage type is set.");
sendConsoleSenderMessage(C.PREFIX + "&cNo storage type is set!"); sendConsoleSenderMessage(C.PREFIX + "&cNo storage type is set!");
getServer().getPluginManager().disablePlugin(this); getServer().getPluginManager().disablePlugin(this);
@ -1612,8 +1498,7 @@ public class PlotMain extends JavaPlugin {
if (getServer().getPluginManager().getPlugin("PlotMe") != null) { if (getServer().getPluginManager().getPlugin("PlotMe") != null) {
try { try {
new PlotMeConverter(this).runAsync(); new PlotMeConverter(this).runAsync();
} } catch (final Exception e) {
catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -1653,8 +1538,7 @@ public class PlotMain extends JavaPlugin {
PlotMain.sendConsoleSenderMessage("&cThis version of WorldEdit does not support PlotSquared."); PlotMain.sendConsoleSenderMessage("&cThis version of WorldEdit does not support PlotSquared.");
PlotMain.sendConsoleSenderMessage("&cPlease use WorldEdit 6+"); PlotMain.sendConsoleSenderMessage("&cPlease use WorldEdit 6+");
PlotMain.sendConsoleSenderMessage("&c - http://builds.enginehub.org/job/worldedit"); PlotMain.sendConsoleSenderMessage("&c - http://builds.enginehub.org/job/worldedit");
} } else {
else {
getServer().getPluginManager().registerEvents(new WorldEditListener(), this); getServer().getPluginManager().registerEvents(new WorldEditListener(), this);
} }
} }
@ -1688,16 +1572,14 @@ public class PlotMain extends JavaPlugin {
try { try {
new SetBlockFast(); new SetBlockFast();
PlotHelper.canSetFast = true; PlotHelper.canSetFast = true;
} } catch (final Throwable e) {
catch (final Throwable e) {
PlotHelper.canSetFast = false; PlotHelper.canSetFast = false;
} }
try { try {
new SendChunk(); new SendChunk();
PlotHelper.canSendChunk = true; PlotHelper.canSendChunk = true;
} } catch (final Throwable e) {
catch (final Throwable e) {
PlotHelper.canSendChunk = false; PlotHelper.canSendChunk = false;
} }
} }
@ -1727,8 +1609,7 @@ public class PlotMain extends JavaPlugin {
final public void onDisable() { final public void onDisable() {
try { try {
C.saveTranslations(); C.saveTranslations();
} } catch (final Exception e) {
catch (final Exception e) {
sendConsoleSenderMessage("Failed to save translations"); sendConsoleSenderMessage("Failed to save translations");
Logger.add(LogLevel.DANGER, "Failed to save translations"); Logger.add(LogLevel.DANGER, "Failed to save translations");
e.printStackTrace(); e.printStackTrace();
@ -1736,15 +1617,13 @@ public class PlotMain extends JavaPlugin {
Logger.add(LogLevel.GENERAL, "Logger disabled"); Logger.add(LogLevel.GENERAL, "Logger disabled");
try { try {
Logger.write(); Logger.write();
} } catch (final IOException e1) {
catch (final IOException e1) {
e1.printStackTrace(); e1.printStackTrace();
} }
try { try {
connection.close(); connection.close();
mySQL.closeConnection(); mySQL.closeConnection();
} } catch (NullPointerException | SQLException e) {
catch (NullPointerException | SQLException e) {
if (connection != null) { if (connection != null) {
Logger.add(LogLevel.DANGER, "Could not close mysql connection"); Logger.add(LogLevel.DANGER, "Could not close mysql connection");
} }

View File

@ -21,16 +21,6 @@
package com.intellectualcrafters.plot.api; package com.intellectualcrafters.plot.api;
import java.util.ArrayList;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.commands.MainCommand; import com.intellectualcrafters.plot.commands.MainCommand;
import com.intellectualcrafters.plot.commands.SubCommand; import com.intellectualcrafters.plot.commands.SubCommand;
@ -41,29 +31,31 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotManager; import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.*;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.PlotSquaredException;
import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.sun.istack.internal.NotNull; import com.sun.istack.internal.NotNull;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.Set;
/** /**
* PlotSquared API * PlotSquared API
* *
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
*
* @version API 2.0 * @version API 2.0
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused") public class PlotAPI {
public class PlotAPI {
/** /**
* Permission that allows for admin access, * Permission that allows for admin access, this permission node will allow the player to use any part of the
* this permission node will allow the player * plugin, without limitations.
* to use any part of the plugin, without limitations.
*/ */
public static final String ADMIN_PERMISSION = "plots.admin"; public static final String ADMIN_PERMISSION = "plots.admin";
@ -78,7 +70,7 @@ public class PlotAPI {
/** /**
* Player Functions * Player Functions
* * <p/>
* General functions involving players, and plot worlds * General functions involving players, and plot worlds
* *
* @see com.intellectualcrafters.plot.util.PlayerFunctions * @see com.intellectualcrafters.plot.util.PlayerFunctions
@ -87,7 +79,7 @@ public class PlotAPI {
/** /**
* Flag Manager * Flag Manager
* * <p/>
* The manager which handles all flags * The manager which handles all flags
* *
* @see com.intellectualcrafters.plot.flag.FlagManager * @see com.intellectualcrafters.plot.flag.FlagManager
@ -96,7 +88,7 @@ public class PlotAPI {
/** /**
* Schematic Handler * Schematic Handler
* * <p/>
* The handler which is used to create, and paste, schematics * The handler which is used to create, and paste, schematics
* *
* @see com.intellectualcrafters.plot.util.SchematicHandler * @see com.intellectualcrafters.plot.util.SchematicHandler
@ -112,7 +104,7 @@ public class PlotAPI {
/** /**
* PlotMain instance * PlotMain instance
* * <p/>
* This is the instance that allows for most methods to be used. * This is the instance that allows for most methods to be used.
* *
* @see com.intellectualcrafters.plot.PlotMain * @see com.intellectualcrafters.plot.PlotMain
@ -120,13 +112,12 @@ public class PlotAPI {
private final PlotMain plotMain; private final PlotMain plotMain;
/** /**
* Constructor. Insert any Plugin. * Constructor. Insert any Plugin. (Optimally the plugin that is accessing the method)
* (Optimally the plugin that is accessing the method)
* *
* @param plugin * @param plugin Plugin used to access this method
* Plugin used to access this method *
* @throws com.intellectualcrafters.plot.util.PlotSquaredException * @throws com.intellectualcrafters.plot.util.PlotSquaredException if the program fails to fetch the PlotMain
* if the program fails to fetch the PlotMain instance * instance
* @see com.intellectualcrafters.plot.PlotMain * @see com.intellectualcrafters.plot.PlotMain
*/ */
public PlotAPI(@NotNull final JavaPlugin plugin) { public PlotAPI(@NotNull final JavaPlugin plugin) {
@ -140,6 +131,7 @@ public class PlotAPI {
* Get all plots * Get all plots
* *
* @return all plots * @return all plots
*
* @see com.intellectualcrafters.plot.PlotMain#getPlots() * @see com.intellectualcrafters.plot.PlotMain#getPlots()
*/ */
public Set<Plot> getAllPlots() { public Set<Plot> getAllPlots() {
@ -149,8 +141,8 @@ public class PlotAPI {
/** /**
* Return all plots for a player * Return all plots for a player
* *
* @param player * @param player Player, whose plots to search for
* Player, whose plots to search for *
* @return all plots that a player owns * @return all plots that a player owns
*/ */
public Set<Plot> getPlayerPlots(@NotNull final Player player) { public Set<Plot> getPlayerPlots(@NotNull final Player player) {
@ -160,14 +152,11 @@ public class PlotAPI {
/** /**
* Add a plot world * Add a plot world
* *
* @param world * @param world World Name
* World Name * @param plotWorld Plot World Object
* @param plotWorld * @param manager World Manager
* Plot World Object *
* @param manager * @see com.intellectualcrafters.plot.PlotMain#addPlotWorld(String, com.intellectualcrafters.plot.object.PlotWorld,
* World Manager
* @see com.intellectualcrafters.plot.PlotMain#addPlotWorld(String,
* com.intellectualcrafters.plot.object.PlotWorld,
* com.intellectualcrafters.plot.object.PlotManager) * com.intellectualcrafters.plot.object.PlotManager)
*/ */
public void addPlotWorld(@NotNull final String world, @NotNull final PlotWorld plotWorld, @NotNull final PlotManager manager) { public void addPlotWorld(@NotNull final String world, @NotNull final PlotWorld plotWorld, @NotNull final PlotManager manager) {
@ -176,6 +165,7 @@ public class PlotAPI {
/** /**
* @return main configuration * @return main configuration
*
* @see com.intellectualcrafters.plot.PlotMain#config * @see com.intellectualcrafters.plot.PlotMain#config
*/ */
public YamlConfiguration getConfig() { public YamlConfiguration getConfig() {
@ -184,6 +174,7 @@ public class PlotAPI {
/** /**
* @return storage configuration * @return storage configuration
*
* @see com.intellectualcrafters.plot.PlotMain#storage * @see com.intellectualcrafters.plot.PlotMain#storage
*/ */
public YamlConfiguration getStorage() { public YamlConfiguration getStorage() {
@ -191,11 +182,11 @@ public class PlotAPI {
} }
/** /**
* Get the main class for this plugin <br> * Get the main class for this plugin <br> - Contains a lot of fields and methods - not very well organized <br>
* - Contains a lot of fields and methods - not very well organized <br>
* Only use this if you really need it * Only use this if you really need it
* *
* @return PlotMain PlotSquared Main Class * @return PlotMain PlotSquared Main Class
*
* @see com.intellectualcrafters.plot.PlotMain * @see com.intellectualcrafters.plot.PlotMain
*/ */
public PlotMain getMain() { public PlotMain getMain() {
@ -206,6 +197,7 @@ public class PlotAPI {
* PlotHelper class contains useful methods relating to plots. * PlotHelper class contains useful methods relating to plots.
* *
* @return PlotHelper * @return PlotHelper
*
* @see com.intellectualcrafters.plot.util.PlotHelper * @see com.intellectualcrafters.plot.util.PlotHelper
*/ */
public PlotHelper getPlotHelper() { public PlotHelper getPlotHelper() {
@ -213,10 +205,10 @@ public class PlotAPI {
} }
/** /**
* PlayerFunctions class contains useful methods relating to players - Some * PlayerFunctions class contains useful methods relating to players - Some player/plot methods are here as well
* player/plot methods are here as well
* *
* @return PlayerFunctions * @return PlayerFunctions
*
* @see com.intellectualcrafters.plot.util.PlayerFunctions * @see com.intellectualcrafters.plot.util.PlayerFunctions
*/ */
public PlayerFunctions getPlayerFunctions() { public PlayerFunctions getPlayerFunctions() {
@ -227,6 +219,7 @@ public class PlotAPI {
* FlagManager class contains methods relating to plot flags * FlagManager class contains methods relating to plot flags
* *
* @return FlagManager * @return FlagManager
*
* @see com.intellectualcrafters.plot.flag.FlagManager * @see com.intellectualcrafters.plot.flag.FlagManager
*/ */
public FlagManager getFlagManager() { public FlagManager getFlagManager() {
@ -237,6 +230,7 @@ public class PlotAPI {
* SchematicHandler class contains methods related to pasting schematics * SchematicHandler class contains methods related to pasting schematics
* *
* @return SchematicHandler * @return SchematicHandler
*
* @see com.intellectualcrafters.plot.util.SchematicHandler * @see com.intellectualcrafters.plot.util.SchematicHandler
*/ */
public SchematicHandler getSchematicHandler() { public SchematicHandler getSchematicHandler() {
@ -247,6 +241,7 @@ public class PlotAPI {
* C class contains all the captions from the translations.yml file. * C class contains all the captions from the translations.yml file.
* *
* @return C * @return C
*
* @see com.intellectualcrafters.plot.config.C * @see com.intellectualcrafters.plot.config.C
*/ */
public C getCaptions() { public C getCaptions() {
@ -254,12 +249,12 @@ public class PlotAPI {
} }
/** /**
* Get the plot manager for a world. - Most of these methods can be accessed * Get the plot manager for a world. - Most of these methods can be accessed through the PlotHelper
* through the PlotHelper *
* @param world Which manager to get
* *
* @param world
* Which manager to get
* @return PlotManager * @return PlotManager
*
* @see com.intellectualcrafters.plot.object.PlotManager * @see com.intellectualcrafters.plot.object.PlotManager
* @see PlotMain#getPlotManager(org.bukkit.World) * @see PlotMain#getPlotManager(org.bukkit.World)
*/ */
@ -268,12 +263,13 @@ public class PlotAPI {
} }
/** /**
* Get the plot manager for a world. - Contains useful low level methods for * Get the plot manager for a world. - Contains useful low level methods for plot merging, clearing, and
* plot merging, clearing, and tessellation * tessellation
*
* @param world Plot World
* *
* @param world
* Plot World
* @return PlotManager * @return PlotManager
*
* @see PlotMain#getPlotManager(String) * @see PlotMain#getPlotManager(String)
* @see com.intellectualcrafters.plot.object.PlotManager * @see com.intellectualcrafters.plot.object.PlotManager
*/ */
@ -282,14 +278,13 @@ public class PlotAPI {
} }
/** /**
* Get the settings for a world (settings bundled in PlotWorld class) - You * Get the settings for a world (settings bundled in PlotWorld class) - You will need to downcast for the specific
* will need to downcast for the specific settings a Generator has. e.g. * settings a Generator has. e.g. DefaultPlotWorld class implements PlotWorld
* DefaultPlotWorld class implements PlotWorld *
* @param world (to get settings of)
*
* @return PlotWorld class for that world ! will return null if not a plot world world
* *
* @param world
* (to get settings of)
* @return PlotWorld class for that world ! will return null if not a plot
* world world
* @see PlotMain#getWorldSettings(org.bukkit.World) * @see PlotMain#getWorldSettings(org.bukkit.World)
* @see com.intellectualcrafters.plot.object.PlotWorld * @see com.intellectualcrafters.plot.object.PlotWorld
*/ */
@ -300,10 +295,10 @@ public class PlotAPI {
/** /**
* Get the settings for a world (settings bundled in PlotWorld class) * Get the settings for a world (settings bundled in PlotWorld class)
* *
* @param world * @param world (to get settings of)
* (to get settings of) *
* @return PlotWorld class for that world ! will return null if not a plot * @return PlotWorld class for that world ! will return null if not a plot world world
* world world *
* @see PlotMain#getWorldSettings(String) * @see PlotMain#getWorldSettings(String)
* @see com.intellectualcrafters.plot.object.PlotWorld * @see com.intellectualcrafters.plot.object.PlotWorld
*/ */
@ -314,10 +309,9 @@ public class PlotAPI {
/** /**
* Send a message to a player. * Send a message to a player.
* *
* @param player * @param player Player that will receive the message
* Player that will receive the message * @param c (Caption)
* @param c *
* (Caption)
* @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player, * @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player,
* com.intellectualcrafters.plot.config.C, String...) * com.intellectualcrafters.plot.config.C, String...)
*/ */
@ -328,12 +322,10 @@ public class PlotAPI {
/** /**
* Send a message to a player. - Supports color codes * Send a message to a player. - Supports color codes
* *
* @param player * @param player Player that will receive the message
* Player that will receive the message * @param string The message
* @param string *
* The message * @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player, String)
* @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player,
* String)
*/ */
public void sendMessage(@NotNull final Player player, @NotNull final String string) { public void sendMessage(@NotNull final Player player, @NotNull final String string) {
PlayerFunctions.sendMessage(player, string); PlayerFunctions.sendMessage(player, string);
@ -342,8 +334,8 @@ public class PlotAPI {
/** /**
* Send a message to the console. - Supports color codes * Send a message to the console. - Supports color codes
* *
* @param msg * @param msg Message that should be sent to the console
* Message that should be sent to the console *
* @see PlotMain#sendConsoleSenderMessage(String) * @see PlotMain#sendConsoleSenderMessage(String)
*/ */
public void sendConsoleMessage(@NotNull final String msg) { public void sendConsoleMessage(@NotNull final String msg) {
@ -353,8 +345,8 @@ public class PlotAPI {
/** /**
* Send a message to the console * Send a message to the console
* *
* @param c * @param c (Caption)
* (Caption) *
* @see #sendConsoleMessage(String) * @see #sendConsoleMessage(String)
* @see com.intellectualcrafters.plot.config.C * @see com.intellectualcrafters.plot.config.C
*/ */
@ -365,8 +357,8 @@ public class PlotAPI {
/** /**
* Register a flag for use in plots * Register a flag for use in plots
* *
* @param flag * @param flag Flag that should be registered
* Flag that should be registered *
* @see com.intellectualcrafters.plot.flag.FlagManager#addFlag(com.intellectualcrafters.plot.flag.AbstractFlag) * @see com.intellectualcrafters.plot.flag.FlagManager#addFlag(com.intellectualcrafters.plot.flag.AbstractFlag)
* @see com.intellectualcrafters.plot.flag.AbstractFlag * @see com.intellectualcrafters.plot.flag.AbstractFlag
*/ */
@ -378,6 +370,7 @@ public class PlotAPI {
* get all the currently registered flags * get all the currently registered flags
* *
* @return array of Flag[] * @return array of Flag[]
*
* @see com.intellectualcrafters.plot.flag.FlagManager#getFlags() * @see com.intellectualcrafters.plot.flag.FlagManager#getFlags()
* @see com.intellectualcrafters.plot.flag.AbstractFlag * @see com.intellectualcrafters.plot.flag.AbstractFlag
*/ */
@ -388,15 +381,13 @@ public class PlotAPI {
/** /**
* Get a plot based on the ID * Get a plot based on the ID
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param x Plot Location X Co-ord
* @param x * @param z Plot Location Z Co-ord
* Plot Location X Co-ord *
* @param z
* Plot Location Z Co-ord
* @return plot, null if ID is wrong * @return plot, null if ID is wrong
* @see PlotHelper#getPlot(org.bukkit.World, *
* com.intellectualcrafters.plot.object.PlotId) * @see PlotHelper#getPlot(org.bukkit.World, com.intellectualcrafters.plot.object.PlotId)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
public Plot getPlot(@NotNull final World world, final int x, final int z) { public Plot getPlot(@NotNull final World world, final int x, final int z) {
@ -406,9 +397,10 @@ public class PlotAPI {
/** /**
* Get a plot based on the location * Get a plot based on the location
* *
* @param l * @param l The location that you want to to retrieve the plot from
* The location that you want to to retrieve the plot from *
* @return plot if found, otherwise it creates a temporary plot- * @return plot if found, otherwise it creates a temporary plot-
*
* @see PlotHelper#getCurrentPlot(org.bukkit.Location) * @see PlotHelper#getCurrentPlot(org.bukkit.Location)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
@ -419,9 +411,10 @@ public class PlotAPI {
/** /**
* Get a plot based on the player location * Get a plot based on the player location
* *
* @param player * @param player Get the current plot for the player location
* Get the current plot for the player location *
* @return plot if found, otherwise it creates a temporary plot * @return plot if found, otherwise it creates a temporary plot
*
* @see #getPlot(org.bukkit.Location) * @see #getPlot(org.bukkit.Location)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
@ -432,9 +425,10 @@ public class PlotAPI {
/** /**
* Check whether or not a player has a plot * Check whether or not a player has a plot
* *
* @param player * @param player Player that you want to check for
* Player that you want to check for *
* @return true if player has a plot, false if not. * @return true if player has a plot, false if not.
*
* @see #getPlots(org.bukkit.World, org.bukkit.entity.Player, boolean) * @see #getPlots(org.bukkit.World, org.bukkit.entity.Player, boolean)
*/ */
public boolean hasPlot(@NotNull final World world, @NotNull final Player player) { public boolean hasPlot(@NotNull final World world, @NotNull final Player player) {
@ -444,10 +438,9 @@ public class PlotAPI {
/** /**
* Get all plots for the player * Get all plots for the player
* *
* @param plr * @param plr to search for
* to search for * @param just_owner should we just search for owner? Or with rights?
* @param just_owner *
* should we just search for owner? Or with rights?
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
public Plot[] getPlots(@NotNull final World world, @NotNull final Player plr, final boolean just_owner) { public Plot[] getPlots(@NotNull final World world, @NotNull final Player plr, final boolean just_owner) {
@ -457,8 +450,7 @@ public class PlotAPI {
if ((plot.owner != null) && (plot.owner == UUIDHandler.getUUID(plr))) { if ((plot.owner != null) && (plot.owner == UUIDHandler.getUUID(plr))) {
pPlots.add(plot); pPlots.add(plot);
} }
} } else {
else {
if (plot.hasRights(plr)) { if (plot.hasRights(plr)) {
pPlots.add(plot); pPlots.add(plot);
} }
@ -470,9 +462,10 @@ public class PlotAPI {
/** /**
* Get all plots for the world * Get all plots for the world
* *
* @param world * @param world to get plots of
* to get plots of *
* @return Plot[] - array of plot objects in world * @return Plot[] - array of plot objects in world
*
* @see PlotMain#getWorldPlots(org.bukkit.World) * @see PlotMain#getWorldPlots(org.bukkit.World)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
@ -484,6 +477,7 @@ public class PlotAPI {
* Get all plot worlds * Get all plot worlds
* *
* @return World[] - array of plot worlds * @return World[] - array of plot worlds
*
* @see com.intellectualcrafters.plot.PlotMain#getPlotWorlds() * @see com.intellectualcrafters.plot.PlotMain#getPlotWorlds()
*/ */
public String[] getPlotWorlds() { public String[] getPlotWorlds() {
@ -493,9 +487,10 @@ public class PlotAPI {
/** /**
* Get if plot world * Get if plot world
* *
* @param world * @param world (to check if plot world)
* (to check if plot world) *
* @return boolean (if plot world or not) * @return boolean (if plot world or not)
*
* @see com.intellectualcrafters.plot.PlotMain#isPlotWorld(org.bukkit.World) * @see com.intellectualcrafters.plot.PlotMain#isPlotWorld(org.bukkit.World)
*/ */
public boolean isPlotWorld(@NotNull final World world) { public boolean isPlotWorld(@NotNull final World world) {
@ -505,9 +500,10 @@ public class PlotAPI {
/** /**
* Get plot locations * Get plot locations
* *
* @param p * @param p Plot that you want to get the locations for
* Plot that you want to get the locations for *
* @return [0] = bottomLc, [1] = topLoc, [2] = home * @return [0] = bottomLc, [1] = topLoc, [2] = home
*
* @see com.intellectualcrafters.plot.util.PlotHelper#getPlotBottomLoc(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlotHelper#getPlotBottomLoc(org.bukkit.World,
* com.intellectualcrafters.plot.object.PlotId) * com.intellectualcrafters.plot.object.PlotId)
* @see com.intellectualcrafters.plot.util.PlotHelper#getPlotTopLoc(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlotHelper#getPlotTopLoc(org.bukkit.World,
@ -525,9 +521,10 @@ public class PlotAPI {
/** /**
* Get home location * Get home location
* *
* @param p * @param p Plot that you want to get the location for
* Plot that you want to get the location for *
* @return plot bottom location * @return plot bottom location
*
* @see com.intellectualcrafters.plot.util.PlotHelper#getPlotHome(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlotHelper#getPlotHome(org.bukkit.World,
* com.intellectualcrafters.plot.object.Plot) * com.intellectualcrafters.plot.object.Plot)
* @see com.intellectualcrafters.plot.object.PlotHomePosition * @see com.intellectualcrafters.plot.object.PlotHomePosition
@ -540,9 +537,10 @@ public class PlotAPI {
/** /**
* Get Bottom Location (min, min, min) * Get Bottom Location (min, min, min)
* *
* @param p * @param p Plot that you want to get the location for
* Plot that you want to get the location for *
* @return plot bottom location * @return plot bottom location
*
* @see com.intellectualcrafters.plot.util.PlotHelper#getPlotBottomLoc(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlotHelper#getPlotBottomLoc(org.bukkit.World,
* com.intellectualcrafters.plot.object.PlotId) * com.intellectualcrafters.plot.object.PlotId)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
@ -555,11 +553,11 @@ public class PlotAPI {
/** /**
* Get Top Location (max, max, max) * Get Top Location (max, max, max)
* *
* @param p * @param p Plot that you want to get the location for
* Plot that you want to get the location for *
* @return plot top location * @return plot top location
* @see PlotHelper#getPlotTopLoc(org.bukkit.World, *
* com.intellectualcrafters.plot.object.PlotId) * @see PlotHelper#getPlotTopLoc(org.bukkit.World, com.intellectualcrafters.plot.object.PlotId)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
*/ */
public Location getTopLocation(@NotNull final Plot p) { public Location getTopLocation(@NotNull final Plot p) {
@ -570,9 +568,10 @@ public class PlotAPI {
/** /**
* Check whether or not a player is in a plot * Check whether or not a player is in a plot
* *
* @param player * @param player who we're checking for
* who we're checking for *
* @return true if the player is in a plot, false if not- * @return true if the player is in a plot, false if not-
*
* @see com.intellectualcrafters.plot.util.PlayerFunctions#isInPlot(org.bukkit.entity.Player) * @see com.intellectualcrafters.plot.util.PlayerFunctions#isInPlot(org.bukkit.entity.Player)
*/ */
public boolean isInPlot(@NotNull final Player player) { public boolean isInPlot(@NotNull final Player player) {
@ -582,8 +581,8 @@ public class PlotAPI {
/** /**
* Register a subcommand * Register a subcommand
* *
* @param c * @param c SubCommand, that we want to register
* SubCommand, that we want to register *
* @see com.intellectualcrafters.plot.commands.MainCommand#subCommands * @see com.intellectualcrafters.plot.commands.MainCommand#subCommands
* @see com.intellectualcrafters.plot.commands.SubCommand * @see com.intellectualcrafters.plot.commands.SubCommand
*/ */
@ -595,6 +594,7 @@ public class PlotAPI {
* Get the plotMain class * Get the plotMain class
* *
* @return PlotMain Class * @return PlotMain Class
*
* @see com.intellectualcrafters.plot.PlotMain * @see com.intellectualcrafters.plot.PlotMain
*/ */
public PlotMain getPlotMain() { public PlotMain getPlotMain() {
@ -604,11 +604,11 @@ public class PlotAPI {
/** /**
* Get the player plot count * Get the player plot count
* *
* @param world * @param world Specify the world we want to select the plots from
* Specify the world we want to select the plots from * @param player Player, for whom we're getting the plot count
* @param player *
* Player, for whom we're getting the plot count
* @return the number of plots the player has * @return the number of plots the player has
*
* @see com.intellectualcrafters.plot.util.PlayerFunctions#getPlayerPlotCount(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlayerFunctions#getPlayerPlotCount(org.bukkit.World,
* org.bukkit.entity.Player) * org.bukkit.entity.Player)
*/ */
@ -619,11 +619,11 @@ public class PlotAPI {
/** /**
* Get a collection containing the players plots * Get a collection containing the players plots
* *
* @param world * @param world Specify the world we want to select the plots from
* Specify the world we want to select the plots from * @param player Player, for whom we're getting the plots
* @param player *
* Player, for whom we're getting the plots
* @return a set containing the players plots * @return a set containing the players plots
*
* @see com.intellectualcrafters.plot.util.PlayerFunctions#getPlayerPlots(org.bukkit.World, * @see com.intellectualcrafters.plot.util.PlayerFunctions#getPlayerPlots(org.bukkit.World,
* org.bukkit.entity.Player) * org.bukkit.entity.Player)
* @see com.intellectualcrafters.plot.object.Plot * @see com.intellectualcrafters.plot.object.Plot
@ -635,10 +635,10 @@ public class PlotAPI {
/** /**
* Get the numbers of plots, which the player is able to build in * Get the numbers of plots, which the player is able to build in
* *
* @param player * @param player Player, for whom we're getting the plots (trusted, helper and owner)
* Player, for whom we're getting the plots (trusted, helper and *
* owner)
* @return the number of allowed plots * @return the number of allowed plots
*
* @see com.intellectualcrafters.plot.util.PlayerFunctions#getAllowedPlots(org.bukkit.entity.Player) * @see com.intellectualcrafters.plot.util.PlayerFunctions#getAllowedPlots(org.bukkit.entity.Player)
*/ */
public int getAllowedPlots(@NotNull final Player player) { public int getAllowedPlots(@NotNull final Player player) {

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
@ -38,9 +32,12 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation") public class Auto extends SubCommand {
public class Auto extends SubCommand {
public static PlotId lastPlot = new PlotId(0, 0); public static PlotId lastPlot = new PlotId(0, 0);
public Auto() { public Auto() {
@ -53,20 +50,16 @@ public class Auto extends SubCommand {
if (absX > absY) { if (absX > absY) {
if (id.x > 0) { if (id.x > 0) {
return new PlotId(id.x, id.y + 1); return new PlotId(id.x, id.y + 1);
} } else {
else {
return new PlotId(id.x, id.y - 1); return new PlotId(id.x, id.y - 1);
} }
} } else if (absY > absX) {
else if (absY > absX) {
if (id.y > 0) { if (id.y > 0) {
return new PlotId(id.x - 1, id.y); return new PlotId(id.x - 1, id.y);
} } else {
else {
return new PlotId(id.x + 1, id.y); return new PlotId(id.x + 1, id.y);
} }
} } else {
else {
if (id.x.equals(id.y) && (id.x > 0)) { if (id.x.equals(id.y) && (id.x > 0)) {
return new PlotId(id.x, id.y + step); return new PlotId(id.x, id.y + step);
} }
@ -89,12 +82,10 @@ public class Auto extends SubCommand {
String schematic = ""; String schematic = "";
if (PlotMain.getPlotWorlds().length == 1) { if (PlotMain.getPlotWorlds().length == 1) {
world = Bukkit.getWorld(PlotMain.getPlotWorlds()[0]); world = Bukkit.getWorld(PlotMain.getPlotWorlds()[0]);
} } else {
else {
if (PlotMain.isPlotWorld(plr.getWorld())) { if (PlotMain.isPlotWorld(plr.getWorld())) {
world = plr.getWorld(); world = plr.getWorld();
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NOT_IN_PLOT_WORLD); PlayerFunctions.sendMessage(plr, C.NOT_IN_PLOT_WORLD);
return false; return false;
} }
@ -114,8 +105,7 @@ public class Auto extends SubCommand {
if (args.length > 1) { if (args.length > 1) {
schematic = args[1]; schematic = args[1];
} }
} } catch (final Exception e) {
catch (final Exception e) {
size_x = 1; size_x = 1;
size_z = 1; size_z = 1;
schematic = args[0]; schematic = args[0];
@ -123,8 +113,7 @@ public class Auto extends SubCommand {
// "&cError: Invalid size (X,Y)"); // "&cError: Invalid size (X,Y)");
// return false; // return false;
} }
} } else {
else {
schematic = args[0]; schematic = args[0];
// PlayerFunctions.sendMessage(plr, C.NO_PERMISSION); // PlayerFunctions.sendMessage(plr, C.NO_PERMISSION);
// return false; // return false;
@ -139,8 +128,7 @@ public class Auto extends SubCommand {
if ((diff + (size_x * size_z)) >= 0) { if ((diff + (size_x * size_z)) >= 0) {
if (diff < 0) { if (diff < 0) {
PlayerFunctions.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS_NUM, (-diff - 1) + ""); PlayerFunctions.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS_NUM, (-diff - 1) + "");
} } else {
else {
PlayerFunctions.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); PlayerFunctions.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS);
} }
return false; return false;
@ -188,8 +176,7 @@ public class Auto extends SubCommand {
} }
Auto.lastPlot = getNextPlot(Auto.lastPlot, 1); Auto.lastPlot = getNextPlot(Auto.lastPlot, 1);
} }
} } else {
else {
boolean lastPlot = true; boolean lastPlot = true;
while (!br) { while (!br) {
final PlotId start = getNextPlot(Auto.lastPlot, 1); final PlotId start = getNextPlot(Auto.lastPlot, 1);
@ -199,8 +186,7 @@ public class Auto extends SubCommand {
} }
if ((PlotMain.getPlots(world).get(start) != null) && (PlotMain.getPlots(world).get(start).owner != null)) { if ((PlotMain.getPlots(world).get(start) != null) && (PlotMain.getPlots(world).get(start).owner != null)) {
continue; continue;
} } else {
else {
lastPlot = false; lastPlot = false;
} }
System.out.print("UNOWNED: " + start); System.out.print("UNOWNED: " + start);

View File

@ -1,10 +1,9 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
/** /**
* Created 2014-11-09 for PlotSquared * Created 2014-11-09 for PlotSquared

View File

@ -21,11 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -39,6 +34,9 @@ import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SetBlockFast; import com.intellectualcrafters.plot.util.SetBlockFast;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
/** /**
* @author Citymonstret * @author Citymonstret
@ -71,8 +69,7 @@ public class Claim extends SubCommand {
SchematicHandler.Schematic sch; SchematicHandler.Schematic sch;
if (schematic.equals("")) { if (schematic.equals("")) {
sch = SchematicHandler.getSchematic(world.SCHEMATIC_FILE); sch = SchematicHandler.getSchematic(world.SCHEMATIC_FILE);
} } else {
else {
sch = SchematicHandler.getSchematic(schematic); sch = SchematicHandler.getSchematic(schematic);
if (sch == null) { if (sch == null) {
sch = SchematicHandler.getSchematic(world.SCHEMATIC_FILE); sch = SchematicHandler.getSchematic(world.SCHEMATIC_FILE);

View File

@ -21,9 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
@ -31,6 +28,8 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class Clear extends SubCommand { public class Clear extends SubCommand {
@ -44,23 +43,19 @@ public class Clear extends SubCommand {
// Is console // Is console
if (args.length < 2) { if (args.length < 2) {
PlotMain.sendConsoleSenderMessage("You need to specify two arguments: ID (0;0) & World (world)"); PlotMain.sendConsoleSenderMessage("You need to specify two arguments: ID (0;0) & World (world)");
} } else {
else {
final PlotId id = PlotId.fromString(args[0]); final PlotId id = PlotId.fromString(args[0]);
final String world = args[1]; final String world = args[1];
if (id == null) { if (id == null) {
PlotMain.sendConsoleSenderMessage("Invalid Plot ID: " + args[0]); PlotMain.sendConsoleSenderMessage("Invalid Plot ID: " + args[0]);
} } else {
else {
if (!PlotMain.isPlotWorld(world)) { if (!PlotMain.isPlotWorld(world)) {
PlotMain.sendConsoleSenderMessage("Invalid plot world: " + world); PlotMain.sendConsoleSenderMessage("Invalid plot world: " + world);
} } else {
else {
final Plot plot = PlotHelper.getPlot(Bukkit.getWorld(world), id); final Plot plot = PlotHelper.getPlot(Bukkit.getWorld(world), id);
if (plot == null) { if (plot == null) {
PlotMain.sendConsoleSenderMessage("Could not find plot " + args[0] + " in world " + world); PlotMain.sendConsoleSenderMessage("Could not find plot " + args[0] + " in world " + world);
} } else {
else {
plot.clear(null, false); plot.clear(null, false);
PlotMain.sendConsoleSenderMessage("Plot " + plot.getId().toString() + " cleared."); PlotMain.sendConsoleSenderMessage("Plot " + plot.getId().toString() + " cleared.");
} }

View File

@ -21,14 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import static com.intellectualcrafters.plot.object.PlotSelection.currentSelection;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotSelection; import com.intellectualcrafters.plot.object.PlotSelection;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
import static com.intellectualcrafters.plot.object.PlotSelection.currentSelection;
public class Clipboard extends SubCommand { public class Clipboard extends SubCommand {

View File

@ -177,8 +177,7 @@ public enum Command {
private final CommandPermission permission; private final CommandPermission permission;
/** /**
* @param command * @param command Command "name" (/plot [cmd])
* Command "name" (/plot [cmd])
*/ */
Command(final String command) { Command(final String command) {
this.command = command; this.command = command;
@ -187,10 +186,8 @@ public enum Command {
} }
/** /**
* @param command * @param command Command "name" (/plot [cmd])
* Command "name" (/plot [cmd]) * @param permission Command Permission Node
* @param permission
* Command Permission Node
*/ */
Command(final String command, final CommandPermission permission) { Command(final String command, final CommandPermission permission) {
this.command = command; this.command = command;
@ -199,10 +196,8 @@ public enum Command {
} }
/** /**
* @param command * @param command Command "name" (/plot [cmd])
* Command "name" (/plot [cmd]) * @param alias Command Alias
* @param alias
* Command Alias
*/ */
Command(final String command, final String alias) { Command(final String command, final String alias) {
this.command = command; this.command = command;
@ -211,12 +206,9 @@ public enum Command {
} }
/** /**
* @param command * @param command Command "name" (/plot [cmd])
* Command "name" (/plot [cmd]) * @param alias Command Alias
* @param alias * @param permission Required Permission Node
* Command Alias
* @param permission
* Required Permission Node
*/ */
Command(final String command, final String alias, final CommandPermission permission) { Command(final String command, final String alias, final CommandPermission permission) {
this.command = command; this.command = command;
@ -240,6 +232,7 @@ public enum Command {
/** /**
* @return permission object * @return permission object
*
* @see com.intellectualcrafters.plot.commands.CommandPermission * @see com.intellectualcrafters.plot.commands.CommandPermission
*/ */
public CommandPermission getPermission() { public CommandPermission getPermission() {

View File

@ -21,9 +21,8 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import org.bukkit.entity.Player;
/** /**
* Created by Citymonstret on 2014-08-03. * Created by Citymonstret on 2014-08-03.
@ -38,16 +37,15 @@ public class CommandPermission {
public final String permission; public final String permission;
/** /**
* @param permission * @param permission Command Permission
* Command Permission
*/ */
public CommandPermission(final String permission) { public CommandPermission(final String permission) {
this.permission = permission.toLowerCase(); this.permission = permission.toLowerCase();
} }
/** /**
* @param player * @param player Does the player have the permission?
* Does the player have the permission? *
* @return true of player has the required permission node * @return true of player has the required permission node
*/ */
public boolean hasPermission(final Player player) { public boolean hasPermission(final Player player) {

View File

@ -21,18 +21,17 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotComment; import com.intellectualcrafters.plot.object.PlotComment;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.apache.commons.lang.StringUtils;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.List;
public class Comment extends SubCommand { public class Comment extends SubCommand {
@ -62,8 +61,7 @@ public class Comment extends SubCommand {
DBFunc.setComment(plr.getWorld().getName(), plot, comment); DBFunc.setComment(plr.getWorld().getName(), plot, comment);
return true; return true;
} } else {
else {
return sendMessage(plr, C.NO_PERMISSION, "plots.comment." + args[0].toLowerCase()); return sendMessage(plr, C.NO_PERMISSION, "plots.comment." + args[0].toLowerCase());
} }
} }

View File

@ -21,14 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotSelection; import com.intellectualcrafters.plot.object.PlotSelection;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import org.bukkit.entity.Player;
public class Copy extends SubCommand { public class Copy extends SubCommand {

View File

@ -1,10 +1,9 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
/** /**
* Created 2014-11-09 for PlotSquared * Created 2014-11-09 for PlotSquared

View File

@ -1,15 +1,5 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.UUID;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.database.MySQL; import com.intellectualcrafters.plot.database.MySQL;
import com.intellectualcrafters.plot.database.SQLManager; import com.intellectualcrafters.plot.database.SQLManager;
@ -17,6 +7,15 @@ import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.UUID;
/** /**
* Created 2014-11-15 for PlotSquared * Created 2014-11-15 for PlotSquared
@ -34,13 +33,11 @@ public class Database extends SubCommand {
private static boolean sendMessageU(final UUID uuid, final String msg) { private static boolean sendMessageU(final UUID uuid, final String msg) {
if (uuid == null) { if (uuid == null) {
PlotMain.sendConsoleSenderMessage(msg); PlotMain.sendConsoleSenderMessage(msg);
} } else {
else {
final Player p = UUIDHandler.uuidWrapper.getPlayer(uuid); final Player p = UUIDHandler.uuidWrapper.getPlayer(uuid);
if ((p != null) && p.isOnline()) { if ((p != null) && p.isOnline()) {
return PlayerFunctions.sendMessage(p, msg); return PlayerFunctions.sendMessage(p, msg);
} } else {
else {
return sendMessageU(null, msg); return sendMessageU(null, msg);
} }
} }
@ -61,15 +58,13 @@ public class Database extends SubCommand {
manager.createPlots(ps); manager.createPlots(ps);
manager.createAllSettingsAndHelpers(ps); manager.createAllSettingsAndHelpers(ps);
sendMessageU(requester, "&6Database conversion finished"); sendMessageU(requester, "&6Database conversion finished");
} } catch (final Exception e) {
catch (final Exception e) {
sendMessageU(requester, "Failed to insert plot objects, see stacktrace for info"); sendMessageU(requester, "Failed to insert plot objects, see stacktrace for info");
e.printStackTrace(); e.printStackTrace();
} }
try { try {
c.close(); c.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -103,8 +98,7 @@ public class Database extends SubCommand {
if (n.isClosed()) { if (n.isClosed()) {
return sendMessage(plr, "Failed to open connection"); return sendMessage(plr, "Failed to open connection");
} }
} } catch (SQLException | ClassNotFoundException e) {
catch (SQLException | ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
return sendMessage(plr, "Failed to open connection, read stacktrace for info"); return sendMessage(plr, "Failed to open connection, read stacktrace for info");
} }
@ -114,8 +108,7 @@ public class Database extends SubCommand {
ResultSet set = meta.getTables(null, null, prefix + "plot", null); ResultSet set = meta.getTables(null, null, prefix + "plot", null);
if (!set.next()) { if (!set.next()) {
manager.createTables("mysql", true); manager.createTables("mysql", true);
} } else {
else {
for (final String s : this.tables) { for (final String s : this.tables) {
set = meta.getTables(null, null, prefix + s, null); set = meta.getTables(null, null, prefix + s, null);
if (!set.next()) { if (!set.next()) {
@ -123,8 +116,7 @@ public class Database extends SubCommand {
} }
} }
} }
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
return sendMessage(plr, "Could not create the required tables and/or load the database") && sendMessage(plr, "Please see the stacktrace for more information"); return sendMessage(plr, "Could not create the required tables and/or load the database") && sendMessage(plr, "Please see the stacktrace for more information");
} }
@ -149,8 +141,7 @@ public class Database extends SubCommand {
private boolean sendMessage(final Player player, final String msg) { private boolean sendMessage(final Player player, final String msg) {
if (player == null) { if (player == null) {
PlotMain.sendConsoleSenderMessage(msg); PlotMain.sendConsoleSenderMessage(msg);
} } else {
else {
PlayerFunctions.sendMessage(player, msg); PlayerFunctions.sendMessage(player, msg);
} }
return true; return true;

View File

@ -21,16 +21,15 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.util.Lag; import com.intellectualcrafters.plot.util.Lag;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.RUtils; import com.intellectualcrafters.plot.util.RUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
public class Debug extends SubCommand { public class Debug extends SubCommand {

View File

@ -21,9 +21,16 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList; import com.google.common.collect.BiMap;
import java.util.UUID; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.events.PlayerClaimPlotEvent;
import com.intellectualcrafters.plot.flag.FlagManager;
import com.intellectualcrafters.plot.object.*;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.Location; import org.bukkit.Location;
@ -32,20 +39,8 @@ import org.bukkit.block.Block;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.google.common.collect.BiMap; import java.util.ArrayList;
import com.intellectualcrafters.plot.PlotMain; import java.util.UUID;
import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.events.PlayerClaimPlotEvent;
import com.intellectualcrafters.plot.flag.FlagManager;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.object.PlotManager;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.object.StringWrapper;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler;
/** /**
* @author Citymonstret * @author Citymonstret
@ -95,8 +90,7 @@ public class DebugClaimTest extends SubCommand {
min = new PlotId(Integer.parseInt(split1[0]), Integer.parseInt(split1[1])); min = new PlotId(Integer.parseInt(split1[0]), Integer.parseInt(split1[1]));
max = new PlotId(Integer.parseInt(split2[0]), Integer.parseInt(split2[1])); max = new PlotId(Integer.parseInt(split2[0]), Integer.parseInt(split2[1]));
} } catch (final Exception e) {
catch (final Exception e) {
return !PlayerFunctions.sendMessage(null, "&cInvalid min/max values. &7The values are to Plot IDs in the format &cX;Y &7where X,Y are the plot coords\nThe conversion will only check the plots in the selected area."); return !PlayerFunctions.sendMessage(null, "&cInvalid min/max values. &7The values are to Plot IDs in the format &cX;Y &7where X,Y are the plot coords\nThe conversion will only check the plots in the selected area.");
} }
PlayerFunctions.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Beginning sign to plot conversion. This may take a while..."); PlayerFunctions.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Beginning sign to plot conversion. This may take a while...");
@ -154,8 +148,7 @@ public class DebugClaimTest extends SubCommand {
plot.owner = uuid; plot.owner = uuid;
plot.hasChanged = true; plot.hasChanged = true;
plots.add(plot); plots.add(plot);
} } else {
else {
PlayerFunctions.sendMessage(null, " - &cInvalid playername: " + plot.id + " : " + line); PlayerFunctions.sendMessage(null, " - &cInvalid playername: " + plot.id + " : " + line);
} }
} }
@ -174,13 +167,11 @@ public class DebugClaimTest extends SubCommand {
PlayerFunctions.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Complete!"); PlayerFunctions.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Complete!");
} } else {
else {
PlayerFunctions.sendMessage(null, "No plots were found for the given search."); PlayerFunctions.sendMessage(null, "No plots were found for the given search.");
} }
} } else {
else {
PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused."); PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused.");
} }
return true; return true;

View File

@ -21,13 +21,12 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.lang.reflect.Field;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
/** /**
* @author Citymonstret * @author Citymonstret
@ -45,14 +44,12 @@ public class DebugLoadTest extends SubCommand {
final Field fPlots = PlotMain.class.getDeclaredField("plots"); final Field fPlots = PlotMain.class.getDeclaredField("plots");
fPlots.setAccessible(true); fPlots.setAccessible(true);
fPlots.set(null, DBFunc.getPlots()); fPlots.set(null, DBFunc.getPlots());
} } catch (final Exception e) {
catch (final Exception e) {
PlotMain.sendConsoleSenderMessage("&3===FAILED&3==="); PlotMain.sendConsoleSenderMessage("&3===FAILED&3===");
e.printStackTrace(); e.printStackTrace();
PlotMain.sendConsoleSenderMessage("&3===END OF STACKTRACE==="); PlotMain.sendConsoleSenderMessage("&3===END OF STACKTRACE===");
} }
} } else {
else {
PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused."); PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused.");
} }
return true; return true;

View File

@ -21,14 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
import java.util.ArrayList;
/** /**
* @author Citymonstret * @author Citymonstret
@ -46,8 +45,7 @@ public class DebugSaveTest extends SubCommand {
plots.addAll(PlotMain.getPlots()); plots.addAll(PlotMain.getPlots());
DBFunc.createPlots(plots); DBFunc.createPlots(plots);
DBFunc.createAllSettingsAndHelpers(plots); DBFunc.createAllSettingsAndHelpers(plots);
} } else {
else {
PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused."); PlayerFunctions.sendMessage(plr, "This debug command can only be executed by console as it has been deemed unsafe if abused.");
} }
return true; return true;

View File

@ -21,16 +21,14 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
public class Delete extends SubCommand { public class Delete extends SubCommand {
@ -67,8 +65,7 @@ public class Delete extends SubCommand {
if ((Math.abs(plot.id.x) <= Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) <= Math.abs(Auto.lastPlot.y))) { if ((Math.abs(plot.id.x) <= Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) <= Math.abs(Auto.lastPlot.y))) {
Auto.lastPlot = plot.id; Auto.lastPlot = plot.id;
} }
} } else {
else {
PlayerFunctions.sendMessage(plr, "Plot deletion has been denied."); PlayerFunctions.sendMessage(plr, "Plot deletion has been denied.");
} }
return true; return true;

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -34,9 +28,13 @@ import com.intellectualcrafters.plot.events.PlayerPlotDeniedEvent;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@SuppressWarnings("deprecation") import java.util.UUID;
public class Denied extends SubCommand {
@SuppressWarnings("deprecation") public class Denied extends SubCommand {
public Denied() { public Denied() {
super(Command.DENIED, "Manage plot helpers", "denied {add|remove} {player}", CommandCategory.ACTIONS, true); super(Command.DENIED, "Manage plot helpers", "denied {add|remove} {player}", CommandCategory.ACTIONS, true);
@ -62,8 +60,7 @@ public class Denied extends SubCommand {
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
uuid = DBFunc.everyone; uuid = DBFunc.everyone;
} } else {
else {
uuid = UUIDHandler.getUUID(args[1]); uuid = UUIDHandler.getUUID(args[1]);
} }
if (!plot.denied.contains(uuid)) { if (!plot.denied.contains(uuid)) {
@ -88,8 +85,7 @@ public class Denied extends SubCommand {
DBFunc.setDenied(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1])); DBFunc.setDenied(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1]));
final PlayerPlotDeniedEvent event = new PlayerPlotDeniedEvent(plr, plot, uuid, true); final PlayerPlotDeniedEvent event = new PlayerPlotDeniedEvent(plr, plot, uuid, true);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED); PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED);
return false; return false;
} }
@ -103,8 +99,7 @@ public class Denied extends SubCommand {
} }
PlayerFunctions.sendMessage(plr, C.DENIED_ADDED); PlayerFunctions.sendMessage(plr, C.DENIED_ADDED);
return true; return true;
} } else if (args[0].equalsIgnoreCase("remove")) {
else if (args[0].equalsIgnoreCase("remove")) {
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
final UUID uuid = DBFunc.everyone; final UUID uuid = DBFunc.everyone;
if (!plot.denied.contains(uuid)) { if (!plot.denied.contains(uuid)) {
@ -134,8 +129,7 @@ public class Denied extends SubCommand {
final PlayerPlotDeniedEvent event = new PlayerPlotDeniedEvent(plr, plot, uuid, false); final PlayerPlotDeniedEvent event = new PlayerPlotDeniedEvent(plr, plot, uuid, false);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
PlayerFunctions.sendMessage(plr, C.DENIED_REMOVED); PlayerFunctions.sendMessage(plr, C.DENIED_REMOVED);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.DENIED_NEED_ARGUMENT); PlayerFunctions.sendMessage(plr, C.DENIED_NEED_ARGUMENT);
return true; return true;
} }

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -34,9 +28,13 @@ import com.intellectualcrafters.plot.events.PlayerPlotHelperEvent;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@SuppressWarnings("deprecation") import java.util.UUID;
public class Helpers extends SubCommand {
@SuppressWarnings("deprecation") public class Helpers extends SubCommand {
public Helpers() { public Helpers() {
super(Command.HELPERS, "Manage plot helpers", "helpers {add|remove} {player}", CommandCategory.ACTIONS, true); super(Command.HELPERS, "Manage plot helpers", "helpers {add|remove} {player}", CommandCategory.ACTIONS, true);
@ -61,8 +59,7 @@ public class Helpers extends SubCommand {
UUID uuid; UUID uuid;
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
uuid = DBFunc.everyone; uuid = DBFunc.everyone;
} } else {
else {
uuid = UUIDHandler.getUUID(args[1]); uuid = UUIDHandler.getUUID(args[1]);
} }
if (!plot.helpers.contains(uuid)) { if (!plot.helpers.contains(uuid)) {
@ -87,15 +84,13 @@ public class Helpers extends SubCommand {
DBFunc.setHelper(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1])); DBFunc.setHelper(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1]));
final PlayerPlotHelperEvent event = new PlayerPlotHelperEvent(plr, plot, uuid, true); final PlayerPlotHelperEvent event = new PlayerPlotHelperEvent(plr, plot, uuid, true);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED); PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED);
return false; return false;
} }
PlayerFunctions.sendMessage(plr, C.HELPER_ADDED); PlayerFunctions.sendMessage(plr, C.HELPER_ADDED);
return true; return true;
} } else if (args[0].equalsIgnoreCase("remove")) {
else if (args[0].equalsIgnoreCase("remove")) {
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
final UUID uuid = DBFunc.everyone; final UUID uuid = DBFunc.everyone;
if (!plot.helpers.contains(uuid)) { if (!plot.helpers.contains(uuid)) {
@ -126,8 +121,7 @@ public class Helpers extends SubCommand {
final PlayerPlotHelperEvent event = new PlayerPlotHelperEvent(plr, plot, uuid, false); final PlayerPlotHelperEvent event = new PlayerPlotHelperEvent(plr, plot, uuid, false);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
PlayerFunctions.sendMessage(plr, C.HELPER_REMOVED); PlayerFunctions.sendMessage(plr, C.HELPER_REMOVED);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.HELPER_NEED_ARGUMENT); PlayerFunctions.sendMessage(plr, C.HELPER_NEED_ARGUMENT);
return true; return true;
} }

View File

@ -21,12 +21,11 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
/** /**
* @author Citymonstret * @author Citymonstret
@ -52,16 +51,14 @@ public class Home extends SubCommand {
if (plots.length == 1) { if (plots.length == 1) {
PlotMain.teleportPlayer(plr, plr.getLocation(), plots[0]); PlotMain.teleportPlayer(plr, plr.getLocation(), plots[0]);
return true; return true;
} } else if (plots.length > 1) {
else if (plots.length > 1) {
if (args.length < 1) { if (args.length < 1) {
args = new String[]{"1"}; args = new String[]{"1"};
} }
int id = 0; int id = 0;
try { try {
id = Integer.parseInt(args[0]); id = Integer.parseInt(args[0]);
} } catch (final Exception e) {
catch (final Exception e) {
Plot temp; Plot temp;
if ((temp = isAlias(args[0])) != null) { if ((temp = isAlias(args[0])) != null) {
if (temp.hasOwner()) { if (temp.hasOwner()) {
@ -82,8 +79,7 @@ public class Home extends SubCommand {
} }
PlotMain.teleportPlayer(plr, plr.getLocation(), plots[id - 1]); PlotMain.teleportPlayer(plr, plr.getLocation(), plots[id - 1]);
return true; return true;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PLOTS); PlayerFunctions.sendMessage(plr, C.NO_PLOTS);
return true; return true;
} }

View File

@ -21,20 +21,19 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotComment; import com.intellectualcrafters.plot.object.PlotComment;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
public class Inbox extends SubCommand { public class Inbox extends SubCommand {
@ -58,17 +57,13 @@ public class Inbox extends SubCommand {
final UUID uuid = plr.getUniqueId(); final UUID uuid = plr.getUniqueId();
if (PlotMain.hasPermission(plr, "plots.admin")) { if (PlotMain.hasPermission(plr, "plots.admin")) {
tier = 0; tier = 0;
} } else if (plot.owner == uuid) {
else if (plot.owner == uuid) {
tier = 1; tier = 1;
} } else if (plot.helpers.contains(uuid)) {
else if (plot.helpers.contains(uuid)) {
tier = 2; tier = 2;
} } else if (plot.trusted.contains(uuid)) {
else if (plot.trusted.contains(uuid)) {
tier = 3; tier = 3;
} } else {
else {
tier = 4; tier = 4;
} }
@ -77,8 +72,7 @@ public class Inbox extends SubCommand {
case "admin": case "admin":
if (tier <= 0) { if (tier <= 0) {
tier = 0; tier = 0;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX); PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX);
return false; return false;
} }
@ -86,8 +80,7 @@ public class Inbox extends SubCommand {
case "owner": case "owner":
if (tier <= 1) { if (tier <= 1) {
tier = 1; tier = 1;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX); PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX);
return false; return false;
} }
@ -95,8 +88,7 @@ public class Inbox extends SubCommand {
case "helper": case "helper":
if (tier <= 2) { if (tier <= 2) {
tier = 2; tier = 2;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX); PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX);
return false; return false;
} }
@ -104,8 +96,7 @@ public class Inbox extends SubCommand {
case "trusted": case "trusted":
if (tier <= 3) { if (tier <= 3) {
tier = 3; tier = 3;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX); PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX);
return false; return false;
} }
@ -113,8 +104,7 @@ public class Inbox extends SubCommand {
case "everyone": case "everyone":
if (tier <= 4) { if (tier <= 4) {
tier = 4; tier = 4;
} } else {
else {
PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX); PlayerFunctions.sendMessage(plr, C.NO_PERM_INBOX);
return false; return false;
} }
@ -151,8 +141,7 @@ public class Inbox extends SubCommand {
plot.settings.removeComment(comment); plot.settings.removeComment(comment);
PlayerFunctions.sendMessage(plr, C.COMMENT_REMOVED, "1 comment"); PlayerFunctions.sendMessage(plr, C.COMMENT_REMOVED, "1 comment");
return; return;
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, "&cInvalid index:\n/plot inbox [tier] [clear][:#]"); PlayerFunctions.sendMessage(plr, "&cInvalid index:\n/plot inbox [tier] [clear][:#]");
return; return;
} }
@ -162,8 +151,7 @@ public class Inbox extends SubCommand {
} }
plot.settings.removeComments(comments); plot.settings.removeComments(comments);
PlayerFunctions.sendMessage(plr, C.COMMENT_REMOVED, "all comments in that category"); PlayerFunctions.sendMessage(plr, C.COMMENT_REMOVED, "all comments in that category");
} } else {
else {
final List<String> recipients = Arrays.asList("A", "O", "H", "T", "E"); final List<String> recipients = Arrays.asList("A", "O", "H", "T", "E");
int count = 1; int count = 1;
final StringBuilder message = new StringBuilder(); final StringBuilder message = new StringBuilder();

View File

@ -21,16 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -41,12 +31,20 @@ import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.UUID;
/** /**
* @author Citymonstret * @author Citymonstret
*/ */
@SuppressWarnings({ "unused", "deprecated", "javadoc" }) @SuppressWarnings({"unused", "deprecated", "javadoc"}) public class Info extends SubCommand {
public class Info extends SubCommand {
public Info() { public Info() {
super(Command.INFO, "Display plot info", "info", CommandCategory.INFO, false); super(Command.INFO, "Display plot info", "info", CommandCategory.INFO, false);
@ -63,8 +61,7 @@ public class Info extends SubCommand {
return false; return false;
} }
plot = PlayerFunctions.getCurrentPlot(player); plot = PlayerFunctions.getCurrentPlot(player);
} } else {
else {
if (args.length < 2) { if (args.length < 2) {
PlayerFunctions.sendMessage(null, C.INFO_SYNTAX_CONSOLE); PlayerFunctions.sendMessage(null, C.INFO_SYNTAX_CONSOLE);
return false; return false;
@ -85,12 +82,10 @@ public class Info extends SubCommand {
world = Bukkit.getWorld(args[0]); world = Bukkit.getWorld(args[0]);
if (args.length == 3) { if (args.length == 3) {
args = new String[]{args[2]}; args = new String[]{args[2]};
} } else {
else {
args = new String[0]; args = new String[0];
} }
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(player, C.INFO_SYNTAX_CONSOLE); PlayerFunctions.sendMessage(player, C.INFO_SYNTAX_CONSOLE);
return false; return false;
} }
@ -215,8 +210,7 @@ public class Info extends SubCommand {
for (int x = 0; x < l.size(); x++) { for (int x = 0; x < l.size(); x++) {
if ((x + 1) == l.size()) { if ((x + 1) == l.size()) {
list.append(c.replace("%user%", getPlayerName(l.get(x))).replace(",", "")); list.append(c.replace("%user%", getPlayerName(l.get(x))).replace(",", ""));
} } else {
else {
list.append(c.replace("%user%", getPlayerName(l.get(x)))); list.append(c.replace("%user%", getPlayerName(l.get(x))));
} }
} }

View File

@ -21,8 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -30,6 +28,8 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
public class Inventory extends SubCommand { public class Inventory extends SubCommand {
public Inventory() { public Inventory() {

View File

@ -21,16 +21,14 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@SuppressWarnings({ "unused", "deprecation", "javadoc" }) @SuppressWarnings({"unused", "deprecation", "javadoc"}) public class Kick extends SubCommand {
public class Kick extends SubCommand {
public Kick() { public Kick() {
super(Command.KICK, "Kick a player from your plot", "kick", CommandCategory.ACTIONS, true); super(Command.KICK, "Kick a player from your plot", "kick", CommandCategory.ACTIONS, true);

View File

@ -21,10 +21,10 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList; import com.intellectualcrafters.plot.PlotMain;
import java.util.Arrays; import com.intellectualcrafters.plot.config.C;
import java.util.List; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.StringComparison;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
@ -32,10 +32,9 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import java.util.ArrayList;
import com.intellectualcrafters.plot.config.C; import java.util.Arrays;
import com.intellectualcrafters.plot.util.PlayerFunctions; import java.util.List;
import com.intellectualcrafters.plot.util.StringComparison;
/** /**
* PlotMain command class * PlotMain command class
@ -152,8 +151,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
String arg2; String arg2;
if (args.length > 2) { if (args.length > 2) {
arg2 = args[2]; arg2 = args[2];
} } else {
else {
arg2 = "1"; arg2 = "1";
} }
@ -175,8 +173,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
} }
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', help.toString())); sender.sendMessage(ChatColor.translateAlternateColorCodes('&', help.toString()));
// return PlayerFunctions.sendMessage(player, help.toString()); // return PlayerFunctions.sendMessage(player, help.toString());
} } else {
else {
for (final SubCommand command : subCommands) { for (final SubCommand command : subCommands) {
if (command.cmd.equalsIgnoreCase(args[0]) || command.alias.contains(args[0].toLowerCase())) { if (command.cmd.equalsIgnoreCase(args[0]) || command.alias.contains(args[0].toLowerCase())) {
final String[] arguments = new String[args.length - 1]; final String[] arguments = new String[args.length - 1];
@ -184,12 +181,10 @@ public class MainCommand implements CommandExecutor, TabCompleter {
if (command.permission.hasPermission(player)) { if (command.permission.hasPermission(player)) {
if ((player != null) || !command.isPlayer) { if ((player != null) || !command.isPlayer) {
return command.execute(player, arguments); return command.execute(player, arguments);
} } else {
else {
return !PlayerFunctions.sendMessage(null, C.IS_CONSOLE); return !PlayerFunctions.sendMessage(null, C.IS_CONSOLE);
} }
} } else {
else {
return no_permission(player, command.permission.permission.toLowerCase()); return no_permission(player, command.permission.permission.toLowerCase());
} }
} }
@ -234,8 +229,7 @@ public class MainCommand implements CommandExecutor, TabCompleter {
if (cmd.permission.hasPermission(player)) { if (cmd.permission.hasPermission(player)) {
if (cmd.cmd.startsWith(arg)) { if (cmd.cmd.startsWith(arg)) {
tabOptions.add(cmd.cmd); tabOptions.add(cmd.cmd);
} } else if (cmd.alias.get(0).startsWith(arg)) {
else if (cmd.alias.get(0).startsWith(arg)) {
tabOptions.add(cmd.alias.get(0)); tabOptions.add(cmd.alias.get(0));
} }
} }

View File

@ -21,15 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import net.milkbowl.vault.economy.Economy;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.events.PlotMergeEvent; import com.intellectualcrafters.plot.events.PlotMergeEvent;
@ -39,6 +30,13 @@ import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SetBlockFast; import com.intellectualcrafters.plot.util.SetBlockFast;
import net.milkbowl.vault.economy.Economy;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.ArrayList;
/** /**
* @author Citymonstret * @author Citymonstret

View File

@ -21,18 +21,17 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.Arrays; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.listeners.PlotPlusListener;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import com.intellectualcrafters.plot.config.C; import java.util.Arrays;
import com.intellectualcrafters.plot.listeners.PlotPlusListener;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions;
public class MusicSubcommand extends SubCommand { public class MusicSubcommand extends SubCommand {
public MusicSubcommand() { public MusicSubcommand() {

View File

@ -1,10 +1,9 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
/** /**
* Created 2014-11-09 for PlotSquared * Created 2014-11-09 for PlotSquared

View File

@ -21,14 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotSelection; import com.intellectualcrafters.plot.object.PlotSelection;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import org.bukkit.entity.Player;
public class Paste extends SubCommand { public class Paste extends SubCommand {
@ -62,8 +61,7 @@ public class Paste extends SubCommand {
} }
selection.paste(plr.getWorld(), plot); selection.paste(plr.getWorld(), plot);
sendMessage(plr, C.PASTED); sendMessage(plr, C.PASTED);
} } else {
else {
sendMessage(plr, C.NO_CLIPBOARD); sendMessage(plr, C.NO_CLIPBOARD);
return false; return false;
} }

View File

@ -21,16 +21,14 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
@SuppressWarnings({ "unused", "deprecated", "javadoc" }) @SuppressWarnings({"unused", "deprecated", "javadoc"}) public class Purge extends SubCommand {
public class Purge extends SubCommand {
public Purge() { public Purge() {
super("purge", "plots.admin", "Purge all plots for a world", "purge", "", CommandCategory.DEBUG, false); super("purge", "plots.admin", "Purge all plots for a world", "purge", "", CommandCategory.DEBUG, false);
@ -60,8 +58,7 @@ public class Purge extends SubCommand {
DBFunc.purge(world, id); DBFunc.purge(world, id);
PlayerFunctions.sendMessage(null, "&aPurge of '" + args[0] + "' was successful!"); PlayerFunctions.sendMessage(null, "&aPurge of '" + args[0] + "' was successful!");
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID); PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID);
} }
} }
@ -77,8 +74,7 @@ public class Purge extends SubCommand {
DBFunc.purge(args[0]); DBFunc.purge(args[0]);
PlayerFunctions.sendMessage(plr, (C.PURGE_SUCCESS)); PlayerFunctions.sendMessage(plr, (C.PURGE_SUCCESS));
return true; return true;
} } else {
else {
PlayerFunctions.sendMessage(plr, "This is a dangerous command, if you are sure, use /plot purge {world} -o"); PlayerFunctions.sendMessage(plr, "This is a dangerous command, if you are sure, use /plot purge {world} -o");
return false; return false;
} }

View File

@ -21,15 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
@SuppressWarnings({ "unused", "deprecated", "javadoc" }) @SuppressWarnings({"unused", "deprecated", "javadoc"}) public class Rate extends SubCommand {
public class Rate extends SubCommand {
/* /*
* String cmd, String permission, String description, String usage, String * String cmd, String permission, String description, String usage, String
@ -79,8 +77,7 @@ public class Rate extends SubCommand {
boolean rated = true; boolean rated = true;
try { try {
DBFunc.getRatings(plot); DBFunc.getRatings(plot);
} } catch (final Exception e) {
catch (final Exception e) {
rated = false; rated = false;
} }
@ -90,8 +87,7 @@ public class Rate extends SubCommand {
final boolean success = true; final boolean success = true;
if (success) { if (success) {
sendMessage(plr, C.RATING_APPLIED, plot.getId().toString()); sendMessage(plr, C.RATING_APPLIED, plot.getId().toString());
} } else {
else {
sendMessage(plr, C.COMMAND_WENT_WRONG); sendMessage(plr, C.COMMAND_WENT_WRONG);
} }
return true; return true;

View File

@ -21,12 +21,11 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
public class Reload extends SubCommand { public class Reload extends SubCommand {
@ -47,8 +46,7 @@ public class Reload extends SubCommand {
plotworld.loadDefaultConfiguration(PlotMain.config.getConfigurationSection("worlds." + pw)); plotworld.loadDefaultConfiguration(PlotMain.config.getConfigurationSection("worlds." + pw));
} }
PlotMain.BroadcastWithPerms(C.RELOADED_CONFIGS); PlotMain.BroadcastWithPerms(C.RELOADED_CONFIGS);
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.RELOAD_FAILED); PlayerFunctions.sendMessage(plr, C.RELOAD_FAILED);
} }
return true; return true;

View File

@ -21,28 +21,23 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.Collection;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import com.intellectualcrafters.jnbt.CompoundTag; import com.intellectualcrafters.jnbt.CompoundTag;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.*;
import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SchematicHandler.DataCollection; import com.intellectualcrafters.plot.util.SchematicHandler.DataCollection;
import com.intellectualcrafters.plot.util.SchematicHandler.Dimension; import com.intellectualcrafters.plot.util.SchematicHandler.Dimension;
import com.intellectualcrafters.plot.util.SetBlockFast; import org.bukkit.Bukkit;
import com.intellectualcrafters.plot.util.UUIDHandler; import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.Collection;
import java.util.HashMap;
public class Schematic extends SubCommand { public class Schematic extends SubCommand {
@ -119,8 +114,7 @@ public class Schematic extends SubCommand {
final Location loc = plr.getLocation(); final Location loc = plr.getLocation();
x = Math.min(length2 - dem.getX(), loc.getBlockX() - bot.getBlockX()); x = Math.min(length2 - dem.getX(), loc.getBlockX() - bot.getBlockX());
z = Math.min(length2 - dem.getZ(), loc.getBlockZ() - bot.getBlockZ()); z = Math.min(length2 - dem.getZ(), loc.getBlockZ() - bot.getBlockZ());
} } else {
else {
x = 0; x = 0;
z = 0; z = 0;
} }
@ -237,8 +231,7 @@ public class Schematic extends SubCommand {
final String owner = o == null ? "unknown" : o; final String owner = o == null ? "unknown" : o;
if (sch == null) { if (sch == null) {
PlayerFunctions.sendMessage(null, "&7 - Skipped plot &c" + plot.id); PlayerFunctions.sendMessage(null, "&7 - Skipped plot &c" + plot.id);
} } else {
else {
Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getServer().getPluginManager().getPlugin("PlotSquared"), new Runnable() { Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getServer().getPluginManager().getPlugin("PlotSquared"), new Runnable() {
@Override @Override
public void run() { public void run() {
@ -246,8 +239,7 @@ public class Schematic extends SubCommand {
final boolean result = SchematicHandler.save(sch, Settings.SCHEMATIC_SAVE_PATH + "/" + plot.id.x + ";" + plot.id.y + "," + worldname + "," + owner + ".schematic"); final boolean result = SchematicHandler.save(sch, Settings.SCHEMATIC_SAVE_PATH + "/" + plot.id.x + ";" + plot.id.y + "," + worldname + "," + owner + ".schematic");
if (!result) { if (!result) {
PlayerFunctions.sendMessage(null, "&7 - Failed to save &c" + plot.id); PlayerFunctions.sendMessage(null, "&7 - Failed to save &c" + plot.id);
} } else {
else {
PlayerFunctions.sendMessage(null, "&7 - &aExport success: " + plot.id); PlayerFunctions.sendMessage(null, "&7 - &aExport success: " + plot.id);
} }
} }
@ -281,8 +273,7 @@ public class Schematic extends SubCommand {
} }
p2 = myplot; p2 = myplot;
world = plr.getWorld().getName(); world = plr.getWorld().getName();
} } else {
else {
if (args.length == 3) { if (args.length == 3) {
try { try {
world = args[0]; world = args[0];
@ -293,13 +284,11 @@ public class Schematic extends SubCommand {
return false; return false;
} }
p2 = PlotMain.getPlots(world).get(i); p2 = PlotMain.getPlots(world).get(i);
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(null, "&cInvalid world or id. Use &7/plots sch save <world> <id>"); PlayerFunctions.sendMessage(null, "&cInvalid world or id. Use &7/plots sch save <world> <id>");
return false; return false;
} }
} } else {
else {
PlayerFunctions.sendMessage(null, "&cInvalid world or id. Use &7/plots sch save <world> <id>"); PlayerFunctions.sendMessage(null, "&cInvalid world or id. Use &7/plots sch save <world> <id>");
return false; return false;
} }
@ -326,8 +315,7 @@ public class Schematic extends SubCommand {
final String owner = o == null ? "unknown" : o; final String owner = o == null ? "unknown" : o;
if (sch == null) { if (sch == null) {
PlayerFunctions.sendMessage(plr, "&7 - Skipped plot &c" + plot.id); PlayerFunctions.sendMessage(plr, "&7 - Skipped plot &c" + plot.id);
} } else {
else {
Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getServer().getPluginManager().getPlugin("PlotSquared"), new Runnable() { Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getServer().getPluginManager().getPlugin("PlotSquared"), new Runnable() {
@Override @Override
public void run() { public void run() {
@ -335,8 +323,7 @@ public class Schematic extends SubCommand {
final boolean result = SchematicHandler.save(sch, Settings.SCHEMATIC_SAVE_PATH + "/" + plot.id.x + ";" + plot.id.y + "," + world + "," + owner.trim() + ".schematic"); final boolean result = SchematicHandler.save(sch, Settings.SCHEMATIC_SAVE_PATH + "/" + plot.id.x + ";" + plot.id.y + "," + world + "," + owner.trim() + ".schematic");
if (!result) { if (!result) {
PlayerFunctions.sendMessage(plr, "&7 - Failed to save &c" + plot.id); PlayerFunctions.sendMessage(plr, "&7 - Failed to save &c" + plot.id);
} } else {
else {
PlayerFunctions.sendMessage(plr, "&7 - &aExport success: " + plot.id); PlayerFunctions.sendMessage(plr, "&7 - &aExport success: " + plot.id);
} }
} }

View File

@ -21,17 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -48,6 +37,16 @@ import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/** /**
* @author Citymonstret * @author Citymonstret
@ -100,8 +99,7 @@ public class Set extends SubCommand {
if (PlotMain.worldGuardListener != null) { if (PlotMain.worldGuardListener != null) {
if (message.equals("")) { if (message.equals("")) {
message = StringUtils.join(PlotMain.worldGuardListener.str_flags, "&c, &6"); message = StringUtils.join(PlotMain.worldGuardListener.str_flags, "&c, &6");
} } else {
else {
message += "," + StringUtils.join(PlotMain.worldGuardListener.str_flags, "&c, &6"); message += "," + StringUtils.join(PlotMain.worldGuardListener.str_flags, "&c, &6");
} }
} }
@ -113,8 +111,7 @@ public class Set extends SubCommand {
try { try {
af = FlagManager.getFlag(args[1].toLowerCase()); af = FlagManager.getFlag(args[1].toLowerCase());
} } catch (final Exception e) {
catch (final Exception e) {
af = new AbstractFlag(args[1].toLowerCase()); af = new AbstractFlag(args[1].toLowerCase());
} }
@ -183,8 +180,7 @@ public class Set extends SubCommand {
PlayerFunctions.sendMessage(plr, C.FLAG_ADDED); PlayerFunctions.sendMessage(plr, C.FLAG_ADDED);
PlotListener.plotEntry(plr, plot); PlotListener.plotEntry(plr, plot);
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, "&c" + e.getMessage()); PlayerFunctions.sendMessage(plr, "&c" + e.getMessage());
return false; return false;
} }
@ -275,8 +271,7 @@ public class Set extends SubCommand {
Material material; Material material;
try { try {
material = getMaterial(args[1], PlotWorld.BLOCKS); material = getMaterial(args[1], PlotWorld.BLOCKS);
} } catch (final NullPointerException e) {
catch (final NullPointerException e) {
material = null; material = null;
} }
/* /*
@ -296,8 +291,7 @@ public class Set extends SubCommand {
if (args.length > 2) { if (args.length > 2) {
try { try {
data = (byte) Integer.parseInt(args[2]); data = (byte) Integer.parseInt(args[2]);
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA); PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA);
return true; return true;
} }
@ -317,8 +311,7 @@ public class Set extends SubCommand {
return true; return true;
} }
// //
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked") final ArrayList<Material> materials = (ArrayList<Material>) ((ArrayList<Material>) PlotWorld.BLOCKS).clone();
final ArrayList<Material> materials = (ArrayList<Material>) ((ArrayList<Material>) PlotWorld.BLOCKS).clone();
materials.add(Material.AIR); materials.add(Material.AIR);
// //
final String[] strings = args[1].split(","); final String[] strings = args[1].split(",");
@ -352,13 +345,11 @@ public class Set extends SubCommand {
if (ss.length == 1) { if (ss.length == 1) {
blocks[index] = new PlotBlock((short) m.getId(), (byte) 0); blocks[index] = new PlotBlock((short) m.getId(), (byte) 0);
} } else {
else {
byte b; byte b;
try { try {
b = (byte) Integer.parseInt(ss[1]); b = (byte) Integer.parseInt(ss[1]);
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA); PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA);
return true; return true;
} }
@ -402,8 +393,7 @@ public class Set extends SubCommand {
if (args.length > 2) { if (args.length > 2) {
try { try {
data = (byte) Integer.parseInt(args[2]); data = (byte) Integer.parseInt(args[2]);
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA); PlayerFunctions.sendMessage(plr, C.NOT_VALID_DATA);
return true; return true;
} }
@ -415,8 +405,7 @@ public class Set extends SubCommand {
AbstractFlag af; AbstractFlag af;
try { try {
af = new AbstractFlag(args[0].toLowerCase()); af = new AbstractFlag(args[0].toLowerCase());
} } catch (final Exception e) {
catch (final Exception e) {
af = new AbstractFlag(""); af = new AbstractFlag("");
} }
if (FlagManager.getFlags().contains(af)) { if (FlagManager.getFlags().contains(af)) {

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.UUID;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -35,9 +29,13 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.World;
import org.bukkit.entity.Player;
@SuppressWarnings("deprecation") import java.util.ArrayList;
public class SetOwner extends SubCommand { import java.util.UUID;
@SuppressWarnings("deprecation") public class SetOwner extends SubCommand {
public SetOwner() { public SetOwner() {
super("setowner", "plots.admin", "Set the plot owner", "setowner {player}", "so", CommandCategory.ACTIONS, true); super("setowner", "plots.admin", "Set the plot owner", "setowner {player}", "so", CommandCategory.ACTIONS, true);

View File

@ -21,11 +21,13 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.io.IOException; import com.intellectualcrafters.plot.PlotMain;
import java.util.ArrayList; import com.intellectualcrafters.plot.config.C;
import java.util.HashMap; import com.intellectualcrafters.plot.config.ConfigurationNode;
import java.util.Map; import com.intellectualcrafters.plot.generator.DefaultPlotWorld;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -35,13 +37,10 @@ import org.bukkit.event.Listener;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.intellectualcrafters.plot.PlotMain; import java.io.IOException;
import com.intellectualcrafters.plot.config.C; import java.util.ArrayList;
import com.intellectualcrafters.plot.config.ConfigurationNode; import java.util.HashMap;
import com.intellectualcrafters.plot.generator.DefaultPlotWorld; import java.util.Map;
import com.intellectualcrafters.plot.object.PlotGenerator;
import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions;
/** /**
* Created 2014-09-26 for PlotSquared * Created 2014-09-26 for PlotSquared
@ -62,8 +61,7 @@ public class Setup extends SubCommand implements Listener {
if (plr == null) { if (plr == null) {
plrname = ""; plrname = "";
} } else {
else {
plrname = plr.getName(); plrname = plr.getName();
} }
@ -77,20 +75,17 @@ public class Setup extends SubCommand implements Listener {
} }
try { try {
PlotMain.config.save(PlotMain.configFile); PlotMain.config.save(PlotMain.configFile);
} } catch (final IOException e) {
catch (final IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
// Creating the worlds // Creating the worlds
if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) { if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.plugin); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.plugin);
} } else {
else {
if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) { if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.plugin); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.plugin);
} } else {
else {
for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) { for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (plugin.isEnabled()) { if (plugin.isEnabled()) {
if (plugin.getDefaultWorldGenerator("world", "") != null) { if (plugin.getDefaultWorldGenerator("world", "") != null) {
@ -120,8 +115,7 @@ public class Setup extends SubCommand implements Listener {
if (args.length < 1) { if (args.length < 1) {
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
return true; return true;
} } else {
else {
if (args[0].equalsIgnoreCase("cancel")) { if (args[0].equalsIgnoreCase("cancel")) {
setupMap.remove(plrname); setupMap.remove(plrname);
PlayerFunctions.sendMessage(plr, "&cCancelled setup."); PlayerFunctions.sendMessage(plr, "&cCancelled setup.");
@ -133,8 +127,7 @@ public class Setup extends SubCommand implements Listener {
step = object.step[object.current]; step = object.step[object.current];
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
return true; return true;
} } else {
else {
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
return true; return true;
} }
@ -151,15 +144,13 @@ public class Setup extends SubCommand implements Listener {
step = object.step[object.current]; step = object.step[object.current];
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
return true; return true;
} } else {
else {
sendMessage(plr, C.SETUP_INVALID_ARG, args[0], step.getConstant()); sendMessage(plr, C.SETUP_INVALID_ARG, args[0], step.getConstant());
sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); sendMessage(plr, C.SETUP_STEP, object.current + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + "");
return true; return true;
} }
} }
} } else {
else {
if (args.length < 1) { if (args.length < 1) {
sendMessage(plr, C.SETUP_MISSING_WORLD); sendMessage(plr, C.SETUP_MISSING_WORLD);
return true; return true;
@ -202,8 +193,7 @@ public class Setup extends SubCommand implements Listener {
PlotWorld plotworld; PlotWorld plotworld;
if (generator instanceof PlotGenerator) { if (generator instanceof PlotGenerator) {
plotworld = ((PlotGenerator) generator).getNewPlotWorld(world); plotworld = ((PlotGenerator) generator).getNewPlotWorld(world);
} } else {
else {
plotworld = new DefaultPlotWorld(world); plotworld = new DefaultPlotWorld(world);
} }

View File

@ -21,21 +21,19 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.Arrays;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Arrays;
/** /**
* SubCommand class * SubCommand class
* *
* @author Citymonstret * @author Citymonstret
*/ */
@SuppressWarnings({ "deprecation", "unused" }) @SuppressWarnings({"deprecation", "unused"}) public abstract class SubCommand {
public abstract class SubCommand {
/** /**
* Command * Command
@ -67,18 +65,12 @@ public abstract class SubCommand {
public final boolean isPlayer; public final boolean isPlayer;
/** /**
* @param cmd * @param cmd Command /plot {cmd} <-- That!
* Command /plot {cmd} <-- That! * @param permission Permission Node
* @param permission * @param description Simple description
* Permission Node * @param usage Usage description: /plot command {args...}
* @param description * @param alias Command alias
* Simple description * @param category CommandCategory. Pick whichever is closest to what you want.
* @param usage
* Usage description: /plot command {args...}
* @param alias
* Command alias
* @param category
* CommandCategory. Pick whichever is closest to what you want.
*/ */
public SubCommand(final String cmd, final String permission, final String description, final String usage, final String alias, final CommandCategory category, final boolean isPlayer) { public SubCommand(final String cmd, final String permission, final String description, final String usage, final String alias, final CommandCategory category, final boolean isPlayer) {
this.cmd = cmd; this.cmd = cmd;
@ -92,18 +84,12 @@ public abstract class SubCommand {
} }
/** /**
* @param cmd * @param cmd Command /plot {cmd} <-- That!
* Command /plot {cmd} <-- That! * @param permission Permission Node
* @param permission * @param description Simple description
* Permission Node * @param usage Usage description: /plot command {args...}
* @param description * @param aliases Command aliases
* Simple description * @param category CommandCategory. Pick whichever is closest to what you want.
* @param usage
* Usage description: /plot command {args...}
* @param aliases
* Command aliases
* @param category
* CommandCategory. Pick whichever is closest to what you want.
*/ */
public SubCommand(final String cmd, final String permission, final String description, final String usage, final CommandCategory category, final boolean isPlayer, final String... aliases) { public SubCommand(final String cmd, final String permission, final String description, final String usage, final CommandCategory category, final boolean isPlayer, final String... aliases) {
this.cmd = cmd; this.cmd = cmd;
@ -117,14 +103,10 @@ public abstract class SubCommand {
} }
/** /**
* @param command * @param command Command /plot {cmd} <-- That!
* Command /plot {cmd} <-- That! * @param description Simple description
* @param description * @param usage Usage description: /plot command {args...}
* Simple description * @param category CommandCategory. Pick whichever closests to what you want.
* @param usage
* Usage description: /plot command {args...}
* @param category
* CommandCategory. Pick whichever closests to what you want.
*/ */
public SubCommand(final Command command, final String description, final String usage, final CommandCategory category, final boolean isPlayer) { public SubCommand(final Command command, final String description, final String usage, final CommandCategory category, final boolean isPlayer) {
this.cmd = command.getCommand(); this.cmd = command.getCommand();
@ -140,10 +122,9 @@ public abstract class SubCommand {
/** /**
* Execute. * Execute.
* *
* @param plr * @param plr executor
* executor * @param args arguments
* @param args *
* arguments
* @return true on success, false on failure * @return true on success, false on failure
*/ */
public abstract boolean execute(final Player plr, final String... args); public abstract boolean execute(final Player plr, final String... args);
@ -151,8 +132,7 @@ public abstract class SubCommand {
/** /**
* Execute the command as console * Execute the command as console
* *
* @param args * @param args Arguments
* Arguments
*/ */
public void executeConsole(final String... args) { public void executeConsole(final String... args) {
this.execute(null, args); this.execute(null, args);
@ -161,12 +141,10 @@ public abstract class SubCommand {
/** /**
* Send a message * Send a message
* *
* @param plr * @param plr Player who will receive the mssage
* Player who will receive the mssage * @param c Caption
* @param c * @param args Arguments (%s's)
* Caption *
* @param args
* Arguments (%s's)
* @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player, * @see com.intellectualcrafters.plot.util.PlayerFunctions#sendMessage(org.bukkit.entity.Player,
* com.intellectualcrafters.plot.config.C, String...) * com.intellectualcrafters.plot.config.C, String...)
*/ */
@ -221,8 +199,7 @@ public abstract class SubCommand {
/** /**
* Constructor * Constructor
* *
* @param name * @param name readable name
* readable name
*/ */
CommandCategory(final String name) { CommandCategory(final String name) {
this.name = name; this.name = name;

View File

@ -21,9 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
@ -32,6 +29,8 @@ import com.intellectualcrafters.plot.object.PlotSelection;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SetBlockFast; import com.intellectualcrafters.plot.util.SetBlockFast;
import org.bukkit.World;
import org.bukkit.entity.Player;
/** /**
* Created 2014-08-01 for PlotSquared * Created 2014-08-01 for PlotSquared
@ -74,8 +73,7 @@ public class Swap extends SubCommand {
PlayerFunctions.sendMessage(plr, C.NO_PERM_MERGE, plotid.toString()); PlayerFunctions.sendMessage(plr, C.NO_PERM_MERGE, plotid.toString());
return false; return false;
} }
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID); PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID);
PlayerFunctions.sendMessage(plr, C.SWAP_SYNTAX); PlayerFunctions.sendMessage(plr, C.SWAP_SYNTAX);
return false; return false;

View File

@ -21,17 +21,16 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
/** /**
* @author Citymonstret * @author Citymonstret
@ -70,8 +69,7 @@ public class TP extends SubCommand {
plotid = new PlotId(Integer.parseInt(id.split(";")[0]), Integer.parseInt(id.split(";")[1])); plotid = new PlotId(Integer.parseInt(id.split(";")[0]), Integer.parseInt(id.split(";")[1]));
PlotMain.teleportPlayer(plr, plr.getLocation(), PlotHelper.getPlot(world, plotid)); PlotMain.teleportPlayer(plr, plr.getLocation(), PlotHelper.getPlot(world, plotid));
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID); PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID);
} }
return false; return false;
@ -86,8 +84,7 @@ public class TP extends SubCommand {
} }
a = split[0]; a = split[0];
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation") final Player player = Bukkit.getPlayer(a);
final Player player = Bukkit.getPlayer(a);
if (player != null) { if (player != null) {
final java.util.Set<Plot> plotMainPlots = PlotMain.getPlots(world, player); final java.util.Set<Plot> plotMainPlots = PlotMain.getPlots(world, player);
final Plot[] plots = plotMainPlots.toArray(new Plot[plotMainPlots.size()]); final Plot[] plots = plotMainPlots.toArray(new Plot[plotMainPlots.size()]);

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -34,9 +28,13 @@ import com.intellectualcrafters.plot.events.PlayerPlotTrustedEvent;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@SuppressWarnings("deprecation") import java.util.UUID;
public class Trusted extends SubCommand {
@SuppressWarnings("deprecation") public class Trusted extends SubCommand {
public Trusted() { public Trusted() {
super(Command.TRUSTED, "Manage trusted users for a plot", "trusted {add|remove} {player}", CommandCategory.ACTIONS, true); super(Command.TRUSTED, "Manage trusted users for a plot", "trusted {add|remove} {player}", CommandCategory.ACTIONS, true);
@ -62,8 +60,7 @@ public class Trusted extends SubCommand {
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
uuid = DBFunc.everyone; uuid = DBFunc.everyone;
} } else {
else {
uuid = UUIDHandler.getUUID(args[1]); uuid = UUIDHandler.getUUID(args[1]);
} }
if (!plot.trusted.contains(uuid)) { if (!plot.trusted.contains(uuid)) {
@ -88,15 +85,13 @@ public class Trusted extends SubCommand {
DBFunc.setTrusted(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1])); DBFunc.setTrusted(plr.getWorld().getName(), plot, Bukkit.getOfflinePlayer(args[1]));
final PlayerPlotTrustedEvent event = new PlayerPlotTrustedEvent(plr, plot, uuid, true); final PlayerPlotTrustedEvent event = new PlayerPlotTrustedEvent(plr, plot, uuid, true);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED); PlayerFunctions.sendMessage(plr, C.ALREADY_ADDED);
return false; return false;
} }
PlayerFunctions.sendMessage(plr, C.TRUSTED_ADDED); PlayerFunctions.sendMessage(plr, C.TRUSTED_ADDED);
return true; return true;
} } else if (args[0].equalsIgnoreCase("remove")) {
else if (args[0].equalsIgnoreCase("remove")) {
if (args[1].equalsIgnoreCase("*")) { if (args[1].equalsIgnoreCase("*")) {
final UUID uuid = DBFunc.everyone; final UUID uuid = DBFunc.everyone;
if (!plot.trusted.contains(uuid)) { if (!plot.trusted.contains(uuid)) {
@ -127,8 +122,7 @@ public class Trusted extends SubCommand {
final PlayerPlotTrustedEvent event = new PlayerPlotTrustedEvent(plr, plot, uuid, false); final PlayerPlotTrustedEvent event = new PlayerPlotTrustedEvent(plr, plot, uuid, false);
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
PlayerFunctions.sendMessage(plr, C.TRUSTED_REMOVED); PlayerFunctions.sendMessage(plr, C.TRUSTED_REMOVED);
} } else {
else {
PlayerFunctions.sendMessage(plr, C.TRUSTED_NEED_ARGUMENT); PlayerFunctions.sendMessage(plr, C.TRUSTED_NEED_ARGUMENT);
return true; return true;
} }

View File

@ -1,10 +1,9 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.entity.Player;
/** /**
* Created 2014-11-09 for PlotSquared * Created 2014-11-09 for PlotSquared

View File

@ -21,16 +21,14 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.object.PlotWorld;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
public class Unclaim extends SubCommand { public class Unclaim extends SubCommand {
@ -66,9 +64,14 @@ public class Unclaim extends SubCommand {
if ((Math.abs(plot.id.x) <= Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) <= Math.abs(Auto.lastPlot.y))) { if ((Math.abs(plot.id.x) <= Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) <= Math.abs(Auto.lastPlot.y))) {
Auto.lastPlot = plot.id; Auto.lastPlot = plot.id;
} }
<<<<<<< HEAD
} }
else { else {
PlayerFunctions.sendMessage(plr, "Plot unclaim has been denied."); PlayerFunctions.sendMessage(plr, "Plot unclaim has been denied.");
=======
} else {
PlayerFunctions.sendMessage(plr, "Plot removal has been denied.");
>>>>>>> 73e92b834155ea9e458d7299ad78f4fd9b55aa66
} }
PlayerFunctions.sendMessage(plr, C.UNCLAIM_SUCCESS); PlayerFunctions.sendMessage(plr, C.UNCLAIM_SUCCESS);
return true; return true;

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.DBFunc;
@ -39,6 +33,11 @@ import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.PlotHelper; import com.intellectualcrafters.plot.util.PlotHelper;
import com.intellectualcrafters.plot.util.SetBlockFast; import com.intellectualcrafters.plot.util.SetBlockFast;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.util.ArrayList;
/** /**
* Created 2014-08-01 for PlotSquared * Created 2014-08-01 for PlotSquared
@ -126,13 +125,11 @@ public class Unlink extends SubCommand {
if (PlotHelper.canSetFast) { if (PlotHelper.canSetFast) {
SetBlockFast.update(plr); SetBlockFast.update(plr);
} }
} } catch (final Exception e) {
catch (final Exception e) {
// execute(final Player plr, final String... args) { // execute(final Player plr, final String... args) {
try { try {
PlotMain.sendConsoleSenderMessage("Error on: " + getClass().getMethod("execute", Player.class, String[].class).toGenericString() + ":119, when trying to use \"SetBlockFast#update\""); PlotMain.sendConsoleSenderMessage("Error on: " + getClass().getMethod("execute", Player.class, String[].class).toGenericString() + ":119, when trying to use \"SetBlockFast#update\"");
} } catch (final Exception ex) {
catch (final Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
} }

View File

@ -21,16 +21,15 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class Visit extends SubCommand { public class Visit extends SubCommand {
public Visit() { public Visit() {
@ -68,8 +67,7 @@ public class Visit extends SubCommand {
int i; int i;
try { try {
i = Integer.parseInt(args[1]); i = Integer.parseInt(args[1]);
} } catch (final Exception e) {
catch (final Exception e) {
return sendMessage(plr, C.NOT_VALID_NUMBER); return sendMessage(plr, C.NOT_VALID_NUMBER);
} }
if ((i < 0) || (i >= plots.size())) { if ((i < 0) || (i >= plots.size())) {

View File

@ -21,12 +21,6 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import java.util.HashMap;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
@ -34,6 +28,11 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.PlayerFunctions; import com.intellectualcrafters.plot.util.PlayerFunctions;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.UUID;
/** /**
* @author Citymonstret * @author Citymonstret
@ -62,8 +61,7 @@ public class list extends SubCommand {
builder.append(C.SUBCOMMAND_SET_OPTIONS_HEADER.s()); builder.append(C.SUBCOMMAND_SET_OPTIONS_HEADER.s());
if (plr != null) { if (plr != null) {
builder.append(getArgumentList(new String[]{"mine", "shared", "world", "all"})); builder.append(getArgumentList(new String[]{"mine", "shared", "world", "all"}));
} } else {
else {
builder.append(getArgumentList(new String[]{"all"})); builder.append(getArgumentList(new String[]{"all"}));
} }
PlayerFunctions.sendMessage(plr, builder.toString()); PlayerFunctions.sendMessage(plr, builder.toString());
@ -84,8 +82,7 @@ public class list extends SubCommand {
string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "You have").replaceAll("%num%", idx + "").replaceAll("%plot%", idx == 1 ? "plot" : "plots")); string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "You have").replaceAll("%num%", idx + "").replaceAll("%plot%", idx == 1 ? "plot" : "plots"));
PlayerFunctions.sendMessage(plr, string.toString()); PlayerFunctions.sendMessage(plr, string.toString());
return true; return true;
} } else if (args[0].equalsIgnoreCase("shared") && (plr != null)) {
else if (args[0].equalsIgnoreCase("shared") && (plr != null)) {
final StringBuilder string = new StringBuilder(); final StringBuilder string = new StringBuilder();
string.append(C.PLOT_LIST_HEADER.s().replaceAll("%word%", "all")).append("\n"); string.append(C.PLOT_LIST_HEADER.s().replaceAll("%word%", "all")).append("\n");
for (final Plot p : PlotMain.getPlotsSorted()) { for (final Plot p : PlotMain.getPlotsSorted()) {
@ -96,8 +93,7 @@ public class list extends SubCommand {
string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There are").replaceAll("%num%", PlotMain.getPlotsSorted().size() + "").replaceAll("%plot%", PlotMain.getPlotsSorted().size() == 1 ? "plot" : "plots")); string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There are").replaceAll("%num%", PlotMain.getPlotsSorted().size() + "").replaceAll("%plot%", PlotMain.getPlotsSorted().size() == 1 ? "plot" : "plots"));
PlayerFunctions.sendMessage(plr, string.toString()); PlayerFunctions.sendMessage(plr, string.toString());
return true; return true;
} } else if (args[0].equalsIgnoreCase("all")) {
else if (args[0].equalsIgnoreCase("all")) {
// Current page // Current page
int page = 0; int page = 0;
@ -109,8 +105,7 @@ public class list extends SubCommand {
if (page < 0) { if (page < 0) {
page = 0; page = 0;
} }
} } catch (final Exception e) {
catch (final Exception e) {
page = 0; page = 0;
} }
} }
@ -145,8 +140,7 @@ public class list extends SubCommand {
string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There is").replaceAll("%num%", PlotMain.getPlotsSorted().size() + "").replaceAll("%plot%", PlotMain.getPlotsSorted().size() == 1 ? "plot" : "plots")); string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There is").replaceAll("%num%", PlotMain.getPlotsSorted().size() + "").replaceAll("%plot%", PlotMain.getPlotsSorted().size() == 1 ? "plot" : "plots"));
PlayerFunctions.sendMessage(plr, string.toString()); PlayerFunctions.sendMessage(plr, string.toString());
return true; return true;
} } else if (args[0].equalsIgnoreCase("world") && (plr != null)) {
else if (args[0].equalsIgnoreCase("world") && (plr != null)) {
final StringBuilder string = new StringBuilder(); final StringBuilder string = new StringBuilder();
string.append(C.PLOT_LIST_HEADER.s().replaceAll("%word%", "all")).append("\n"); string.append(C.PLOT_LIST_HEADER.s().replaceAll("%word%", "all")).append("\n");
final HashMap<PlotId, Plot> plots = PlotMain.getPlots(plr.getWorld()); final HashMap<PlotId, Plot> plots = PlotMain.getPlots(plr.getWorld());
@ -156,8 +150,7 @@ public class list extends SubCommand {
string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There is").replaceAll("%num%", plots.values().size() + "").replaceAll("%plot%", plots.values().size() == 1 ? "plot" : "plots")); string.append(C.PLOT_LIST_FOOTER.s().replaceAll("%word%", "There is").replaceAll("%num%", plots.values().size() + "").replaceAll("%plot%", plots.values().size() == 1 ? "plot" : "plots"));
PlayerFunctions.sendMessage(plr, string.toString()); PlayerFunctions.sendMessage(plr, string.toString());
return true; return true;
} } else {
else {
// execute(plr); // execute(plr);
sendMessage(plr, C.DID_YOU_MEAN, new StringComparison(args[0], new String[]{"mine", "shared", "world", "all"}).getBestMatch()); sendMessage(plr, C.DID_YOU_MEAN, new StringComparison(args[0], new String[]{"mine", "shared", "world", "all"}).getBestMatch());
return false; return false;

View File

@ -21,19 +21,18 @@
package com.intellectualcrafters.plot.commands; package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.util.PlayerFunctions;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.util.ArrayList; import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.util.PlayerFunctions;
public class plugin extends SubCommand { public class plugin extends SubCommand {
public static String downloads, version; public static String downloads, version;
@ -48,8 +47,7 @@ public class plugin extends SubCommand {
public void run() { public void run() {
try { try {
downloads = convertToNumericString(getInfo("https://intellectualsites.com/spigot_api.php?method=downloads&url=http://www.spigotmc.org/resources/plotsquared.1177/"), false); downloads = convertToNumericString(getInfo("https://intellectualsites.com/spigot_api.php?method=downloads&url=http://www.spigotmc.org/resources/plotsquared.1177/"), false);
} } catch (final Exception e) {
catch (final Exception e) {
downloads = "unknown"; downloads = "unknown";
} }
} }
@ -59,8 +57,7 @@ public class plugin extends SubCommand {
public void run() { public void run() {
try { try {
version = convertToNumericString(getInfo("https://intellectualsites.com/spigot_api.php?method=version&resource=1177"), true); version = convertToNumericString(getInfo("https://intellectualsites.com/spigot_api.php?method=version&resource=1177"), true);
} } catch (final Exception e) {
catch (final Exception e) {
// Let's just ignore this, most likely error 500... // Let's just ignore this, most likely error 500...
version = "unknown"; version = "unknown";
} }
@ -73,8 +70,7 @@ public class plugin extends SubCommand {
for (final char c : str.toCharArray()) { for (final char c : str.toCharArray()) {
if (Character.isDigit(c)) { if (Character.isDigit(c)) {
builder.append(c); builder.append(c);
} } else if (dividers && ((c == ',') || (c == '.') || (c == '-') || (c == '_'))) {
else if (dividers && ((c == ',') || (c == '.') || (c == '-') || (c == '_'))) {
builder.append(c); builder.append(c);
} }
} }

View File

@ -21,15 +21,10 @@
package com.intellectualcrafters.plot.config; package com.intellectualcrafters.plot.config;
import org.bukkit.ChatColor;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualsites.translation.TranslationFile; import com.intellectualsites.translation.*;
import com.intellectualsites.translation.TranslationLanguage;
import com.intellectualsites.translation.TranslationManager;
import com.intellectualsites.translation.TranslationObject;
import com.intellectualsites.translation.YamlTranslationFile;
import com.intellectualsites.translation.bukkit.BukkitTranslation; import com.intellectualsites.translation.bukkit.BukkitTranslation;
import org.bukkit.ChatColor;
/** /**
* Captions class. * Captions class.
@ -426,8 +421,7 @@ public enum C {
/** /**
* Constructor * Constructor
* *
* @param d * @param d default
* default
*/ */
C(final String d) { C(final String d) {
this.d = d; this.d = d;
@ -486,6 +480,7 @@ public enum C {
/** /**
* @return translated and color decoded * @return translated and color decoded
*
* @see org.bukkit.ChatColor#translateAlternateColorCodes(char, String) * @see org.bukkit.ChatColor#translateAlternateColorCodes(char, String)
*/ */
public String translated() { public String translated() {

View File

@ -21,20 +21,18 @@
package com.intellectualcrafters.plot.config; package com.intellectualcrafters.plot.config;
import java.util.ArrayList; import com.intellectualcrafters.plot.object.PlotBlock;
import java.util.List;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
import com.intellectualcrafters.plot.object.PlotBlock; import java.util.ArrayList;
import java.util.List;
/** /**
* Main Configuration Utility * Main Configuration Utility
* *
* @author Empire92 * @author Empire92
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused") public class Configuration {
public class Configuration {
public static final SettingValue STRING = new SettingValue("STRING") { public static final SettingValue STRING = new SettingValue("STRING") {
@Override @Override
@ -66,8 +64,7 @@ public class Configuration {
try { try {
Integer.parseInt(string); Integer.parseInt(string);
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -84,8 +81,7 @@ public class Configuration {
try { try {
Boolean.parseBoolean(string); Boolean.parseBoolean(string);
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -102,8 +98,7 @@ public class Configuration {
try { try {
Double.parseDouble(string); Double.parseDouble(string);
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -120,8 +115,7 @@ public class Configuration {
try { try {
Biome.valueOf(string.toUpperCase()); Biome.valueOf(string.toUpperCase());
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -150,13 +144,11 @@ public class Configuration {
final String[] split = string.split(":"); final String[] split = string.split(":");
Short.parseShort(split[0]); Short.parseShort(split[0]);
Short.parseShort(split[1]); Short.parseShort(split[1]);
} } else {
else {
Short.parseShort(string); Short.parseShort(string);
} }
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -166,8 +158,7 @@ public class Configuration {
if (string.contains(":")) { if (string.contains(":")) {
final String[] split = string.split(":"); final String[] split = string.split(":");
return new PlotBlock(Short.parseShort(split[0]), Byte.parseByte(split[1])); return new PlotBlock(Short.parseShort(split[0]), Byte.parseByte(split[1]));
} } else {
else {
return new PlotBlock(Short.parseShort(string), (byte) 0); return new PlotBlock(Short.parseShort(string), (byte) 0);
} }
} }
@ -191,14 +182,12 @@ public class Configuration {
final String[] split = block.split(":"); final String[] split = block.split(":");
Short.parseShort(split[0]); Short.parseShort(split[0]);
Short.parseShort(split[1]); Short.parseShort(split[1]);
} } else {
else {
Short.parseShort(block); Short.parseShort(block);
} }
} }
return true; return true;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }
@ -220,8 +209,7 @@ public class Configuration {
if (value < min) { if (value < min) {
min = value; min = value;
} }
} } else {
else {
counts[i] = 1; counts[i] = 1;
if (1 < min) { if (1 < min) {
min = 1; min = 1;
@ -230,8 +218,7 @@ public class Configuration {
if (blocks[i].contains(":")) { if (blocks[i].contains(":")) {
final String[] split = blocks[i].split(":"); final String[] split = blocks[i].split(":");
values[i] = new PlotBlock(Short.parseShort(split[0]), Byte.parseByte(split[1])); values[i] = new PlotBlock(Short.parseShort(split[0]), Byte.parseByte(split[1]));
} } else {
else {
values[i] = new PlotBlock(Short.parseShort(blocks[i]), (byte) 0); values[i] = new PlotBlock(Short.parseShort(blocks[i]), (byte) 0);
} }
} }
@ -272,8 +259,7 @@ public class Configuration {
} }
/** /**
* Create your own SettingValue object to make the management of plotworld * Create your own SettingValue object to make the management of plotworld configuration easier
* configuration easier
*/ */
public static abstract class SettingValue { public static abstract class SettingValue {
private final String type; private final String type;

View File

@ -21,11 +21,10 @@
package com.intellectualcrafters.plot.config; package com.intellectualcrafters.plot.config;
import java.util.Arrays; import com.intellectualcrafters.plot.config.Configuration.SettingValue;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import com.intellectualcrafters.plot.config.Configuration.SettingValue; import java.util.Arrays;
/** /**
* Configuration Node * Configuration Node
@ -55,8 +54,7 @@ public class ConfigurationNode {
try { try {
final Object result = this.type.parseString(string); final Object result = this.type.parseString(string);
return result != null; return result != null;
} } catch (final Exception e) {
catch (final Exception e) {
return false; return false;
} }
} }

View File

@ -21,19 +21,18 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotComment;
import com.intellectualcrafters.plot.object.PlotId;
import org.bukkit.OfflinePlayer;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.UUID; import java.util.UUID;
import org.bukkit.OfflinePlayer;
import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotComment;
import com.intellectualcrafters.plot.object.PlotId;
/** /**
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
@ -50,73 +49,62 @@ public interface AbstractDB {
/** /**
* Set Plot owner * Set Plot owner
* *
* @param plot * @param plot Plot in which the owner should be set
* Plot in which the owner should be set * @param uuid The uuid of the new owner
* @param uuid
* The uuid of the new owner
*/ */
public void setOwner(final Plot plot, final UUID uuid); public void setOwner(final Plot plot, final UUID uuid);
/** /**
* Create all settings, and create default helpers, trusted + denied lists * Create all settings, and create default helpers, trusted + denied lists
* *
* @param plots * @param plots Plots for which the default table entries should be created
* Plots for which the default table entries should be created
*/ */
public void createAllSettingsAndHelpers(final ArrayList<Plot> plots); public void createAllSettingsAndHelpers(final ArrayList<Plot> plots);
/** /**
* Create a plot * Create a plot
* *
* @param plots * @param plots Plots that should be created
* Plots that should be created
*/ */
public void createPlots(final ArrayList<Plot> plots); public void createPlots(final ArrayList<Plot> plots);
/** /**
* Create a plot * Create a plot
* *
* @param plot * @param plot That should be created
* That should be created
*/ */
public void createPlot(final Plot plot); public void createPlot(final Plot plot);
/** /**
* Create tables * Create tables
* *
* @param database * @param database Database in which the tables will be created
* Database in which the tables will be created
* *
* @throws SQLException * @throws SQLException If the database manager is unable to create the tables
* If the database manager is unable to create the tables
*/ */
public void createTables(final String database, final boolean add_constraint) throws Exception; public void createTables(final String database, final boolean add_constraint) throws Exception;
/** /**
* Delete a plot * Delete a plot
* *
* @param plot * @param plot Plot that should be deleted
* Plot that should be deleted
*/ */
public void delete(final String world, final Plot plot); public void delete(final String world, final Plot plot);
/** /**
* Create plot settings * Create plot settings
* *
* @param id * @param id Plot Entry ID
* Plot Entry ID * @param plot Plot Object
* @param plot
* Plot Object
*/ */
public void createPlotSettings(final int id, final Plot plot); public void createPlotSettings(final int id, final Plot plot);
/** /**
* Get the table entry ID * Get the table entry ID
* *
* @param world * @param world Which the plot is located in
* Which the plot is located in * @param id2 Plot ID
* @param id2 *
* Plot ID
* @return Integer = Plot Entry Id * @return Integer = Plot Entry Id
*/ */
public int getId(final String world, final PlotId id2); public int getId(final String world, final PlotId id2);
@ -129,125 +117,100 @@ public interface AbstractDB {
/** /**
* Set the merged status for a plot * Set the merged status for a plot
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param plot Plot Object
* @param plot * @param merged boolean[]
* Plot Object
* @param merged
* boolean[]
*/ */
public void setMerged(final String world, final Plot plot, final boolean[] merged); public void setMerged(final String world, final Plot plot, final boolean[] merged);
/** /**
* Set plot flags * Set plot flags
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param plot Plot Object
* @param plot * @param flags flags to set (flag[])
* Plot Object
* @param flags
* flags to set (flag[])
*/ */
public void setFlags(final String world, final Plot plot, final Flag[] flags); public void setFlags(final String world, final Plot plot, final Flag[] flags);
/** /**
* Set the plot alias * Set the plot alias
* *
* @param plot * @param plot Plot for which the alias should be set
* Plot for which the alias should be set * @param alias Plot Alias
* @param alias
* Plot Alias
*/ */
public void setAlias(final String world, final Plot plot, final String alias); public void setAlias(final String world, final Plot plot, final String alias);
/** /**
* Purgle a plot * Purgle a plot
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param id Plot ID
* @param id
* Plot ID
*/ */
public void purge(final String world, final PlotId id); public void purge(final String world, final PlotId id);
/** /**
* Purge a whole world * Purge a whole world
* *
* @param world * @param world World in which the plots should be purged
* World in which the plots should be purged
*/ */
public void purge(final String world); public void purge(final String world);
/** /**
* Set Plot Home Position * Set Plot Home Position
* *
* @param plot * @param plot Plot Object
* Plot Object * @param position Plot Home Position
* @param position
* Plot Home Position
*/ */
public void setPosition(final String world, final Plot plot, final String position); public void setPosition(final String world, final Plot plot, final String position);
/** /**
* @param id * @param id Plot Entry ID
* Plot Entry ID *
* @return Plot Settings * @return Plot Settings
*/ */
public HashMap<String, Object> getSettings(final int id); public HashMap<String, Object> getSettings(final int id);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be removed
* @param player
* Player that should be removed
*/ */
public void removeHelper(final String world, final Plot plot, final OfflinePlayer player); public void removeHelper(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be removed
* @param player
* Player that should be removed
*/ */
public void removeTrusted(final String world, final Plot plot, final OfflinePlayer player); public void removeTrusted(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be removed
* @param player
* Player that should be removed
*/ */
public void setHelper(final String world, final Plot plot, final OfflinePlayer player); public void setHelper(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be added
* @param player
* Player that should be added
*/ */
public void setTrusted(final String world, final Plot plot, final OfflinePlayer player); public void setTrusted(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be added
* @param player
* Player that should be added
*/ */
public void removeDenied(final String world, final Plot plot, final OfflinePlayer player); public void removeDenied(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* @param plot * @param plot Plot Object
* Plot Object * @param player Player that should be added
* @param player
* Player that should be added
*/ */
public void setDenied(final String world, final Plot plot, final OfflinePlayer player); public void setDenied(final String world, final Plot plot, final OfflinePlayer player);
/** /**
* Get Plots ratings * Get Plots ratings
* *
* @param plot * @param plot Plot Object
* Plot Object *
* @return Plot Ratings (pre-calculated) * @return Plot Ratings (pre-calculated)
*/ */
public double getRatings(final Plot plot); public double getRatings(final Plot plot);
@ -255,36 +218,28 @@ public interface AbstractDB {
/** /**
* Remove a plot comment * Remove a plot comment
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param plot Plot Object
* @param plot * @param comment Comment to remove
* Plot Object
* @param comment
* Comment to remove
*/ */
public void removeComment(final String world, final Plot plot, final PlotComment comment); public void removeComment(final String world, final Plot plot, final PlotComment comment);
/** /**
* Set a plot comment * Set a plot comment
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param plot Plot Object
* @param plot * @param comment Comment to add
* Plot Object
* @param comment
* Comment to add
*/ */
public void setComment(final String world, final Plot plot, final PlotComment comment); public void setComment(final String world, final Plot plot, final PlotComment comment);
/** /**
* Get Plot Comments * Get Plot Comments
* *
* @param world * @param world World in which the plot is located
* World in which the plot is located * @param plot Plot Object
* @param plot * @param tier Comment Tier
* Plot Object *
* @param tier
* Comment Tier
* @return Plot Comments within the specified tier * @return Plot Comments within the specified tier
*/ */
public ArrayList<PlotComment> getComments(final String world, final Plot plot, final int tier); public ArrayList<PlotComment> getComments(final String world, final Plot plot, final int tier);

View File

@ -21,17 +21,16 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.UUID;
import org.bukkit.OfflinePlayer;
import com.intellectualcrafters.plot.flag.Flag; import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import com.intellectualcrafters.plot.object.PlotComment; import com.intellectualcrafters.plot.object.PlotComment;
import com.intellectualcrafters.plot.object.PlotId; import com.intellectualcrafters.plot.object.PlotId;
import org.bukkit.OfflinePlayer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.UUID;
/** /**
* DB Functions * DB Functions
@ -53,10 +52,8 @@ public class DBFunc {
/** /**
* Set the owner of a plot * Set the owner of a plot
* *
* @param plot * @param plot Plot Object
* Plot Object * @param uuid New Owner
* @param uuid
* New Owner
*/ */
public static void setOwner(final Plot plot, final UUID uuid) { public static void setOwner(final Plot plot, final UUID uuid) {
dbManager.setOwner(plot, uuid); dbManager.setOwner(plot, uuid);
@ -65,8 +62,7 @@ public class DBFunc {
/** /**
* Create all settings + (helpers, denied, trusted) * Create all settings + (helpers, denied, trusted)
* *
* @param plots * @param plots List containing all plot objects
* List containing all plot objects
*/ */
public static void createAllSettingsAndHelpers(final ArrayList<Plot> plots) { public static void createAllSettingsAndHelpers(final ArrayList<Plot> plots) {
dbManager.createAllSettingsAndHelpers(plots); dbManager.createAllSettingsAndHelpers(plots);
@ -75,8 +71,7 @@ public class DBFunc {
/** /**
* Create all plots * Create all plots
* *
* @param plots * @param plots A list containing plot objects
* A list containing plot objects
*/ */
public static void createPlots(final ArrayList<Plot> plots) { public static void createPlots(final ArrayList<Plot> plots) {
dbManager.createPlots(plots); dbManager.createPlots(plots);
@ -85,8 +80,7 @@ public class DBFunc {
/** /**
* Create a plot * Create a plot
* *
* @param plot * @param plot Plot to create
* Plot to create
*/ */
public static void createPlot(final Plot plot) { public static void createPlot(final Plot plot) {
dbManager.createPlot(plot); dbManager.createPlot(plot);
@ -104,8 +98,7 @@ public class DBFunc {
/** /**
* Delete a plot * Delete a plot
* *
* @param plot * @param plot Plot to delete
* Plot to delete
*/ */
public static void delete(final String world, final Plot plot) { public static void delete(final String world, final Plot plot) {
dbManager.delete(world, plot); dbManager.delete(world, plot);
@ -114,10 +107,8 @@ public class DBFunc {
/** /**
* Create plot settings * Create plot settings
* *
* @param id * @param id Plot ID
* Plot ID * @param plot Plot Object
* @param plot
* Plot Object
*/ */
public static void createPlotSettings(final int id, final Plot plot) { public static void createPlotSettings(final int id, final Plot plot) {
dbManager.createPlotSettings(id, plot); dbManager.createPlotSettings(id, plot);
@ -126,10 +117,9 @@ public class DBFunc {
/** /**
* Get a plot id * Get a plot id
* *
* @param world * @param world World
* World * @param id2 Plot ID
* @param id2 *
* Plot ID
* @return ID * @return ID
*/ */
/* /*
@ -187,6 +177,7 @@ public class DBFunc {
/** /**
* @param id * @param id
*
* @return * @return
*/ */
public static HashMap<String, Object> getSettings(final int id) { public static HashMap<String, Object> getSettings(final int id) {

View File

@ -21,15 +21,14 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import org.bukkit.plugin.Plugin;
import java.sql.Connection; import java.sql.Connection;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import org.bukkit.plugin.Plugin;
/** /**
* Abstract Database class, serves as a base for any connection method (MySQL, * Abstract Database class, serves as a base for any connection method (MySQL, SQLite, etc.)
* SQLite, etc.)
* *
* @author -_Husky_- * @author -_Husky_-
* @author tips48 * @author tips48
@ -44,8 +43,7 @@ public abstract class Database {
/** /**
* Creates a new Database * Creates a new Database
* *
* @param plugin * @param plugin Plugin instance
* Plugin instance
*/ */
protected Database(final Plugin plugin) { protected Database(final Plugin plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -55,10 +53,9 @@ public abstract class Database {
* Opens a connection with the database * Opens a connection with the database
* *
* @return Opened connection * @return Opened connection
* @throws SQLException *
* if the connection can not be opened * @throws SQLException if the connection can not be opened
* @throws ClassNotFoundException * @throws ClassNotFoundException if the driver cannot be found
* if the driver cannot be found
*/ */
public abstract Connection openConnection() throws SQLException, ClassNotFoundException; public abstract Connection openConnection() throws SQLException, ClassNotFoundException;
@ -66,8 +63,8 @@ public abstract class Database {
* Checks if a connection is open with the database * Checks if a connection is open with the database
* *
* @return true if the connection is open * @return true if the connection is open
* @throws SQLException *
* if the connection cannot be checked * @throws SQLException if the connection cannot be checked
*/ */
public abstract boolean checkConnection() throws SQLException; public abstract boolean checkConnection() throws SQLException;
@ -82,37 +79,33 @@ public abstract class Database {
* Closes the connection with the database * Closes the connection with the database
* *
* @return true if successful * @return true if successful
* @throws SQLException *
* if the connection cannot be closed * @throws SQLException if the connection cannot be closed
*/ */
public abstract boolean closeConnection() throws SQLException; public abstract boolean closeConnection() throws SQLException;
/** /**
* Executes a SQL Query<br> * Executes a SQL Query<br> If the connection is closed, it will be opened
* If the connection is closed, it will be opened *
* @param query Query to be run
* *
* @param query
* Query to be run
* @return the results of the query * @return the results of the query
* @throws SQLException *
* If the query cannot be executed * @throws SQLException If the query cannot be executed
* @throws ClassNotFoundException * @throws ClassNotFoundException If the driver cannot be found; see {@link #openConnection()}
* If the driver cannot be found; see {@link #openConnection()}
*/ */
public abstract ResultSet querySQL(final String query) throws SQLException, ClassNotFoundException; public abstract ResultSet querySQL(final String query) throws SQLException, ClassNotFoundException;
/** /**
* Executes an Update SQL Query<br> * Executes an Update SQL Query<br> See {@link java.sql.Statement#executeUpdate(String)}<br> If the connection is
* See {@link java.sql.Statement#executeUpdate(String)}<br> * closed, it will be opened
* If the connection is closed, it will be opened *
* @param query Query to be run
* *
* @param query
* Query to be run
* @return Result Code, see {@link java.sql.Statement#executeUpdate(String)} * @return Result Code, see {@link java.sql.Statement#executeUpdate(String)}
* @throws SQLException *
* If the query cannot be executed * @throws SQLException If the query cannot be executed
* @throws ClassNotFoundException * @throws ClassNotFoundException If the driver cannot be found; see {@link #openConnection()}
* If the driver cannot be found; see {@link #openConnection()}
*/ */
public abstract int updateSQL(final String query) throws SQLException, ClassNotFoundException; public abstract int updateSQL(final String query) throws SQLException, ClassNotFoundException;
} }

View File

@ -21,14 +21,10 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import java.sql.*;
/** /**
* Connects to and uses a MySQL database * Connects to and uses a MySQL database
* *
@ -47,18 +43,12 @@ public class MySQL extends Database {
/** /**
* Creates a new MySQL instance * Creates a new MySQL instance
* *
* @param plugin * @param plugin Plugin instance
* Plugin instance * @param hostname Name of the host
* @param hostname * @param port Port number
* Name of the host * @param database Database name
* @param port * @param username Username
* Port number * @param password Password
* @param database
* Database name
* @param username
* Username
* @param password
* Password
*/ */
public MySQL(final Plugin plugin, final String hostname, final String port, final String database, final String username, final String password) { public MySQL(final Plugin plugin, final String hostname, final String port, final String database, final String username, final String password) {
super(plugin); super(plugin);

View File

@ -21,22 +21,6 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import com.google.common.base.Charsets; import com.google.common.base.Charsets;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.config.Settings;
@ -46,6 +30,15 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.worldcretornica.plotme.PlayerList; import com.worldcretornica.plotme.PlayerList;
import com.worldcretornica.plotme.Plot; import com.worldcretornica.plotme.Plot;
import com.worldcretornica.plotme.PlotManager; import com.worldcretornica.plotme.PlotManager;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.plugin.Plugin;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*;
/** /**
* Created 2014-08-17 for PlotSquared * Created 2014-08-17 for PlotSquared
@ -63,8 +56,7 @@ public class PlotMeConverter {
/** /**
* Constructor * Constructor
* *
* @param plugin * @param plugin Plugin Used to run the converter
* Plugin Used to run the converter
*/ */
public PlotMeConverter(final PlotMain plugin) { public PlotMeConverter(final PlotMain plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -127,8 +119,7 @@ public class PlotMeConverter {
final Boolean auto_link = plotConfig.getBoolean("worlds." + world.getName() + ".AutoLinkPlots"); // final Boolean auto_link = plotConfig.getBoolean("worlds." + world.getName() + ".AutoLinkPlots"); //
PlotMain.config.set("worlds." + world.getName() + ".plot.auto_merge", auto_link); PlotMain.config.set("worlds." + world.getName() + ".plot.auto_merge", auto_link);
} } catch (final Exception e) {
catch (final Exception e) {
sendMessage("&c-- &lFailed to save configuration for world '" + world.getName() + "'\nThis will need to be done using the setup command, or manually"); sendMessage("&c-- &lFailed to save configuration for world '" + world.getName() + "'\nThis will need to be done using the setup command, or manually");
} }
@ -173,13 +164,11 @@ public class PlotMeConverter {
psDenied.add(set.getValue()); psDenied.add(set.getValue());
} }
} }
} } else {
else {
for (final String user : plot.getAllowed().split(",")) { for (final String user : plot.getAllowed().split(",")) {
if (user.equals("*")) { if (user.equals("*")) {
psAdded.add(DBFunc.everyone); psAdded.add(DBFunc.everyone);
} } else {
else {
final UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + user).getBytes(Charsets.UTF_8)); final UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + user).getBytes(Charsets.UTF_8));
psAdded.add(uuid); psAdded.add(uuid);
} }
@ -188,19 +177,16 @@ public class PlotMeConverter {
for (final String user : plot.getDenied().split(",")) { for (final String user : plot.getDenied().split(",")) {
if (user.equals("*")) { if (user.equals("*")) {
psDenied.add(DBFunc.everyone); psDenied.add(DBFunc.everyone);
} } else {
else {
final UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + user).getBytes(Charsets.UTF_8)); final UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + user).getBytes(Charsets.UTF_8));
psDenied.add(uuid); psDenied.add(uuid);
} }
} }
} } catch (final Throwable e) {
catch (final Throwable e) {
// Okay, this is evil. // Okay, this is evil.
} }
} }
} } catch (final Throwable e) {
catch (final Throwable e) {
e.printStackTrace(); e.printStackTrace();
} }
final PlotId id = new PlotId(Integer.parseInt(plot.id.split(";")[0]), Integer.parseInt(plot.id.split(";")[1])); final PlotId id = new PlotId(Integer.parseInt(plot.id.split(";")[0]), Integer.parseInt(plot.id.split(";")[1]));
@ -209,8 +195,7 @@ public class PlotMeConverter {
pl = new com.intellectualcrafters.plot.object.Plot(id, plot.getOwnerId(), psAdded, psTrusted, psDenied, pl = new com.intellectualcrafters.plot.object.Plot(id, plot.getOwnerId(), psAdded, psTrusted, psDenied,
"", PlotHomePosition.DEFAULT, null, world.getName(), new boolean[]{false, false, false, false}); "", PlotHomePosition.DEFAULT, null, world.getName(), new boolean[]{false, false, false, false});
} } else {
else {
final String owner = plot.getOwner(); final String owner = plot.getOwner();
pl = new com.intellectualcrafters.plot.object.Plot(id, UUID.nameUUIDFromBytes(("OfflinePlayer:" + owner).getBytes(Charsets.UTF_8)), psAdded, psTrusted, psDenied, pl = new com.intellectualcrafters.plot.object.Plot(id, UUID.nameUUIDFromBytes(("OfflinePlayer:" + owner).getBytes(Charsets.UTF_8)), psAdded, psTrusted, psDenied,
@ -220,8 +205,7 @@ public class PlotMeConverter {
if (pl != null) { if (pl != null) {
if (!PlotMain.getPlots(world).containsKey(id)) { if (!PlotMain.getPlots(world).containsKey(id)) {
createdPlots.add(pl); createdPlots.add(pl);
} } else {
else {
duplicate++; duplicate++;
} }
} }
@ -240,8 +224,7 @@ public class PlotMeConverter {
PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8:&7 Saving configuration..."); PlotMain.sendConsoleSenderMessage("&3PlotMe&8->&3PlotSquared&8:&7 Saving configuration...");
try { try {
PlotMain.config.save(PlotMain.configFile); PlotMain.config.save(PlotMain.configFile);
} } catch (final IOException e) {
catch (final IOException e) {
PlotMain.sendConsoleSenderMessage(" - &cFailed to save configuration."); PlotMain.sendConsoleSenderMessage(" - &cFailed to save configuration.");
} }
@ -250,8 +233,7 @@ public class PlotMeConverter {
if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) { if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core").isEnabled()) {
MV = true; MV = true;
} } else if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
else if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
MW = true; MW = true;
} }
@ -266,26 +248,22 @@ public class PlotMeConverter {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv unload " + worldname); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv unload " + worldname);
try { try {
Thread.sleep(1000); Thread.sleep(1000);
} } catch (final InterruptedException ex) {
catch (final InterruptedException ex) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
// load // load
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv import " + worldname + " normal -g PlotSquared"); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv import " + worldname + " normal -g PlotSquared");
} } else if (MW) {
else if (MW) {
// unload // unload
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw unload " + worldname); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw unload " + worldname);
try { try {
Thread.sleep(1000); Thread.sleep(1000);
} } catch (final InterruptedException ex) {
catch (final InterruptedException ex) {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
// load // load
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + worldname + " plugin:PlotSquared"); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + worldname + " plugin:PlotSquared");
} } else {
else {
Bukkit.getServer().unloadWorld(world, true); Bukkit.getServer().unloadWorld(world, true);
final World myworld = WorldCreator.name(worldname).generator(new WorldGenerator(worldname)).createWorld(); final World myworld = WorldCreator.name(worldname).generator(new WorldGenerator(worldname)).createWorld();
myworld.save(); myworld.save();

View File

@ -21,24 +21,6 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Biome;
import com.intellectualcrafters.plot.PlotMain; import com.intellectualcrafters.plot.PlotMain;
import com.intellectualcrafters.plot.flag.Flag; import com.intellectualcrafters.plot.flag.Flag;
import com.intellectualcrafters.plot.flag.FlagManager; import com.intellectualcrafters.plot.flag.FlagManager;
@ -49,6 +31,13 @@ import com.intellectualcrafters.plot.object.PlotId;
import com.intellectualcrafters.plot.util.Logger; import com.intellectualcrafters.plot.util.Logger;
import com.intellectualcrafters.plot.util.Logger.LogLevel; import com.intellectualcrafters.plot.util.Logger.LogLevel;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Biome;
import java.sql.*;
import java.util.*;
/** /**
* @author Citymonstret * @author Citymonstret
@ -69,10 +58,8 @@ public class SQLManager implements AbstractDB {
/** /**
* Constructor * Constructor
* *
* @param c * @param c connection
* connection * @param p prefix
* @param p
* prefix
*/ */
public SQLManager(final Connection c, final String p) { public SQLManager(final Connection c, final String p) {
// Private final // Private final
@ -96,8 +83,7 @@ public class SQLManager implements AbstractDB {
public void run() { public void run() {
try { try {
SQLManager.this.connection = PlotMain.getMySQL().forceConnection(); SQLManager.this.connection = PlotMain.getMySQL().forceConnection();
} } catch (final Exception e) {
catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -127,10 +113,8 @@ public class SQLManager implements AbstractDB {
/** /**
* Set Plot owner * Set Plot owner
* *
* @param plot * @param plot Plot Object
* Plot Object * @param uuid Owner UUID
* @param uuid
* Owner UUID
*/ */
@Override @Override
public void setOwner(final Plot plot, final UUID uuid) { public void setOwner(final Plot plot, final UUID uuid) {
@ -144,8 +128,7 @@ public class SQLManager implements AbstractDB {
statement.setInt(3, plot.id.y); statement.setInt(3, plot.id.y);
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "Could not set owner for plot " + plot.id); Logger.add(LogLevel.DANGER, "Could not set owner for plot " + plot.id);
} }
@ -175,8 +158,7 @@ public class SQLManager implements AbstractDB {
} }
stored.get(world).put(new PlotId(idx, idz), id); stored.get(world).put(new PlotId(idx, idz), id);
} }
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -209,8 +191,7 @@ public class SQLManager implements AbstractDB {
} }
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -239,8 +220,7 @@ public class SQLManager implements AbstractDB {
} }
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set helper for plots"); Logger.add(LogLevel.WARNING, "Failed to set helper for plots");
e.printStackTrace(); e.printStackTrace();
} }
@ -279,8 +259,7 @@ public class SQLManager implements AbstractDB {
} }
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "Failed to save plots!"); Logger.add(LogLevel.DANGER, "Failed to save plots!");
} }
@ -302,8 +281,7 @@ public class SQLManager implements AbstractDB {
stmt.setString(4, plot.world); stmt.setString(4, plot.world);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "Failed to save plot " + plot.id); Logger.add(LogLevel.DANGER, "Failed to save plot " + plot.id);
} }
@ -331,8 +309,7 @@ public class SQLManager implements AbstractDB {
stmt.addBatch("ALTER TABLE `" + this.prefix + "plot_settings` ADD CONSTRAINT `" + this.prefix + "plot_settings_ibfk_1` FOREIGN KEY (`plot_plot_id`) REFERENCES `" + this.prefix + "plot` (`id`) ON DELETE CASCADE"); stmt.addBatch("ALTER TABLE `" + this.prefix + "plot_settings` ADD CONSTRAINT `" + this.prefix + "plot_settings_ibfk_1` FOREIGN KEY (`plot_plot_id`) REFERENCES `" + this.prefix + "plot` (`id`) ON DELETE CASCADE");
} }
} } else {
else {
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`plot_id_x` INT(11) NOT NULL," + "`plot_id_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)"); stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`plot_id_x` INT(11) NOT NULL," + "`plot_id_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)");
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_denied` (" + "`plot_plot_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")"); stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_denied` (" + "`plot_plot_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")");
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_helpers` (" + "`plot_plot_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")"); stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_helpers` (" + "`plot_plot_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")");
@ -379,8 +356,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(1, id); stmt.setInt(1, id);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "Failed to delete plot " + plot.id); Logger.add(LogLevel.DANGER, "Failed to delete plot " + plot.id);
} }
@ -405,8 +381,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(1, id); stmt.setInt(1, id);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -429,8 +404,7 @@ public class SQLManager implements AbstractDB {
} }
stmt.close(); stmt.close();
return id; return id;
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
return Integer.MAX_VALUE; return Integer.MAX_VALUE;
@ -463,8 +437,7 @@ public class SQLManager implements AbstractDB {
statement.executeBatch(); statement.executeBatch();
statement.close(); statement.close();
} }
} } catch (final Exception e) {
catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
final HashMap<Integer, Plot> plots = new HashMap<>(); final HashMap<Integer, Plot> plots = new HashMap<>();
@ -497,8 +470,7 @@ public class SQLManager implements AbstractDB {
if (!worlds.contains(worldname)) { if (!worlds.contains(worldname)) {
if (noExist.containsKey(worldname)) { if (noExist.containsKey(worldname)) {
noExist.put(worldname, noExist.get(worldname) + 1); noExist.put(worldname, noExist.get(worldname) + 1);
} } else {
else {
noExist.put(worldname, 1); noExist.put(worldname, 1);
} }
} }
@ -528,8 +500,7 @@ public class SQLManager implements AbstractDB {
final Plot plot = plots.get(id); final Plot plot = plots.get(id);
if (plot != null) { if (plot != null) {
plot.addHelper(user); plot.addHelper(user);
} } else {
else {
PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_helpers does not exist. Please create the plot or remove this entry."); PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_helpers does not exist. Please create the plot or remove this entry.");
} }
} }
@ -551,8 +522,7 @@ public class SQLManager implements AbstractDB {
final Plot plot = plots.get(id); final Plot plot = plots.get(id);
if (plot != null) { if (plot != null) {
plot.addTrusted(user); plot.addTrusted(user);
} } else {
else {
PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_trusted does not exist. Please create the plot or remove this entry."); PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_trusted does not exist. Please create the plot or remove this entry.");
} }
} }
@ -574,8 +544,7 @@ public class SQLManager implements AbstractDB {
final Plot plot = plots.get(id); final Plot plot = plots.get(id);
if (plot != null) { if (plot != null) {
plot.addDenied(user); plot.addDenied(user);
} } else {
else {
PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_denied does not exist. Please create the plot or remove this entry."); PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_denied does not exist. Please create the plot or remove this entry.");
} }
} }
@ -620,8 +589,7 @@ public class SQLManager implements AbstractDB {
merged[3 - i] = ((m) & (1 << i)) != 0; merged[3 - i] = ((m) & (1 << i)) != 0;
} }
plot.settings.setMerged(merged); plot.settings.setMerged(merged);
} } else {
else {
plot.settings.setMerged(new boolean[]{false, false, false, false}); plot.settings.setMerged(new boolean[]{false, false, false, false});
} }
@ -629,8 +597,7 @@ public class SQLManager implements AbstractDB {
final String myflags = r.getString("flags"); final String myflags = r.getString("flags");
if (myflags == null) { if (myflags == null) {
flags_string = new String[]{}; flags_string = new String[]{};
} } else {
else {
flags_string = myflags.split(","); flags_string = myflags.split(",");
} }
final ArrayList<Flag> flags = new ArrayList<Flag>(); final ArrayList<Flag> flags = new ArrayList<Flag>();
@ -640,12 +607,10 @@ public class SQLManager implements AbstractDB {
final String[] split = element.split(":"); final String[] split = element.split(":");
try { try {
flags.add(new Flag(FlagManager.getFlag(split[0], true), split[1].replaceAll("\u00AF", ":").replaceAll("<EFBFBD>", ","))); flags.add(new Flag(FlagManager.getFlag(split[0], true), split[1].replaceAll("\u00AF", ":").replaceAll("<EFBFBD>", ",")));
} } catch (final Exception e) {
catch (final Exception e) {
exception = true; exception = true;
} }
} } else {
else {
flags.add(new Flag(FlagManager.getFlag(element, true), "")); flags.add(new Flag(FlagManager.getFlag(element, true), ""));
} }
} }
@ -654,8 +619,7 @@ public class SQLManager implements AbstractDB {
setFlags(id, flags.toArray(new Flag[0])); setFlags(id, flags.toArray(new Flag[0]));
} }
plot.settings.setFlags(flags.toArray(new Flag[0])); plot.settings.setFlags(flags.toArray(new Flag[0]));
} } else {
else {
PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_settings does not exist. Please create the plot or remove this entry."); PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_settings does not exist. Please create the plot or remove this entry.");
} }
} }
@ -675,8 +639,7 @@ public class SQLManager implements AbstractDB {
if (invalidPlot) { if (invalidPlot) {
PlotMain.sendConsoleSenderMessage("&c[WARNING] - Please create the world/s or remove the plots using the purge command"); PlotMain.sendConsoleSenderMessage("&c[WARNING] - Please create the world/s or remove the plots using the purge command");
} }
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to load plots."); Logger.add(LogLevel.WARNING, "Failed to load plots.");
e.printStackTrace(); e.printStackTrace();
} }
@ -699,8 +662,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(2, getId(world, plot.id)); stmt.setInt(2, getId(world, plot.id));
stmt.execute(); stmt.execute();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Could not set merged for plot " + plot.id); Logger.add(LogLevel.WARNING, "Could not set merged for plot " + plot.id);
} }
@ -729,8 +691,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(2, getId(world, plot.id)); stmt.setInt(2, getId(world, plot.id));
stmt.execute(); stmt.execute();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Could not set flag for plot " + plot.id); Logger.add(LogLevel.WARNING, "Could not set flag for plot " + plot.id);
} }
@ -755,8 +716,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(2, id); stmt.setInt(2, id);
stmt.execute(); stmt.execute();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Could not set flag for plot " + id); Logger.add(LogLevel.WARNING, "Could not set flag for plot " + id);
} }
@ -781,8 +741,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(2, getId(world, plot.id)); stmt.setInt(2, getId(world, plot.id));
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set alias for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to set alias for plot " + plot.id);
e.printStackTrace(); e.printStackTrace();
} }
@ -816,8 +775,7 @@ public class SQLManager implements AbstractDB {
final int id = result.getInt("id"); final int id = result.getInt("id");
ids.add(id); ids.add(id);
} }
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "FAILED TO PURGE WORLD '" + world + "'!"); Logger.add(LogLevel.WARNING, "FAILED TO PURGE WORLD '" + world + "'!");
return; return;
@ -853,8 +811,7 @@ public class SQLManager implements AbstractDB {
stmt.setString(1, world); stmt.setString(1, world);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "FAILED TO PURGE PLOT FROM DB '" + world + "' , '" + id + "' !"); Logger.add(LogLevel.DANGER, "FAILED TO PURGE PLOT FROM DB '" + world + "' , '" + id + "' !");
return; return;
@ -881,8 +838,7 @@ public class SQLManager implements AbstractDB {
final int id = result.getInt("id"); final int id = result.getInt("id");
ids.add(id); ids.add(id);
} }
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "FAILED TO PURGE WORLD '" + world + "'!"); Logger.add(LogLevel.WARNING, "FAILED TO PURGE WORLD '" + world + "'!");
return; return;
@ -918,8 +874,7 @@ public class SQLManager implements AbstractDB {
stmt.setString(1, world); stmt.setString(1, world);
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.DANGER, "FAILED TO PURGE WORLD '" + world + "'!"); Logger.add(LogLevel.DANGER, "FAILED TO PURGE WORLD '" + world + "'!");
return; return;
@ -947,8 +902,7 @@ public class SQLManager implements AbstractDB {
stmt.setInt(2, getId(world, plot.id)); stmt.setInt(2, getId(world, plot.id));
stmt.executeUpdate(); stmt.executeUpdate();
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set position for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to set position for plot " + plot.id);
e.printStackTrace(); e.printStackTrace();
} }
@ -958,6 +912,7 @@ public class SQLManager implements AbstractDB {
/** /**
* @param id * @param id
*
* @return * @return
*/ */
@Override @Override
@ -1000,8 +955,7 @@ public class SQLManager implements AbstractDB {
h.put(var, val); h.put(var, val);
} }
stmt.close(); stmt.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to load settings for plot: " + id); Logger.add(LogLevel.WARNING, "Failed to load settings for plot: " + id);
e.printStackTrace(); e.printStackTrace();
} }
@ -1021,8 +975,7 @@ public class SQLManager implements AbstractDB {
statement.setString(4, comment.senderName); statement.setString(4, comment.senderName);
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id);
} }
@ -1046,8 +999,7 @@ public class SQLManager implements AbstractDB {
comments.add(comment); comments.add(comment);
} }
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to fetch rating for plot " + plot.getId().toString()); Logger.add(LogLevel.WARNING, "Failed to fetch rating for plot " + plot.getId().toString());
e.printStackTrace(); e.printStackTrace();
} }
@ -1067,8 +1019,7 @@ public class SQLManager implements AbstractDB {
statement.setString(4, comment.senderName); statement.setString(4, comment.senderName);
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id);
} }
@ -1092,8 +1043,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to remove helper for plot " + plot.id);
} }
@ -1116,8 +1066,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Failed to remove trusted user for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to remove trusted user for plot " + plot.id);
} }
@ -1140,8 +1089,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set helper for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to set helper for plot " + plot.id);
e.printStackTrace(); e.printStackTrace();
} }
@ -1164,8 +1112,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set plot trusted for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to set plot trusted for plot " + plot.id);
e.printStackTrace(); e.printStackTrace();
} }
@ -1188,8 +1135,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
e.printStackTrace(); e.printStackTrace();
Logger.add(LogLevel.WARNING, "Failed to remove denied for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to remove denied for plot " + plot.id);
} }
@ -1212,8 +1158,7 @@ public class SQLManager implements AbstractDB {
statement.setString(2, UUIDHandler.getUUID(player).toString()); statement.setString(2, UUIDHandler.getUUID(player).toString());
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to set denied for plot " + plot.id); Logger.add(LogLevel.WARNING, "Failed to set denied for plot " + plot.id);
e.printStackTrace(); e.printStackTrace();
} }
@ -1233,8 +1178,7 @@ public class SQLManager implements AbstractDB {
} }
statement.close(); statement.close();
return rating; return rating;
} } catch (final SQLException e) {
catch (final SQLException e) {
Logger.add(LogLevel.WARNING, "Failed to fetch rating for plot " + plot.getId().toString()); Logger.add(LogLevel.WARNING, "Failed to fetch rating for plot " + plot.getId().toString());
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -21,17 +21,13 @@
package com.intellectualcrafters.plot.database; package com.intellectualcrafters.plot.database;
import org.bukkit.plugin.Plugin;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.sql.Connection; import java.sql.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.plugin.Plugin;
/** /**
* Connects to and uses a SQLite database * Connects to and uses a SQLite database
* *
@ -46,10 +42,8 @@ public class SQLite extends Database {
/** /**
* Creates a new SQLite instance * Creates a new SQLite instance
* *
* @param plugin * @param plugin Plugin instance
* Plugin instance * @param dbLocation Location of the Database (Must end in .db)
* @param dbLocation
* Location of the Database (Must end in .db)
*/ */
public SQLite(final Plugin plugin, final String dbLocation) { public SQLite(final Plugin plugin, final String dbLocation) {
super(plugin); super(plugin);
@ -68,8 +62,7 @@ public class SQLite extends Database {
if (!(file.exists())) { if (!(file.exists())) {
try { try {
file.createNewFile(); file.createNewFile();
} } catch (final IOException e) {
catch (final IOException e) {
this.plugin.getLogger().log(Level.SEVERE, "Unable to create database!"); this.plugin.getLogger().log(Level.SEVERE, "Unable to create database!");
} }
} }

View File

@ -21,19 +21,17 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import com.intellectualcrafters.plot.object.Plot;
/** /**
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused") public class PlayerClaimPlotEvent extends PlayerEvent implements Cancellable {
public class PlayerClaimPlotEvent extends PlayerEvent implements Cancellable {
private static HandlerList handlers = new HandlerList(); private static HandlerList handlers = new HandlerList();
private final Plot plot; private final Plot plot;
private final boolean auto; private final boolean auto;
@ -42,10 +40,8 @@ public class PlayerClaimPlotEvent extends PlayerEvent implements Cancellable {
/** /**
* PlayerClaimPlotEvent: Called when a plot is claimed * PlayerClaimPlotEvent: Called when a plot is claimed
* *
* @param player * @param player Player that claimed the plot
* Player that claimed the plot * @param plot Plot that was claimed
* @param plot
* Plot that was claimed
*/ */
public PlayerClaimPlotEvent(final Player player, final Plot plot, final boolean auto) { public PlayerClaimPlotEvent(final Player player, final Plot plot, final boolean auto) {
super(player); super(player);

View File

@ -21,12 +21,11 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import com.intellectualcrafters.plot.object.Plot;
/** /**
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
@ -40,10 +39,8 @@ public class PlayerEnterPlotEvent extends PlayerEvent {
/** /**
* PlayerEnterPlotEvent: Called when a player leaves a plot * PlayerEnterPlotEvent: Called when a player leaves a plot
* *
* @param player * @param player Player that entered the plot
* Player that entered the plot * @param plot Plot that was entered
* @param plot
* Plot that was entered
*/ */
public PlayerEnterPlotEvent(final Player player, final Plot plot) { public PlayerEnterPlotEvent(final Player player, final Plot plot) {
super(player); super(player);

View File

@ -21,12 +21,11 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import com.intellectualcrafters.plot.object.Plot;
/** /**
* @author Citymonstret * @author Citymonstret
* @author Empire92 * @author Empire92
@ -39,10 +38,8 @@ public class PlayerLeavePlotEvent extends PlayerEvent {
/** /**
* PlayerLeavePlotEvent: Called when a player leaves a plot * PlayerLeavePlotEvent: Called when a player leaves a plot
* *
* @param player * @param player Player that left the plot
* Player that left the plot * @param plot Plot that was left
* @param plot
* Plot that was left
*/ */
public PlayerLeavePlotEvent(final Player player, final Plot plot) { public PlayerLeavePlotEvent(final Player player, final Plot plot) {
super(player); super(player);

View File

@ -21,13 +21,12 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import java.util.UUID; import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import com.intellectualcrafters.plot.object.Plot; import java.util.UUID;
/** /**
* @author Citymonstret * @author Citymonstret
@ -42,17 +41,12 @@ public class PlayerPlotDeniedEvent extends Event {
private final UUID player; private final UUID player;
/** /**
* PlayerPlotDeniedEvent: Called when the denied UUID list is modified for a * PlayerPlotDeniedEvent: Called when the denied UUID list is modified for a plot
* plot
* *
* @param initiator * @param initiator Player that initiated the event
* Player that initiated the event * @param plot Plot in which the event occurred
* @param plot * @param player Player that was denied/un-denied
* Plot in which the event occurred * @param added true of add to deny list, false if removed
* @param player
* Player that was denied/un-denied
* @param added
* true of add to deny list, false if removed
*/ */
public PlayerPlotDeniedEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) { public PlayerPlotDeniedEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) {
this.initiator = initiator; this.initiator = initiator;

View File

@ -21,13 +21,12 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import java.util.UUID; import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import com.intellectualcrafters.plot.object.Plot; import java.util.UUID;
/** /**
* @author Empire92 * @author Empire92
@ -44,14 +43,10 @@ public class PlayerPlotHelperEvent extends Event {
/** /**
* PlayerPlotHelperEvent: Called when a plot helper is added/removed * PlayerPlotHelperEvent: Called when a plot helper is added/removed
* *
* @param initiator * @param initiator Player that initiated the event
* Player that initiated the event * @param plot Plot in which the event occurred
* @param plot * @param player Player that was added/removed from the helper list
* Plot in which the event occurred * @param added true of the player was added, false if the player was removed
* @param player
* Player that was added/removed from the helper list
* @param added
* true of the player was added, false if the player was removed
*/ */
public PlayerPlotHelperEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) { public PlayerPlotHelperEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) {
this.initiator = initiator; this.initiator = initiator;

View File

@ -21,13 +21,12 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import java.util.UUID; import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import com.intellectualcrafters.plot.object.Plot; import java.util.UUID;
/** /**
* @author Citymonstret * @author Citymonstret
@ -44,14 +43,10 @@ public class PlayerPlotTrustedEvent extends Event {
/** /**
* PlayerPlotTrustedEvent: Called when a plot trusted user is added/removed * PlayerPlotTrustedEvent: Called when a plot trusted user is added/removed
* *
* @param initiator * @param initiator Player that initiated the event
* Player that initiated the event * @param plot Plot in which the event occurred
* @param plot * @param player Player that was added/removed from the trusted list
* Plot in which the event occurred * @param added true of the player was added, false if the player was removed
* @param player
* Player that was added/removed from the trusted list
* @param added
* true of the player was added, false if the player was removed
*/ */
public PlayerPlotTrustedEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) { public PlayerPlotTrustedEvent(final Player initiator, final Plot plot, final UUID player, final boolean added) {
this.initiator = initiator; this.initiator = initiator;

View File

@ -21,14 +21,13 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import com.intellectualcrafters.plot.object.Plot;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import com.intellectualcrafters.plot.object.Plot;
/** /**
* Called when a player teleports to a plot * Called when a player teleports to a plot
* *
@ -46,12 +45,9 @@ public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellabl
/** /**
* PlayerTeleportToPlotEvent: Called when a player teleports to a plot * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
* *
* @param player * @param player That was teleported
* That was teleported * @param from Start location
* @param from * @param plot Plot to which the player was teleported
* Start location
* @param plot
* Plot to which the player was teleported
*/ */
public PlayerTeleportToPlotEvent(final Player player, final Location from, final Plot plot) { public PlayerTeleportToPlotEvent(final Player player, final Location from, final Plot plot) {
super(player); super(player);

View File

@ -21,12 +21,11 @@
package com.intellectualcrafters.plot.events; package com.intellectualcrafters.plot.events;
import com.intellectualcrafters.plot.object.PlotId;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import com.intellectualcrafters.plot.object.PlotId;
/** /**
* Called when a plot is cleared * Called when a plot is cleared
* *
@ -42,10 +41,8 @@ public class PlotClearEvent extends Event implements Cancellable {
/** /**
* PlotDeleteEvent: Called when a plot is cleared * PlotDeleteEvent: Called when a plot is cleared
* *
* @param world * @param world The world in which the plot was cleared
* The world in which the plot was cleared * @param id The plot that was cleared
* @param id
* The plot that was cleared
*/ */
public PlotClearEvent(final String world, final PlotId id) { public PlotClearEvent(final String world, final PlotId id) {
this.id = id; this.id = id;

Some files were not shown because too many files have changed in this diff Show More