diff --git a/src/main/java/net/lizistired/cavedust/CaveDust.java b/src/main/java/net/lizistired/cavedust/CaveDust.java index 25a87af..ddb7114 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDust.java +++ b/src/main/java/net/lizistired/cavedust/CaveDust.java @@ -72,9 +72,9 @@ public class CaveDust implements ClientModInitializer { for (int i = 0; i < probabilityNormalized * config.getParticleMultiplier() * 10; i++) { try { - double x = client.player.getPos().getX() + generateRandomDouble(-config.getDimensionsX(), config.getDimensionsX()); - double y = client.player.getPos().getY() + generateRandomDouble(-config.getDimensionsY(), config.getDimensionsY()); - double z = client.player.getPos().getZ() + generateRandomDouble(-config.getDimensionsZ(), config.getDimensionsZ()); + 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;} diff --git a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java index 4e197af..f2907ef 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java +++ b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java @@ -14,62 +14,59 @@ public class CaveDustConfig extends JsonFile { private transient final net.lizistired.cavedust.CaveDust CaveDust; - private int dimensionMaxX = 5; - private int dimensionMaxY = 5; - private int dimensionMaxZ = 5; - private int dimensionMinX = -5; - private int dimensionMinY = -5; - private int dimensionMinZ = -5; + private int dimensionX = 5; + private int dimensionY = 5; + private int dimensionZ = 5; private int velocityRandomness = 1; private boolean caveDustEnabled = true; - private String particleName = "white_ash"; private boolean seaLevelCheck = true; private boolean superFlatStatus = false; - //private boolean enhancedDetection = true; private float upperLimit = 64; private float lowerLimit = -64; private int particleMultiplier = 1; + private int particleID = 79; + public CaveDustConfig(Path file, net.lizistired.cavedust.CaveDust caveDust) { super(file); this.CaveDust = caveDust; } public float setDimensionsX(float size){ - if (this.dimensionMinX != size) { - this.dimensionMinX = (int)size; + if (this.dimensionX != size) { + this.dimensionX = (int)size; save(); } return getDimensionsX(); } public float setDimensionsY(float size){ - if (this.dimensionMinY != size) { - this.dimensionMinY = (int)size; + if (this.dimensionY != size) { + this.dimensionY = (int)size; save(); } return getDimensionsY(); } public float setDimensionsZ(float size){ - if (this.dimensionMinZ != size) { - this.dimensionMinZ = (int)size; + if (this.dimensionZ != size) { + this.dimensionZ = (int)size; save(); } return getDimensionsZ(); } public float getDimensionsX(){ - return dimensionMinX; + return dimensionX; } public float getDimensionsY(){ - return dimensionMinY; + return dimensionY; } public float getDimensionsZ(){ - return dimensionMinZ; + return dimensionZ; } public float setUpperLimit(float upperLimit){ @@ -125,20 +122,13 @@ public class CaveDustConfig extends JsonFile { } public ParticleEffect setParticle(String particleType){ - particleName = particleType; + //particleName = particleType; save(); return getParticle(); } public ParticleEffect getParticle(){ - try { - return (ParticleEffect) Registries.PARTICLE_TYPE.get(new Identifier(particleName.toLowerCase())); - } catch (ClassCastException e) { - LOGGER.error(e + "\nThere was an error loading the specified particle from the config, make sure a valid particle name is specified. Falling back to \"minecraft:white_ash\"."); - particleName = "minecraft:white_ash"; - save(); - return ParticleTypes.WHITE_ASH; - } + return (ParticleEffect) Registries.PARTICLE_TYPE.get(new Identifier(Registries.PARTICLE_TYPE.getEntry(getParticleID()).get().getKey().get().getValue().toString().toLowerCase())); } public boolean getSeaLevelCheck() { @@ -176,24 +166,24 @@ public class CaveDustConfig extends JsonFile { return getSuperFlatStatus(); } - /*public boolean getEnhancedDetection(){ - return enhancedDetection; + public void iterateParticle(){ + if(getParticleID() > Registries.PARTICLE_TYPE.size() - 2) { + particleID = 1; + save(); + } else { + particleID = getParticleID() + 1; + save(); + } } - public boolean setEnhancedDetection(){ - enhancedDetection = !enhancedDetection; - save(); - return getEnhancedDetection(); - }*/ + public int getParticleID(){ + return particleID; + } public void resetConfig(){ - dimensionMinX = -5; - dimensionMinY = -5; - dimensionMinZ = -5; - - dimensionMaxX = 5; - dimensionMaxY = 5; - dimensionMaxZ = 5; + dimensionX = 5; + dimensionY = 5; + dimensionZ = 5; upperLimit = 64; lowerLimit = -64; @@ -202,7 +192,7 @@ public class CaveDustConfig extends JsonFile { seaLevelCheck = true; caveDustEnabled = true; - particleName = "minecraft:white_ash"; + particleID = 79; save(); } } diff --git a/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java b/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java index ed2abe6..65ebca0 100644 --- a/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java +++ b/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java @@ -5,6 +5,8 @@ import com.minelittlepony.common.client.gui.element.*; import net.lizistired.cavedust.utils.TranslatableTextHelper; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.registry.Registries; import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; @@ -79,6 +81,12 @@ public class ModMenuConfigScreen extends GameGui { .setTextFormat(transText::formatVelocityRandomness) .getStyle().setTooltip(Text.translatable("menu.cavedust.velocityrandomness.tooltip")); + addButton(new Button(left, row += 24).onClick(sender ->{ + config.iterateParticle(); + sender.getStyle().setText("Particle: " + (getNameOfParticle())); + })).getStyle().setText("Particle: " + (getNameOfParticle())) + .setTooltip(Text.translatable("menu.cavedust.particle.tooltip")); + addButton(new Button(left, row += 24).onClick(sender -> { config.resetConfig(); finish(); @@ -96,4 +104,9 @@ public class ModMenuConfigScreen extends GameGui { renderBackground(matrices); super.render(matrices, mouseX, mouseY, partialTicks); } + private String getNameOfParticle(){ + CaveDustConfig config = CaveDust.getInstance().getConfig(); + config.load(); + return Registries.PARTICLE_TYPE.getEntry(config.getParticleID()).get().getKey().get().getValue().toString(); + } } diff --git a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java index 04201ec..0b8d814 100644 --- a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java +++ b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java @@ -3,6 +3,8 @@ package net.lizistired.cavedust.utils; import com.minelittlepony.common.client.gui.element.AbstractSlider; import net.minecraft.text.Text; +import javax.swing.*; + public class TranslatableTextHelper { public Text formatMaxX(AbstractSlider slider) { return Text.translatable("menu.cavedust.X", (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 cdae81c..2f70b48 100644 --- a/src/main/resources/assets/modid/lang/en_us.json +++ b/src/main/resources/assets/modid/lang/en_us.json @@ -26,6 +26,8 @@ "menu.cavedust.superflatstatus.true": "Superflat particles: Enabled", "menu.cavedust.superflatstatus.false": "Superflat particles: Disabled", "menu.cavedust.superflatstatus.tooltip": "Should particles spawn on superflat worlds?", + "menu.cavedust.particle": "Particle: ", + "menu.cavedust.particle.tooltip": "Particle to spawn. Click to cycle.", "key.cavedust.reload": "Reload Config", "key.cavedust.toggle": "Toggle Particles",