Example #1
0
        public void Add(object obj)
        {
            Tag tag;

            switch (obj)
            {
            case Tag t:
                tag = t;
                break;

            case byte b:
                tag = new ByteTag(b);
                break;

            case short s:
                tag = new ShortTag(s);
                break;

            case int i:
                tag = new IntTag(i);
                break;

            case long l:
                tag = new LongTag(l);
                break;

            case float f:
                tag = new FloatTag(f);
                break;

            case double d:
                tag = new DoubleTag(d);
                break;

            case byte[] b:
                tag = new ByteArrayTag(b);
                break;

            case string s:
                tag = new StringTag(s);
                break;

            case int[] i:
                tag = new IntArrayTag(i);
                break;

            case long[] l:
                tag = new LongArrayTag(l);
                break;

            default:
                throw new FormatException();
            }

            this.Add(tag);
        }
Example #2
0
        internal override void Read(NBTStream stream)
        {
            this.ListTagType = (NBTTagType)stream.ReadByteTag();
            for (int i = 0; i < stream.ReadIntTag(); ++i)
            {
                Tag tag = null;
                switch (this.ListTagType)
                {
                case NBTTagType.BYTE:
                    tag = new ByteTag(0);
                    break;

                case NBTTagType.SHORT:
                    tag = new ShortTag(0);
                    break;

                case NBTTagType.INT:
                    tag = new IntTag(0);
                    break;

                case NBTTagType.LONG:
                    tag = new LongTag(0);
                    break;

                case NBTTagType.FLOAT:
                    tag = new FloatTag(0);
                    break;

                case NBTTagType.DOUBLE:
                    tag = new DoubleTag(0);
                    break;

                case NBTTagType.BYTE_ARRAY:
                    tag = new ByteArrayTag(new byte[0]);
                    break;

                case NBTTagType.STRING:
                    tag = new StringTag("");
                    break;

                case NBTTagType.LIST:
                    tag = new ListTag(NBTTagType.END);
                    break;

                case NBTTagType.COMPOUND:
                    tag = new CompoundTag();
                    break;

                case NBTTagType.INT_ARRAY:
                    tag = new IntArrayTag(new int[0]);
                    break;

                case NBTTagType.LONG_ARRAY:
                    tag = new LongArrayTag(new long[0]);
                    break;

                default:
                    throw new NotSupportedException();
                }

                tag.Read(stream);
                this.Tags.Add(tag);
            }
        }