package openmods.geometry; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import java.util.Collection; import java.util.List; import java.util.Map; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; public class BoundingBoxMap<T> { private final List<Map.Entry<AxisAlignedBB, T>> entries = Lists.newArrayList(); public void addBox(AxisAlignedBB aabb, T value) { Preconditions.checkNotNull(aabb); entries.add(Maps.immutableEntry(aabb, value)); } public Map.Entry<AxisAlignedBB, T> findEntryContainingPoint(Vec3 point) { for (Map.Entry<AxisAlignedBB, T> e : entries) if (e.getKey().isVecInside(point)) return e; return null; } public void findAllEntriesContainingPoint(Vec3 point, Collection<Map.Entry<AxisAlignedBB, T>> output) { for (Map.Entry<AxisAlignedBB, T> e : entries) if (e.getKey().isVecInside(point)) output.add(e); } public static <T> BoundingBoxMap<T> create() { return new BoundingBoxMap<T>(); } }