geforkt von Mirrors/Paper
Add BlockMultiPlaceEvent. Adds BUKKIT-5558
Some blocks, such as beds, doors, or flowers, are actually composed of multiple blocks when they are placed. Currently, to detect how many blocks are actually modified a plugin has to perform various calculations to determine the directions of relative blocks, many of which are difficult to perform and can easily return false positives. This commit adds in a BlockMultiPlaceEvent, which adds in easy support for accessing all blocks modified by the placement of a block. By: Nate Mortensen <nate.richard.mortensen@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
181e1c1fb3
Commit
7731218b97
@ -0,0 +1,36 @@
|
|||||||
|
package org.bukkit.event.block;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockState;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired when a single block placement action of a player triggers the
|
||||||
|
* creation of multiple blocks(e.g. placing a bed block). The block returned
|
||||||
|
* by {@link #getBlockPlaced()} and its related methods is the block where
|
||||||
|
* the placed block would exist if the placement only affected a single
|
||||||
|
* block.
|
||||||
|
*/
|
||||||
|
public class BlockMultiPlaceEvent extends BlockPlaceEvent {
|
||||||
|
private final List<BlockState> states;
|
||||||
|
|
||||||
|
public BlockMultiPlaceEvent(List<BlockState> states, Block clicked, ItemStack itemInHand, Player thePlayer, boolean canBuild) {
|
||||||
|
super(states.get(0).getBlock(), states.get(0), clicked, itemInHand, thePlayer, canBuild);
|
||||||
|
this.states = ImmutableList.copyOf(states);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a list of blockstates for all blocks which were replaced by the
|
||||||
|
* placement of the new blocks. Most of these blocks will just have a
|
||||||
|
* Material type of AIR.
|
||||||
|
*
|
||||||
|
* @return immutable list of replaced BlockStates
|
||||||
|
*/
|
||||||
|
public List<BlockState> getReplacedBlockStates() {
|
||||||
|
return states;
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren