예제 #1
0
        public static List readWatchableObjects(DataInputStream datainputstream)
        {
            ArrayList arraylist = null;
            for (byte byte0 = datainputstream.readByte(); byte0 != 127; byte0 = datainputstream.readByte())
            {
                if (arraylist == null)
                {
                    arraylist = new ArrayList();
                }
                int i = (byte0 & 0xe0) >> 5;
                int j = byte0 & 0x1f;
                WatchableObject watchableobject = null;
                switch (i)
                {
                    case 0: // '\0'
                        watchableobject = new WatchableObject(i, j, Byte.valueOf(datainputstream.readByte()));
                        break;

                    case 1: // '\001'
                        watchableobject = new WatchableObject(i, j, Short.valueOf(datainputstream.readShort()));
                        break;

                    case 2: // '\002'
                        watchableobject = new WatchableObject(i, j, Integer.valueOf(datainputstream.readInt()));
                        break;

                    case 3: // '\003'
                        watchableobject = new WatchableObject(i, j, Float.valueOf(datainputstream.readFloat()));
                        break;

                    case 4: // '\004'
                        watchableobject = new WatchableObject(i, j, datainputstream.readUTF());
                        break;

                    case 5: // '\005'
                        short word0 = datainputstream.readShort();
                        byte byte1 = datainputstream.readByte();
                        short word1 = datainputstream.readShort();
                        watchableobject = new WatchableObject(i, j, new ItemStack(word0, byte1, word1));

                        // fall through (not.. c#..)

                        int k2 = datainputstream.readInt();
                        int l2 = datainputstream.readInt();
                        int i12 = datainputstream.readInt();
                        watchableobject = new WatchableObject(i, j, new ChunkCoordinates(k2, l2, i12));

                        break;
                    case 6: // '\006'
                        int k = datainputstream.readInt();
                        int l = datainputstream.readInt();
                        int i1 = datainputstream.readInt();
                        watchableobject = new WatchableObject(i, j, new ChunkCoordinates(k, l, i1));
                        break;
                }
                arraylist.add(watchableobject);
            }

            return arraylist;
        }
예제 #2
0
        public void addObject(int i, object obj)
        {
            var integer = (Integer)dataTypes.get(obj.GetType());

            if (integer == null)
            {
                throw new IllegalArgumentException(
                          (new StringBuilder()).append("Unknown data type: ").append(obj.GetType()).toString());
            }
            if (i > 31)
            {
                throw new IllegalArgumentException(
                          (new StringBuilder()).append("Data value id is too big with ").append(i).append("! (Max is ").append
                              (31).append(")").toString());
            }
            if (watchedObjects.containsKey(Integer.valueOf(i)))
            {
                throw new IllegalArgumentException(
                          (new StringBuilder()).append("Duplicate id value for ").append(i).append("!").toString());
            }
            else
            {
                var watchableobject = new WatchableObject(integer.intValue(), i, obj);
                watchedObjects.put(Integer.valueOf(i), watchableobject);
                return;
            }
        }
예제 #3
0
        private static void writeWatchableObject(DataOutputStream dataoutputstream, WatchableObject watchableobject)
        {
            int i = (watchableobject.getObjectType() << 5 | watchableobject.getDataValueId() & 0x1f) & 0xff;

            dataoutputstream.writeByte(i);
            switch (watchableobject.getObjectType())
            {
            case 0:     // '\0'
                try
                {
                    dataoutputstream.writeByte(((Byte)watchableobject.getObject()).byteValue());
                }
                catch
                {
                    dataoutputstream.writeByte((sbyte)(watchableobject.getObject()));
                }
                break;

            case 1:     // '\001'
                dataoutputstream.writeShort(((Short)watchableobject.getObject()).shortValue());
                break;

            case 2:     // '\002'
                dataoutputstream.writeInt(((Integer)watchableobject.getObject()).intValue());
                break;

            case 3:     // '\003'
                dataoutputstream.writeFloat(((Float)watchableobject.getObject()).floatValue());
                break;

            case 4:     // '\004'
                dataoutputstream.writeUTF((string)watchableobject.getObject());
                break;

            case 5:     // '\005'
                var itemstack = (ItemStack)watchableobject.getObject();
                dataoutputstream.writeShort(itemstack.getItem().shiftedIndex);
                dataoutputstream.writeByte(itemstack.stackSize);
                dataoutputstream.writeShort(itemstack.getItemDamage());
                // fall through (cant.. c# ...)
                var chunkcoordinates2 = (ChunkCoordinates)watchableobject.getObject();
                dataoutputstream.writeInt(chunkcoordinates2.posX);
                dataoutputstream.writeInt(chunkcoordinates2.posY);
                dataoutputstream.writeInt(chunkcoordinates2.posZ);

                break;

            case 6:     // '\006'
                var chunkcoordinates = (ChunkCoordinates)watchableobject.getObject();
                dataoutputstream.writeInt(chunkcoordinates.posX);
                dataoutputstream.writeInt(chunkcoordinates.posY);
                dataoutputstream.writeInt(chunkcoordinates.posZ);
                break;
            }
        }
