]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/client/providers/ConduitProvider.java
6b4034b0311e4f13606ee7ed6b44c0ca9399cde3
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / providers / ConduitProvider.java
1 package com.irtimaled.bbor.client.providers;
2
3 import com.irtimaled.bbor.ReflectionHelper;
4 import com.irtimaled.bbor.client.interop.TileEntitiesHelper;
5 import com.irtimaled.bbor.client.models.BoundingBoxConduit;
6 import com.irtimaled.bbor.common.models.Coords;
7 import net.minecraft.tileentity.TileEntityConduit;
8 import net.minecraft.util.math.BlockPos;
9
10 import java.util.List;
11 import java.util.function.Function;
12
13 public class ConduitProvider implements IBoundingBoxProvider<BoundingBoxConduit> {
14     private static final Function<TileEntityConduit, List<BlockPos>> blocksFetcher =
15             ReflectionHelper.getPrivateFieldGetter(TileEntityConduit.class, List.class, BlockPos.class);
16
17     @Override
18     public Iterable<BoundingBoxConduit> get(int dimensionId) {
19         return TileEntitiesHelper.map(TileEntityConduit.class, conduit -> {
20             List<BlockPos> blocks = blocksFetcher.apply(conduit);
21             if (blocks == null) return null;
22
23             Coords coords = new Coords(conduit.getPos());
24             return BoundingBoxConduit.from(coords, conduit.isActive() ? blocks.size() / 7 : 0);
25         });
26     }
27 }