This commit is contained in:
Steveice10 2012-06-14 12:51:08 -07:00
parent fe23c55d9f
commit 13ee7511fd
3 changed files with 44 additions and 18 deletions

View File

@ -9,20 +9,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import ch.spacebase.opennbt.stream.NBTOutputStream; import ch.spacebase.opennbt.stream.NBTOutputStream;
import ch.spacebase.opennbt.tag.ByteArrayTag; import ch.spacebase.opennbt.tag.*;
import ch.spacebase.opennbt.tag.ByteTag; import ch.spacebase.opennbt.tag.custom.*;
import ch.spacebase.opennbt.tag.CompoundTag;
import ch.spacebase.opennbt.tag.DoubleTag;
import ch.spacebase.opennbt.tag.EndTag;
import ch.spacebase.opennbt.tag.FloatTag;
import ch.spacebase.opennbt.tag.IntArrayTag;
import ch.spacebase.opennbt.tag.IntTag;
import ch.spacebase.opennbt.tag.ListTag;
import ch.spacebase.opennbt.tag.LongTag;
import ch.spacebase.opennbt.tag.ShortTag;
import ch.spacebase.opennbt.tag.StringTag;
import ch.spacebase.opennbt.tag.Tag;
public class TagBuilder { public class TagBuilder {
@ -57,6 +45,11 @@ public class TagBuilder {
return this; return this;
} }
public TagBuilder append(String name, double d[]) {
this.tags.add(new DoubleArrayTag(name, d));
return this;
}
public TagBuilder append(EndTag tag) { public TagBuilder append(EndTag tag) {
this.tags.add(tag); this.tags.add(tag);
return this; return this;
@ -67,6 +60,11 @@ public class TagBuilder {
return this; return this;
} }
public TagBuilder append(String name, float f[]) {
this.tags.add(new FloatArrayTag(name, f));
return this;
}
public TagBuilder append(String name, int i[]) { public TagBuilder append(String name, int i[]) {
this.tags.add(new IntArrayTag(name, i)); this.tags.add(new IntArrayTag(name, i));
return this; return this;
@ -87,16 +85,41 @@ public class TagBuilder {
return this; return this;
} }
public TagBuilder append(String name, long l[]) {
this.tags.add(new LongArrayTag(name, l));
return this;
}
public TagBuilder append(String name, short s) { public TagBuilder append(String name, short s) {
this.tags.add(new ShortTag(name, s)); this.tags.add(new ShortTag(name, s));
return this; return this;
} }
public TagBuilder append(String name, short s[]) {
this.tags.add(new ShortArrayTag(name, s));
return this;
}
public TagBuilder append(String name, String s) { public TagBuilder append(String name, String s) {
this.tags.add(new StringTag(name, s)); this.tags.add(new StringTag(name, s));
return this; return this;
} }
public TagBuilder append(String name, String s[]) {
this.tags.add(new StringArrayTag(name, s));
return this;
}
public TagBuilder append(String name, Object o) {
this.tags.add(new ObjectTag(name, o));
return this;
}
public TagBuilder append(String name, Object o[]) {
this.tags.add(new ObjectArrayTag(name, o));
return this;
}
public TagBuilder append(TagBuilder builder) { public TagBuilder append(TagBuilder builder) {
this.tags.add(builder.toCompoundTag()); this.tags.add(builder.toCompoundTag());
return this; return this;

View File

@ -242,7 +242,7 @@ public final class NBTOutputStream implements Closeable {
* @throws IOException if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
private void writeStringTagPayload(StringTag tag) throws IOException { private void writeStringTagPayload(StringTag tag) throws IOException {
byte[] bytes = tag.getValue().getBytes(NBTConstants.CHARSET); byte[] bytes = tag.getValue() != null ? tag.getValue().getBytes(NBTConstants.CHARSET) : new byte[0];
os.writeShort(bytes.length); os.writeShort(bytes.length);
os.write(bytes); os.write(bytes);
} }

View File

@ -35,7 +35,6 @@ package ch.spacebase.opennbt.tag;
*/ */
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -67,12 +66,12 @@ public final class CompoundTag extends Tag {
*/ */
public CompoundTag(String name, Map<String, Tag> value) { public CompoundTag(String name, Map<String, Tag> value) {
super(name); super(name);
this.value = Collections.unmodifiableMap(value); this.value = value;
} }
@Override @Override
public Map<String, Tag> getValue() { public Map<String, Tag> getValue() {
return value; return new HashMap<String, Tag>(value);
} }
public Tag get(String tagName) { public Tag get(String tagName) {
@ -99,6 +98,10 @@ public final class CompoundTag extends Tag {
return this.value.size(); return this.value.size();
} }
public void clear() {
this.value.clear();
}
@Override @Override
public String toString() { public String toString() {
String name = getName(); String name = getName();