@@ -0,0 +1,2738 @@
+/*%0A * This file is part of GenericsLib for Bukkit, licensed under the MIT License (MIT).%0A *%0A * Copyright (c) JCThePants (www.jcwhatever.com)%0A *%0A * Permission is hereby granted, free of charge, to any person obtaining a copy%0A * of this software and associated documentation files (the %22Software%22), to deal%0A * in the Software without restriction, including without limitation the rights%0A * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell%0A * copies of the Software, and to permit persons to whom the Software is%0A * furnished to do so, subject to the following conditions:%0A *%0A * The above copyright notice and this permission notice shall be included in%0A * all copies or substantial portions of the Software.%0A *%0A * THE SOFTWARE IS PROVIDED %22AS IS%22, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR%0A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,%0A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE%0A * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER%0A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,%0A * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN%0A * THE SOFTWARE.%0A */%0A%0Apackage com.jcwhatever.bukkit.generic.mixins;%0A%0Aimport org.bukkit.entity.Player;%0A%0Aimport java.util.List;%0A%0A/**%0A * Mixin defines an implementation that determines%0A * which players can see whatever object it represents%0A * in the world.%0A */%0Apublic interface IViewable %7B%0A%0A    /**%0A     * Get the view mode.%0A     */%0A    ViewMode getViewMode();%0A%0A    /**%0A     * Set the view mode.%0A     *%0A     * @param viewMode  The view mode.%0A     */%0A    void setViewMode(ViewMode viewMode);%0A%0A    /**%0A     * Determine if the specified player%0A     * is in the collection of viewers.%0A     *%0A     * @param player  The player to check.%0A     */%0A    boolean has(Player player);%0A%0A    /**%0A     * Add a player to the collection%0A     * of viewers.%0A     *%0A     * @param player  The player to add.%0A     */%0A    void add(Player player);%0A%0A    /**%0A     * Remove a player from the collection%0A     * of viewers.%0A     *%0A     * @param player  The player to remove.%0A     */%0A    void remove(Player player);%0A%0A    /**%0A     * Clear all players from the collection of%0A     * viewers.%0A     */%0A    void clear();%0A%0A    /**%0A     * Get all players in the view collection.%0A     */%0A    List%3CPlayer%3E getViewers();%0A%0A    /**%0A     * Define how the viewer collection is treated.%0A     */%0A    public enum ViewMode %7B%0A        /**%0A         * All viewers in the collection cannot%0A         * see the object in the world.%0A         */%0A        BLACKLIST,%0A%0A        /**%0A         * Only viewers in the collection can%0A         * see the object in the world.%0A         */%0A        WHITELIST%0A    %7D%0A%7D%0A

add viewable mixin