]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/interop/TileEntitiesHelper.java
75d7fc0f9b1b1fae8a8ac8f4b3b10b9534841b71
[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.client.Minecraft;
6 import net.minecraft.tileentity.TileEntity;
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 TileEntity, S extends AbstractBoundingBox> Iterable<S> map(Class<T> clazz, Function<T, S> map) {
15         Collection<TileEntity> tileEntities = Minecraft.getInstance().world.loadedTileEntityList;
16
17         Set<S> results = new HashSet<>();
18         for (TileEntity 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 }