All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.spongepowered.api.event.block.CollideBlockEvent Maven / Gradle / Ivy

There is a newer version: 9.0.0
Show newest version
/*
 * This file is part of SpongeAPI, licensed under the MIT License (MIT).
 *
 * Copyright (c) SpongePowered 
 * Copyright (c) contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package org.spongepowered.api.event.block;

import org.spongepowered.api.block.BlockSnapshot;
import org.spongepowered.api.block.BlockState;
import org.spongepowered.api.block.BlockTypes;
import org.spongepowered.api.entity.Entity;
import org.spongepowered.api.event.action.CollideEvent;
import org.spongepowered.api.util.Direction;
import org.spongepowered.api.world.server.ServerLocation;

/**
 * Fired when an {@link Entity} collides with a {@link BlockSnapshot}.
 * 

Note that this event is fired very often. You might want to listen to one of its sub-events instead.

*/ public interface CollideBlockEvent extends CollideEvent { /** * Gets the target {@link ServerLocation} being interacted with. * * @return The location */ ServerLocation targetLocation(); /** * Gets the target {@link BlockState} being interacted with. * * @return The block state */ BlockState targetBlock(); /** * Gets the target "side" of the {@link BlockState} being interacted with * or {@link Direction#NONE} if not known. * * @return An optional containing the side being interacted with or * {@link Direction#NONE} */ Direction targetSide(); /** * Fires when an {@link Entity} moves into a block and collides with it. *

Cancelling this event will allow the original movement to happen.

*

e.g. an {@link Entity} falling will continue to fall through solid ground when this event is cancelled

*/ interface Move extends CollideBlockEvent {} /** * Fires when an {@link Entity} falls on a block. *

Cancelling this event will prevent the fall-logic to run. * e.g. fall-damage or trampling {@link BlockTypes#FARMLAND} *

*/ interface Fall extends CollideBlockEvent {} /** * Fires when an {@link Entity} steps on a block. *

Cancelling this event will prevent the step-on-logic to run. * e.g. breaking {@link BlockTypes#TURTLE_EGG}s or damage by {@link BlockTypes#MAGMA_BLOCK}s *

*/ interface StepOn extends CollideBlockEvent {} /** * Fires when an {@link Entity} is inside a block. *

Cancelling this event will prevent the inside-block-logic to run. * e.g. {@link BlockTypes#END_PORTAL } teleporting or {@link BlockTypes#COBWEB} slowing movement. *

*/ interface Inside extends CollideBlockEvent {} /** * Fired when an {@link Entity} impacts another {@link BlockSnapshot}. * *

Note: this should only fire once after the first impact.

*/ interface Impact extends CollideBlockEvent, CollideEvent.Impact {} }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy