diff --git a/src/main/java/net/lizistired/cavedust/CaveDust.java b/src/main/java/net/lizistired/cavedust/CaveDust.java index 7e6110f..12f7cb1 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDust.java +++ b/src/main/java/net/lizistired/cavedust/CaveDust.java @@ -1,6 +1,7 @@ package net.lizistired.cavedust; //minecraft imports +import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.particle.ParticleTypes; import net.minecraft.registry.Registries; @@ -40,6 +41,7 @@ public class CaveDust implements ClientModInitializer { } public static int WHITE_ASH_ID = Registries.PARTICLE_TYPE.getRawId(ParticleTypes.WHITE_ASH); + public static int PARTICLE_AMOUNT = 0; @Override @@ -72,18 +74,20 @@ public class CaveDust implements ClientModInitializer { //LOGGER.info(String.valueOf(((ClientWorldAccessor) client.world.getLevelProperties()).getFlatWorld())); // ) double probabilityNormalized = normalize(config.getLowerLimit(), config.getUpperLimit(), client.player.getBlockY()); + PARTICLE_AMOUNT = (int) (probabilityNormalized * config.getParticleMultiplier() * config.getParticleMultiplierMultiplier()); - for (int i = 0; i < probabilityNormalized * config.getParticleMultiplier() * 10; i++) { + for (int i = 0; i < PARTICLE_AMOUNT; i++) { try { double x = client.player.getPos().getX() + generateRandomDouble(config.getDimensionsX() * -1, config.getDimensionsX()); double y = client.player.getPos().getY() + generateRandomDouble(config.getDimensionsY() * -1, config.getDimensionsY()); double z = client.player.getPos().getZ() + generateRandomDouble(config.getDimensionsZ() * -1, config.getDimensionsZ()); BlockPos particlePos = new BlockPos(x, y, z); - if (!shouldParticlesSpawn(client, config, particlePos)){return;} - - - world.addParticle(config.getParticle(), x, y, z, config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom()); + if (shouldParticlesSpawn(client, config, particlePos)) { + if (client.world.getBlockState(particlePos).isAir()) { + world.addParticle(config.getParticle(), x, y, z, config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom()); + } + } } catch (NullPointerException e) { LOGGER.error(String.valueOf(e)); diff --git a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java index 62b69ed..7178dd9 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java +++ b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java @@ -26,6 +26,8 @@ public class CaveDustConfig extends JsonFile { private float lowerLimit = -64; private int particleMultiplier = 1; + private int particleMultiplierMultiplier = 10; + private int particleID = WHITE_ASH_ID; public CaveDustConfig(Path file, net.lizistired.cavedust.CaveDust caveDust) { @@ -111,6 +113,16 @@ public class CaveDustConfig extends JsonFile { return getParticleMultiplier(); } + public int getParticleMultiplierMultiplier(){ + return particleMultiplierMultiplier; + } + + public float setParticleMultiplierMultiplier(float particleMultiplierMultiplier){ + this.particleMultiplierMultiplier = (int) particleMultiplierMultiplier; + save(); + return getParticleMultiplierMultiplier(); + } + public boolean toggleCaveDust(){ caveDustEnabled = !caveDustEnabled; save(); @@ -197,6 +209,7 @@ public class CaveDustConfig extends JsonFile { lowerLimit = -64; particleMultiplier = 1; + particleMultiplierMultiplier = 10; seaLevelCheck = true; caveDustEnabled = true; diff --git a/src/main/java/net/lizistired/cavedust/mixin/MixinDebugScreenOverlay.java b/src/main/java/net/lizistired/cavedust/mixin/MixinDebugScreenOverlay.java index b76ac76..30cedad 100644 --- a/src/main/java/net/lizistired/cavedust/mixin/MixinDebugScreenOverlay.java +++ b/src/main/java/net/lizistired/cavedust/mixin/MixinDebugScreenOverlay.java @@ -7,6 +7,8 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.List; + +import static net.lizistired.cavedust.CaveDust.PARTICLE_AMOUNT; import static net.lizistired.cavedust.utils.ParticleSpawnUtil.shouldParticlesSpawn; @Mixin(DebugHud.class) @@ -16,7 +18,7 @@ public abstract class MixinDebugScreenOverlay { List messages = cir.getReturnValue(); messages.add(""); - messages.add("Should particles spawn: " + shouldParticlesSpawn); + messages.add("Particle amount evaluated: " + PARTICLE_AMOUNT); messages.add(""); } } diff --git a/src/main/java/net/lizistired/cavedust/utils/ParticleSpawnUtil.java b/src/main/java/net/lizistired/cavedust/utils/ParticleSpawnUtil.java index 3528577..0b81484 100644 --- a/src/main/java/net/lizistired/cavedust/utils/ParticleSpawnUtil.java +++ b/src/main/java/net/lizistired/cavedust/utils/ParticleSpawnUtil.java @@ -66,7 +66,7 @@ public class ParticleSpawnUtil { || client.isPaused() || client.world == null || !client.world.getDimension().bedWorks() - || Objects.requireNonNull(client.player).isSubmergedInWater() + || (client.world.getBottomY() > pos.getY()) || client.world.getBiome(Objects.requireNonNull(pos)).matchesKey(LUSH_CAVES)) { diff --git a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java index 0b8d814..c07ccd4 100644 --- a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java +++ b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java @@ -24,6 +24,10 @@ public class TranslatableTextHelper { public Text formatParticleMultiplier(AbstractSlider slider) { return Text.translatable("menu.cavedust.particlemultiplier", (int)Math.floor(slider.getValue())); } + + public Text formatParticleMultiplierMultiplier(AbstractSlider slider) { + return Text.translatable("menu.cavedust.particlemultipliermultiplier", (int)Math.floor(slider.getValue())); + } public Text formatVelocityRandomness(AbstractSlider slider) { return Text.translatable("menu.cavedust.velocityrandomness", (int) Math.floor(slider.getValue())); } diff --git a/src/main/resources/assets/modid/lang/en_us.json b/src/main/resources/assets/modid/lang/en_us.json index 2f70b48..e053ad4 100644 --- a/src/main/resources/assets/modid/lang/en_us.json +++ b/src/main/resources/assets/modid/lang/en_us.json @@ -16,8 +16,10 @@ "menu.cavedust.lowerlimit.tooltip": "The height where particles spawn the most (uses player y).", "menu.cavedust.reset": "Reset settings", "menu.cavedust.reset.tooltip": "Are you sure you want to reset all settings?", - "menu.cavedust.particlemultiplier": "Particle multiplier: %s", - "menu.cavedust.particlemultiplier.tooltip": "Multiplies the amount of particles at any given depth.", + "menu.cavedust.particlemultiplier": "Particle amount: %s", + "menu.cavedust.particlemultiplier.tooltip": "Amount of particles to spawn at any given depth.", + "menu.cavedust.particlemultipliermultiplier": "Particle multiplier: %s", + "menu.cavedust.particlemultipliermultiplier.tooltip": "Multiplies particle amount.", "menu.cavedust.velocityrandomness": "Velocity randomness: %s", "menu.cavedust.velocityrandomness.tooltip": "The randomness of the velocity of the particles.", "menu.cavedust.enhanceddetection.true": "Enhanced detection: Enabled", diff --git a/src/main/resources/dust.mixins.json b/src/main/resources/dust.mixins.json index 923f4b3..1cad7ce 100644 --- a/src/main/resources/dust.mixins.json +++ b/src/main/resources/dust.mixins.json @@ -4,7 +4,8 @@ "package": "net.lizistired.cavedust.mixin", "compatibilityLevel": "JAVA_16", "mixins": [ - "ClientWorldAccessor" + "ClientWorldAccessor", + "MixinDebugScreenOverlay" ], "client": [ ],