Search in sources :

Example 11 with AABB

use of org.spongepowered.api.util.AABB in project LanternServer by LanternPowered.

the class ShulkerBoxInteractionBehavior method validateOpenableSpace.

@Override
protected boolean validateOpenableSpace(BehaviorContext context, Location<World> location, List<Runnable> tasks) {
    final Direction facing = location.getBlock().getTraitValue(LanternEnumTraits.FACING).get();
    final Location<World> relLocation = location.getBlockRelative(facing);
    final AABB aabb = relLocation.getExtent().getBlockSelectionBox(relLocation.getBlockPosition()).orElse(null);
    if (aabb != null && getExtendedAABB(facing).offset(relLocation.getBlockPosition()).intersects(aabb)) {
        final ReplaceableProperty replaceableProperty = relLocation.getProperty(ReplaceableProperty.class).orElse(null);
        // Replaceable blocks will be replaced when opened
        if (replaceableProperty != null && replaceableProperty.getValue()) {
            tasks.add(() -> context.addBlockChange(BlockSnapshotBuilder.create().location(relLocation).blockState(BlockTypes.AIR.getDefaultState()).build()));
            // TODO: Use break block pipeline instead
            return true;
        }
        return false;
    }
    return true;
}
Also used : ReplaceableProperty(org.spongepowered.api.data.property.block.ReplaceableProperty) World(org.spongepowered.api.world.World) Direction(org.spongepowered.api.util.Direction) AABB(org.spongepowered.api.util.AABB)

Aggregations

AABB (org.spongepowered.api.util.AABB)11 Vector3d (com.flowpowered.math.vector.Vector3d)3 ImmutableSet (com.google.common.collect.ImmutableSet)3 World (org.spongepowered.api.world.World)3 Vector3i (com.flowpowered.math.vector.Vector3i)2 CachedSimpleObjectProvider (org.lanternpowered.server.block.provider.CachedSimpleObjectProvider)2 ConstantObjectProvider (org.lanternpowered.server.block.provider.ConstantObjectProvider)2 SimpleObjectProvider (org.lanternpowered.server.block.provider.SimpleObjectProvider)2 BlockState (org.spongepowered.api.block.BlockState)2 ReplaceableProperty (org.spongepowered.api.data.property.block.ReplaceableProperty)2 Direction (org.spongepowered.api.util.Direction)2 Preconditions.checkNotNull (com.google.common.base.Preconditions.checkNotNull)1 ArrayList (java.util.ArrayList)1 BitSet (java.util.BitSet)1 List (java.util.List)1 Consumer (java.util.function.Consumer)1 Function (java.util.function.Function)1 Supplier (java.util.function.Supplier)1 Nullable (javax.annotation.Nullable)1 Entity (net.minecraft.entity.Entity)1