package com.irtimaled.bbor.client.renderers;
import com.irtimaled.bbor.client.Player;
+import com.irtimaled.bbor.client.config.BoundingBoxTypeHelper;
+import com.irtimaled.bbor.client.config.ColorHelper;
import com.irtimaled.bbor.client.config.ConfigManager;
-import com.irtimaled.bbor.client.interop.SpawningSphereHelper;
import com.irtimaled.bbor.client.models.BoundingBoxSpawningSphere;
-import com.irtimaled.bbor.common.MathHelper;
-import net.minecraft.client.resources.I18n;
+import com.irtimaled.bbor.client.models.Point;
+import com.irtimaled.bbor.common.BoundingBoxType;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.util.math.BlockPos;
import java.awt.*;
public class SpawningSphereRenderer extends AbstractRenderer<BoundingBoxSpawningSphere> {
@Override
- public void render(BoundingBoxSpawningSphere boundingBox) {
- OffsetPoint sphereCenter = new OffsetPoint(boundingBox.getCenter())
- .offset(boundingBox.getCenterOffsetX(), boundingBox.getCenterOffsetY(), boundingBox.getCenterOffsetZ());
+ public void render(MatrixStack matrixStack, BoundingBoxSpawningSphere boundingBox) {
+ Point point = boundingBox.getPoint();
+ OffsetPoint sphereCenter = new OffsetPoint(point);
+
+ Color safeAreaColor = ColorHelper.getColor(ConfigManager.colorAFKSpheresSafeArea);
+ renderSphere(matrixStack, point, BoundingBoxSpawningSphere.SAFE_RADIUS, safeAreaColor);
+
+ renderOuterSphere(matrixStack, boundingBox, point);
OffsetBox offsetBox = new OffsetBox(sphereCenter, sphereCenter).grow(0.5, 0, 0.5);
- renderCuboid(offsetBox, Color.GREEN);
+ renderCuboid(matrixStack, offsetBox, safeAreaColor, false, 30);
Integer spawnableSpacesCount = boundingBox.getSpawnableSpacesCount();
if (spawnableSpacesCount != null) {
- renderText(sphereCenter, I18n.format("bbor.renderer.spawningSphere.spawnable"),
+ renderText(matrixStack, sphereCenter, I18n.translate("bbor.renderer.spawningSphere.spawnable"),
spawnableSpacesCount == 0 ?
- I18n.format("bbor.renderer.spawningSphere.none") :
+ I18n.translate("bbor.renderer.spawningSphere.none") :
String.format("%,d", spawnableSpacesCount));
}
+ renderSphere(matrixStack, point, BoundingBoxSpawningSphere.SAFE_RADIUS, safeAreaColor);
- renderSphere(sphereCenter, BoundingBoxSpawningSphere.SAFE_RADIUS, Color.GREEN, 5, 5);
- renderSphere(sphereCenter, BoundingBoxSpawningSphere.SPAWN_RADIUS, Color.RED, 5, 5);
-
- if(ConfigManager.renderAFKSpawnableBlocks.get()) {
- renderSpawnableSpaces(sphereCenter);
+ if (ConfigManager.renderAFKSpawnableBlocks.get() && boundingBox.isWithinSphere(Player.getPoint())) {
+ renderSpawnableSpaces(matrixStack, boundingBox);
}
}
- private void renderSpawnableSpaces(OffsetPoint center) {
- Integer renderDistance = ConfigManager.afkSpawnableBlocksRenderDistance.get();
- int width = MathHelper.floor(Math.pow(2, 2 + renderDistance));
- int height = MathHelper.floor(Math.pow(2, renderDistance));
-
- SpawningSphereHelper.findSpawnableSpaces(center.getPoint(), Player.getCoords(), width, height,
- (x, y, z) -> {
- OffsetBox offsetBox = new OffsetBox(x, y, z, x + 1, y, z + 1);
- renderCuboid(offsetBox, Color.RED);
- return false;
- });
+ private void renderOuterSphere(MatrixStack matrixStack, BoundingBoxSpawningSphere boundingBox, Point point) {
+ Color color = BoundingBoxTypeHelper.getColor(boundingBox.getType());
+ renderSphere(matrixStack, point, BoundingBoxSpawningSphere.SPAWN_RADIUS, color);
+ }
+
+ private void renderSpawnableSpaces(MatrixStack matrixStack, BoundingBoxSpawningSphere boundingBox) {
+ Color color = BoundingBoxTypeHelper.getColor(BoundingBoxType.SpawnableBlocks);
+ for (BlockPos c : boundingBox.getBlocks()) {
+ int x = c.getX();
+ int y = c.getY();
+ int z = c.getZ();
+ OffsetBox offsetBox = new OffsetBox(x, y, z, x + 1, y, z + 1);
+ renderCuboid(matrixStack, offsetBox, color, false, 30);
+ }
}
}