001    package org.bukkit;
002    
003    /**
004     * A delegate for handling block changes. This serves as a direct interface
005     * between generation algorithms in the server implementation and utilizing
006     * code.
007     */
008    public interface BlockChangeDelegate {
009    
010        /**
011         * Set a block type at the specified coordinates without doing all world
012         * updates and notifications.
013         * <p>
014         * It is safe to have this call World.setTypeId, but it may be slower than
015         * World.setRawTypeId.
016         *
017         * @param x X coordinate
018         * @param y Y coordinate
019         * @param z Z coordinate
020         * @param typeId New block ID
021         * @return true if the block was set successfully
022         * @deprecated Magic value
023         */
024        @Deprecated
025        public boolean setRawTypeId(int x, int y, int z, int typeId);
026    
027        /**
028         * Set a block type and data at the specified coordinates without doing
029         * all world updates and notifications.
030         * <p>
031         * It is safe to have this call World.setTypeId, but it may be slower than
032         * World.setRawTypeId.
033         *
034         * @param x X coordinate
035         * @param y Y coordinate
036         * @param z Z coordinate
037         * @param typeId New block ID
038         * @param data Block data
039         * @return true if the block was set successfully
040         * @deprecated Magic value
041         */
042        @Deprecated
043        public boolean setRawTypeIdAndData(int x, int y, int z, int typeId, int data);
044    
045        /**
046         * Set a block type at the specified coordinates.
047         * <p>
048         * This method cannot call World.setRawTypeId, a full update is needed.
049         *
050         * @param x X coordinate
051         * @param y Y coordinate
052         * @param z Z coordinate
053         * @param typeId New block ID
054         * @return true if the block was set successfully
055         * @deprecated Magic value
056         */
057        @Deprecated
058        public boolean setTypeId(int x, int y, int z, int typeId);
059    
060        /**
061         * Set a block type and data at the specified coordinates.
062         * <p>
063         * This method cannot call World.setRawTypeId, a full update is needed.
064         *
065         * @param x X coordinate
066         * @param y Y coordinate
067         * @param z Z coordinate
068         * @param typeId New block ID
069         * @param data Block data
070         * @return true if the block was set successfully
071         * @deprecated Magic value
072         */
073        @Deprecated
074        public boolean setTypeIdAndData(int x, int y, int z, int typeId, int data);
075    
076        /**
077         * Get the block type at the location.
078         *
079         * @param x X coordinate
080         * @param y Y coordinate
081         * @param z Z coordinate
082         * @return The block ID
083         * @deprecated Magic value
084         */
085        @Deprecated
086        public int getTypeId(int x, int y, int z);
087    
088        /**
089         * Gets the height of the world.
090         *
091         * @return Height of the world
092         */
093        public int getHeight();
094    
095        /**
096         * Checks if the specified block is empty (air) or not.
097         *
098         * @param x X coordinate
099         * @param y Y coordinate
100         * @param z Z coordinate
101         * @return True if the block is considered empty.
102         */
103        public boolean isEmpty(int x, int y, int z);
104    }