001    package org.bukkit.map;
002    
003    import org.bukkit.entity.Player;
004    
005    /**
006     * Represents a renderer for a map.
007     */
008    public abstract class MapRenderer {
009    
010        private boolean contextual;
011    
012        /**
013         * Initialize the map renderer base to be non-contextual. See {@link
014         * #isContextual()}.
015         */
016        public MapRenderer() {
017            this(false);
018        }
019    
020        /**
021         * Initialize the map renderer base with the given contextual status.
022         *
023         * @param contextual Whether the renderer is contextual. See {@link
024         *     #isContextual()}.
025         */
026        public MapRenderer(boolean contextual) {
027            this.contextual = contextual;
028        }
029    
030        /**
031         * Get whether the renderer is contextual, i.e. has different canvases for
032         * different players.
033         *
034         * @return True if contextual, false otherwise.
035         */
036        final public boolean isContextual() {
037            return contextual;
038        }
039    
040        /**
041         * Initialize this MapRenderer for the given map.
042         *
043         * @param map The MapView being initialized.
044         */
045        public void initialize(MapView map) {}
046    
047        /**
048         * Render to the given map.
049         *
050         * @param map The MapView being rendered to.
051         * @param canvas The canvas to use for rendering.
052         * @param player The player who triggered the rendering.
053         */
054        abstract public void render(MapView map, MapCanvas canvas, Player player);
055    
056    }