001/*
002 * Trident - A Multithreaded Server Alternative
003 * Copyright 2014 The TridentSDK Team
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *    http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package net.tridentsdk.event.player;
019
020import net.tridentsdk.entity.living.Player;
021import net.tridentsdk.event.Cancellable;
022
023/**
024 * Called when a player attempts to change their flying state i.e. double-taps jump
025 * <p>
026 *     If a player can't change into this mode due to their fly mode being false, then the server
027 *     will call this event already cancelled, and plugins may uncancel it.
028 * </p>
029 */
030public class PlayerToggleFlyingEvent extends PlayerEvent implements Cancellable {
031    private final boolean toggleState;
032    private boolean cancelled;
033    private final boolean flyMode;
034
035    public PlayerToggleFlyingEvent(Player player, boolean toggleState, boolean flyMode) {
036        super(player);
037        this.toggleState = toggleState;
038        this.flyMode = flyMode;
039    }
040
041    /**
042     * Returns the state the player is attempting to toggle into, true for flying, false for not
043     */
044    public boolean toggleState() {
045        return this.toggleState;
046    }
047
048    public boolean isFlyMode() {
049        return this.flyMode;
050    }
051
052    @Override
053    public boolean isIgnored() {
054        return cancelled;
055    }
056
057    @Override
058    public void cancel(boolean cancelled) {
059        this.cancelled = cancelled;
060    }
061}