]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/commands/SpawningSphereCommand.java
Add support for blocks only spawnable at night
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / commands / SpawningSphereCommand.java
index a97c360fb27ea79f0a3a283437a8fe41ee281b2a..c109863bb6d5f05b35292f0bf0bdbd919c2c705c 100644 (file)
@@ -1,12 +1,16 @@
 package com.irtimaled.bbor.client.commands;
 
+import com.irtimaled.bbor.client.Player;
 import com.irtimaled.bbor.client.providers.SpawningSphereProvider;
 import com.mojang.brigadier.CommandDispatcher;
 import com.mojang.brigadier.builder.LiteralArgumentBuilder;
+import net.minecraft.client.Minecraft;
 import net.minecraft.command.Commands;
 import net.minecraft.command.ISuggestionProvider;
 import net.minecraft.command.arguments.Vec3Argument;
 import net.minecraft.util.math.Vec3d;
+import net.minecraft.world.EnumLightType;
+import net.minecraft.world.World;
 
 public class SpawningSphereCommand {
     private static final String COMMAND = "bbor:spawningSphere";
@@ -43,12 +47,31 @@ public class SpawningSphereCommand {
                         }))
                 .then(Commands.literal(CALCULATE_SPAWNABLE)
                         .executes(context -> {
-                            int count = SpawningSphereProvider.recalculateSpawnableSpacesCount();
+                            if(!SpawningSphereProvider.hasSpawningSphereInDimension(Player.getDimensionId())) {
+                                CommandHelper.feedback(context, "bbor.commands.spawningSphere.notSet");
+                                return 0;
+                            }
 
-                            String format = count == -1 ? "bbor.commands.spawningSphere.notSet" : "bbor.commands.spawningSphere.calculated";
-                            CommandHelper.feedback(context, format, String.format("%,d", count));
+                            Counts counts = new Counts();
+                            World world = Minecraft.getInstance().world;
+                            SpawningSphereProvider.calculateSpawnableSpacesCount(pos -> {
+                                counts.spawnable++;
+                                if(world.getLightFor(EnumLightType.SKY, pos) > 7)
+                                    counts.nightSpawnable++;
+                            });
+                            SpawningSphereProvider.setSpawnableSpacesCount(counts.spawnable);
+
+                            CommandHelper.feedback(context, "bbor.commands.spawningSphere.calculated",
+                                    String.format("%,d", counts.spawnable),
+                                    String.format("%,d", counts.nightSpawnable));
                             return 0;
                         }));
         commandDispatcher.register(command);
     }
+
+    private static class Counts {
+        private int spawnable = 0;
+        private int nightSpawnable = 0;
+
+    }
 }