@@ -0,0 +1,2025 @@
+package org.fountainmc.api.event.world;%0A%0Aimport javax.annotation.Nonnull;%0Aimport javax.annotation.ParametersAreNonnullByDefault;%0A%0Aimport com.google.common.base.Preconditions;%0Aimport org.fountainmc.api.entity.Player;%0Aimport org.fountainmc.api.event.AbstractCancellable;%0Aimport org.fountainmc.api.event.Cancellable;%0Aimport org.fountainmc.api.event.Event;%0Aimport org.fountainmc.api.world.BlockPosition;%0Aimport org.fountainmc.api.world.block.BlockState;%0A%0Aimport static com.google.common.base.Preconditions.checkArgument;%0Aimport static com.google.common.base.Preconditions.checkNotNull;%0A%0A@ParametersAreNonnullByDefault%0Apublic interface BlockPlaceEvent extends Cancellable, Event %7B%0A%0A    @Nonnull%0A    BlockState getNewBlockState();%0A%0A    @Nonnull%0A    BlockState getOriginalBlockState();%0A%0A    @Nonnull%0A    BlockPosition getPosition();%0A%0A    @Nonnull%0A    Player getPlayer();%0A%0A    static BlockPlaceEvent create(Player player, BlockPosition position, BlockState oldState, BlockState newState) %7B%0A        checkArgument(checkNotNull(player, %22Null player%22).getWorld().equals(checkNotNull(position, %22Null position%22).getWorld()),%0A                %22Player's world %25s doesn't match position's world %25s%22, player.getWorld(), position.getWorld());%0A        checkNotNull(oldState, %22oldState%22);%0A        checkNotNull(newState, %22newState%22);%0A        class SimpleBlockPlaceEvent extends AbstractCancellable implements BlockPlaceEvent %7B%0A%0A            @Nonnull%0A            @Override%0A            public BlockState getNewBlockState() %7B%0A                return newState;%0A            %7D%0A%0A            @Nonnull%0A            @Override%0A            public BlockState getOriginalBlockState() %7B%0A                return oldState;%0A            %7D%0A%0A            @Nonnull%0A            @Override%0A            public BlockPosition getPosition() %7B%0A                return position;%0A            %7D%0A%0A            @Nonnull%0A            @Override%0A            public Player getPlayer() %7B%0A                return player;%0A            %7D%0A        %7D%0A        return new SimpleBlockPlaceEvent();%0A    %7D%0A%0A%7D%0A

Add BlockPlaceEvent