1 package com.irtimaled.bbor.client.providers;
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;
10 import java.util.List;
11 import java.util.function.Function;
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);
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;
23 Coords coords = new Coords(conduit.getPos());
24 return BoundingBoxConduit.from(coords, conduit.isActive() ? blocks.size() / 7 : 0);