package com.irtimaled.bbor.client;
+import com.irtimaled.bbor.client.config.ConfigManager;
import com.irtimaled.bbor.client.interop.ClientInterop;
+import com.irtimaled.bbor.client.models.*;
import com.irtimaled.bbor.client.providers.*;
import com.irtimaled.bbor.client.renderers.*;
import com.irtimaled.bbor.common.MathHelper;
-import com.irtimaled.bbor.common.models.*;
-import com.irtimaled.bbor.config.ConfigManager;
+import com.irtimaled.bbor.common.models.AbstractBoundingBox;
+import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
+import com.irtimaled.bbor.common.models.BoundingBoxVillage;
import org.lwjgl.opengl.GL11;
import java.util.HashMap;
private static final Map<Class<? extends AbstractBoundingBox>, AbstractRenderer> boundingBoxRendererMap = new HashMap<>();
private static boolean active;
- private static Set<IBoundingBoxProvider> providers = new HashSet<>();
+ private static final Set<IBoundingBoxProvider> providers = new HashSet<>();
public static boolean getActive() {
return active;
active = !active;
if (!active) return;
- PlayerCoords.setActiveY();
+ Player.setActiveY();
}
static void deactivate() {
registerRenderer(BoundingBoxCuboid.class, new CuboidRenderer());
registerRenderer(BoundingBoxMobSpawner.class, new MobSpawnerRenderer());
registerRenderer(BoundingBoxSpawningSphere.class, new SpawningSphereRenderer());
- registerRenderer(BoundingBoxBeacon.class, new CuboidRenderer());
+ registerRenderer(BoundingBoxBeacon.class, new BeaconRenderer());
registerRenderer(BoundingBoxBiomeBorder.class, new BiomeBorderRenderer());
+ registerRenderer(BoundingBoxConduit.class, new ConduitRenderer());
registerProvider(new SlimeChunkProvider());
registerProvider(new WorldSpawnProvider());
registerProvider(new SpawningSphereProvider());
registerProvider(new BeaconProvider());
registerProvider(new CustomBoxProvider());
+ registerProvider(new CustomBeaconProvider());
registerProvider(new BiomeBorderProvider());
+ registerProvider(new MobSpawnerProvider());
+ registerProvider(new ConduitProvider());
}
public static <T extends AbstractBoundingBox> void registerProvider(IBoundingBoxProvider<T> provider) {
private static boolean isWithinRenderDistance(AbstractBoundingBox boundingBox) {
int renderDistanceBlocks = ClientInterop.getRenderDistanceChunks() * CHUNK_SIZE;
- int minX = MathHelper.floor(PlayerCoords.getX() - renderDistanceBlocks);
- int maxX = MathHelper.floor(PlayerCoords.getX() + renderDistanceBlocks);
- int minZ = MathHelper.floor(PlayerCoords.getZ() - renderDistanceBlocks);
- int maxZ = MathHelper.floor(PlayerCoords.getZ() + renderDistanceBlocks);
+ int minX = MathHelper.floor(Player.getX() - renderDistanceBlocks);
+ int maxX = MathHelper.floor(Player.getX() + renderDistanceBlocks);
+ int minZ = MathHelper.floor(Player.getZ() - renderDistanceBlocks);
+ int maxZ = MathHelper.floor(Player.getZ() + renderDistanceBlocks);
return boundingBox.intersectsBounds(minX, minZ, maxX, maxZ);
}
public static void render(int dimensionId) {
- if(!active) return;
+ if (!active) return;
Set<AbstractBoundingBox> boundingBoxes = getBoundingBoxes(dimensionId);
}
for (AbstractBoundingBox key : boundingBoxes) {
- if (!key.shouldRender() || !isWithinRenderDistance(key)) continue;
-
AbstractRenderer renderer = boundingBoxRendererMap.get(key.getClass());
if (renderer == null) continue;
private static Set<AbstractBoundingBox> getBoundingBoxes(int dimensionId) {
Set<AbstractBoundingBox> boundingBoxes = new HashSet<>();
- for(IBoundingBoxProvider<?> provider: providers) {
- for (AbstractBoundingBox boundingBox : provider.get(dimensionId)) {
- boundingBoxes.add(boundingBox);
+ for (IBoundingBoxProvider<?> provider : providers) {
+ if (provider.canProvide(dimensionId)) {
+ for (AbstractBoundingBox boundingBox : provider.get(dimensionId)) {
+ if (isWithinRenderDistance(boundingBox)) {
+ boundingBoxes.add(boundingBox);
+ }
+ }
}
}
return boundingBoxes;