]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java
f778d31c6420a2581e8fd77007dfc20fd5b53c85
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / interop / TileEntitiesHelper.java
1 package com.irtimaled.bbor.client.interop;
2
3 import com.irtimaled.bbor.common.TypeHelper;
4 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
5 import net.minecraft.block.entity.BlockEntity;
6 import net.minecraft.client.MinecraftClient;
7
8 import java.util.Collection;
9 import java.util.HashSet;
10 import java.util.Set;
11 import java.util.function.Function;
12
13 public class TileEntitiesHelper {
14     public static <T extends BlockEntity, S extends AbstractBoundingBox> Iterable<S> map(Class<T> clazz, Function<T, S> map) {
15         Collection<BlockEntity> tileEntities = MinecraftClient.getInstance().world.blockEntities;
16
17         Set<S> results = new HashSet<>();
18         for (BlockEntity tileEntity : tileEntities) {
19             T typed = TypeHelper.as(tileEntity, clazz);
20             if (typed == null) {
21                 continue;
22             }
23             S result = map.apply(typed);
24             if (result != null) {
25                 results.add(result);
26             }
27         }
28         return results;
29     }
30 }