예제 #4
0
        private static void writeWatchableObject(DataOutputStream dataoutputstream, WatchableObject watchableobject)
        {
            int i = (watchableobject.getObjectType() << 5 | watchableobject.getDataValueId() & 0x1f) & 0xff;
            dataoutputstream.writeByte(i);
            switch (watchableobject.getObjectType())
            {
                case 0: // '\0'
                    try
                    {
                        dataoutputstream.writeByte(((Byte) watchableobject.getObject()).byteValue());
                    }
                    catch
                    {
                        dataoutputstream.writeByte((sbyte) (watchableobject.getObject()));
                    }
                    break;

                case 1: // '\001'
                    dataoutputstream.writeShort(((Short) watchableobject.getObject()).shortValue());
                    break;

                case 2: // '\002'
                    dataoutputstream.writeInt(((Integer) watchableobject.getObject()).intValue());
                    break;

                case 3: // '\003'
                    dataoutputstream.writeFloat(((Float) watchableobject.getObject()).floatValue());
                    break;

                case 4: // '\004'
                    dataoutputstream.writeUTF((string) watchableobject.getObject());
                    break;

                case 5: // '\005'
                    var itemstack = (ItemStack) watchableobject.getObject();
                    dataoutputstream.writeShort(itemstack.getItem().shiftedIndex);
                    dataoutputstream.writeByte(itemstack.stackSize);
                    dataoutputstream.writeShort(itemstack.getItemDamage());
                    // fall through (cant.. c# ...)
                    var chunkcoordinates2 = (ChunkCoordinates) watchableobject.getObject();
                    dataoutputstream.writeInt(chunkcoordinates2.posX);
                    dataoutputstream.writeInt(chunkcoordinates2.posY);
                    dataoutputstream.writeInt(chunkcoordinates2.posZ);

                    break;
                case 6: // '\006'
                    var chunkcoordinates = (ChunkCoordinates) watchableobject.getObject();
                    dataoutputstream.writeInt(chunkcoordinates.posX);
                    dataoutputstream.writeInt(chunkcoordinates.posY);
                    dataoutputstream.writeInt(chunkcoordinates.posZ);
                    break;
            }
        }
예제 #5
0
 public void addObject(int i, object obj)
 {
     var integer = (Integer) dataTypes.get(obj.GetType());
     if (integer == null)
     {
         throw new IllegalArgumentException(
             (new StringBuilder()).append("Unknown data type: ").append(obj.GetType()).toString());
     }
     if (i > 31)
     {
         throw new IllegalArgumentException(
             (new StringBuilder()).append("Data value id is too big with ").append(i).append("! (Max is ").append
                 (31).append(")").toString());
     }
     if (watchedObjects.containsKey(Integer.valueOf(i)))
     {
         throw new IllegalArgumentException(
             (new StringBuilder()).append("Duplicate id value for ").append(i).append("!").toString());
     }
     else
     {
         var watchableobject = new WatchableObject(integer.intValue(), i, obj);
         watchedObjects.put(Integer.valueOf(i), watchableobject);
         return;
     }
 }
예제 #6
0
        public static List readWatchableObjects(DataInputStream datainputstream)
        {
            ArrayList arraylist = null;

            for (byte byte0 = datainputstream.readByte(); byte0 != 127; byte0 = datainputstream.readByte())
            {
                if (arraylist == null)
                {
                    arraylist = new ArrayList();
                }
                int             i = (byte0 & 0xe0) >> 5;
                int             j = byte0 & 0x1f;
                WatchableObject watchableobject = null;
                switch (i)
                {
                case 0:     // '\0'
                    watchableobject = new WatchableObject(i, j, Byte.valueOf(datainputstream.readByte()));
                    break;

                case 1:     // '\001'
                    watchableobject = new WatchableObject(i, j, Short.valueOf(datainputstream.readShort()));
                    break;

                case 2:     // '\002'
                    watchableobject = new WatchableObject(i, j, Integer.valueOf(datainputstream.readInt()));
                    break;

                case 3:     // '\003'
                    watchableobject = new WatchableObject(i, j, Float.valueOf(datainputstream.readFloat()));
                    break;

                case 4:     // '\004'
                    watchableobject = new WatchableObject(i, j, datainputstream.readUTF());
                    break;

                case 5:     // '\005'
                    short word0 = datainputstream.readShort();
                    byte  byte1 = datainputstream.readByte();
                    short word1 = datainputstream.readShort();
                    watchableobject = new WatchableObject(i, j, new ItemStack(word0, byte1, word1));

                    // fall through (not.. c#..)

                    int k2  = datainputstream.readInt();
                    int l2  = datainputstream.readInt();
                    int i12 = datainputstream.readInt();
                    watchableobject = new WatchableObject(i, j, new ChunkCoordinates(k2, l2, i12));

                    break;

                case 6:     // '\006'
                    int k  = datainputstream.readInt();
                    int l  = datainputstream.readInt();
                    int i1 = datainputstream.readInt();
                    watchableobject = new WatchableObject(i, j, new ChunkCoordinates(k, l, i1));
                    break;
                }
                arraylist.add(watchableobject);
            }

            return(arraylist);
        }