001    package org.bukkit.map;
002    
003    import java.util.List;
004    import org.bukkit.World;
005    
006    /**
007     * Represents a map item.
008     */
009    public interface MapView {
010    
011        /**
012         * An enum representing all possible scales a map can be set to.
013         */
014        public static enum Scale {
015            CLOSEST(0),
016            CLOSE(1),
017            NORMAL(2),
018            FAR(3),
019            FARTHEST(4);
020    
021            private byte value;
022    
023            private Scale(int value) {
024                this.value = (byte) value;
025            }
026    
027            /**
028             * Get the scale given the raw value.
029             *
030             * @param value The raw scale
031             * @return The enum scale, or null for an invalid input
032             * @deprecated Magic value
033             */
034            @Deprecated
035            public static Scale valueOf(byte value) {
036                switch (value) {
037                case 0: return CLOSEST;
038                case 1: return CLOSE;
039                case 2: return NORMAL;
040                case 3: return FAR;
041                case 4: return FARTHEST;
042                default: return null;
043                }
044            }
045    
046            /**
047             * Get the raw value of this scale level.
048             *
049             * @return The scale value
050             * @deprecated Magic value
051             */
052            @Deprecated
053            public byte getValue() {
054                return value;
055            }
056        }
057    
058        /**
059         * Get the ID of this map item. Corresponds to the damage value of a map
060         * in an inventory.
061         *
062         * @return The ID of the map.
063         * @deprecated Magic value
064         */
065        @Deprecated
066        public short getId();
067    
068        /**
069         * Check whether this map is virtual. A map is virtual if its lowermost
070         * MapRenderer is plugin-provided.
071         *
072         * @return Whether the map is virtual.
073         */
074        public boolean isVirtual();
075    
076        /**
077         * Get the scale of this map.
078         *
079         * @return The scale of the map.
080         */
081        public Scale getScale();
082    
083        /**
084         * Set the scale of this map.
085         *
086         * @param scale The scale to set.
087         */
088        public void setScale(Scale scale);
089    
090        /**
091         * Get the center X position of this map.
092         *
093         * @return The center X position.
094         */
095        public int getCenterX();
096    
097        /**
098         * Get the center Z position of this map.
099         *
100         * @return The center Z position.
101         */
102        public int getCenterZ();
103    
104        /**
105         * Set the center X position of this map.
106         *
107         * @param x The center X position.
108         */
109        public void setCenterX(int x);
110    
111        /**
112         * Set the center Z position of this map.
113         *
114         * @param z The center Z position.
115         */
116        public void setCenterZ(int z);
117    
118        /**
119         * Get the world that this map is associated with. Primarily used by the
120         * internal renderer, but may be used by external renderers. May return
121         * null if the world the map is associated with is not loaded.
122         *
123         * @return The World this map is associated with.
124         */
125        public World getWorld();
126    
127        /**
128         * Set the world that this map is associated with. The world is used by
129         * the internal renderer, and may also be used by external renderers.
130         *
131         * @param world The World to associate this map with.
132         */
133        public void setWorld(World world);
134    
135        /**
136         * Get a list of MapRenderers currently in effect.
137         *
138         * @return A List<MapRenderer> containing each map renderer.
139         */
140        public List<MapRenderer> getRenderers();
141    
142        /**
143         * Add a renderer to this map.
144         *
145         * @param renderer The MapRenderer to add.
146         */
147        public void addRenderer(MapRenderer renderer);
148    
149        /**
150         * Remove a renderer from this map.
151         *
152         * @param renderer The MapRenderer to remove.
153         * @return True if the renderer was successfully removed.
154         */
155        public boolean removeRenderer(MapRenderer renderer);
156    
157    }