Compare commits

..

17 Commits

Author SHA1 Message Date
Liz Graham
4e1a122289 add cave dust particle
calculate position inside blocks
changed menu
changed modid to cavedust
change some default values
fix bug where user got softlocked in the particle cycle in multiplayer
2024-05-17 02:30:53 +01:00
Liz Graham
39cf0a0703 update to 1.20.4
loader to 1.15.5
loom to 1.5
gradle to 8.5
2024-01-17 14:48:06 +00:00
Liz Graham
4f3e80bac4 update to 1.20.2 2023-12-04 18:41:42 +00:00
Liz Graham
12016db5f2 Update README.md 2023-06-21 02:48:46 +01:00
Liz Graham
e6b4636119 update to 1.20 2023-06-21 02:47:36 +01:00
Liz Graham
10a4c88d9b Update gradle.properties 2023-05-23 19:06:12 +01:00
Liz Graham
2bc02401b0 Update fabric.mod.json 2023-05-23 19:00:31 +01:00
Liz Graham
a071eba485 Update build-release.yml 2023-05-22 03:58:09 +01:00
Liz Graham
0dde5fa1eb Bump to 1.4.0
Also lock version to 1.19.4
2023-05-22 03:29:26 +01:00
Liz Graham
f00d0171ae Improve error handling for incompatible particles 2023-05-22 03:28:49 +01:00
Liz Graham
93a18d622b Fix bugs and fix #4
Particles can no longer spawn under the world.
Particles no longer spawn in blocks, instead spawning in air.
Fixed bug present since 1.2.0, which meant particle amount was dependant on blocks around player.
New particle multiplier allowing greater control of particle amount.
New F3 screen text, allows user to debug particle amount.
Removed upper and lower limit buttons.
2023-05-22 03:26:34 +01:00
Liz Graham
cfe0ec666f UI update 2023-05-22 03:26:34 +01:00
Liz Graham
1b20ee94c4 Update build-release.yml 2023-05-21 23:26:55 +01:00
Liz Graham
f0fdd69260 Bump to 1.3.0 2023-05-21 07:47:21 +01:00
Liz Graham
6197a489b3 Update README.md 2023-05-21 07:44:36 +01:00
Liz Graham
2fb8ba966a set default id to white ash's id 2023-05-21 07:30:15 +01:00
Liz Graham
6a5d68cc84 update to 1.19.4 2023-05-21 07:27:43 +01:00
20 changed files with 197 additions and 108 deletions

View File

@@ -40,5 +40,3 @@ jobs:
curseforge-id: 594750
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'fabric-loom' version '1.5-SNAPSHOT'
id 'maven-publish'
}

View File

@@ -3,17 +3,17 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.19.3
yarn_mappings=1.19.3+build.5
loader_version=0.14.13
minecraft_version=1.20.4
yarn_mappings=1.20.4+build.3
loader_version=0.15.5
# Mod Properties
mod_version = 1.4.0
mod_version=1.4.1
maven_group=com.lizistired
archives_base_name=cave_dust
# Dependencies
fabric_version=0.72.0+1.19.3
clothconfig_version =9.0.94
modmenu_version =5.1.0-beta.3
kirin_version=1.13.2
fabric_version=0.94.0+1.20.4
clothconfig_version=13.0.121
modmenu_version=9.0.0
kirin_version=1.17.0+1.20.4

Binary file not shown.

View File

@@ -1,5 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

25
gradlew vendored
View File

@@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +80,10 @@ do
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -143,12 +140,16 @@ fi
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -193,6 +194,10 @@ if "$cygwin" || "$msys" ; then
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
@@ -205,6 +210,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.

11
gradlew.bat vendored
View File

@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal

View File

@@ -1,9 +1,8 @@
package net.lizistired.cavedust;
//minecraft imports
import net.minecraft.block.Blocks;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.minecraft.client.MinecraftClient;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
@@ -40,10 +39,12 @@ public class CaveDust implements ClientModInitializer {
return config;
}
public static int WHITE_ASH_ID = Registries.PARTICLE_TYPE.getRawId(ParticleTypes.WHITE_ASH);
public static int WHITE_ASH_ID = Registries.PARTICLE_TYPE.getRawId(CaveDustServer.CAVE_DUST);
public static int PARTICLE_AMOUNT = 0;
@Override
public void onInitializeClient() {
//config path and loading
@@ -51,6 +52,7 @@ public class CaveDust implements ClientModInitializer {
config = new CaveDustConfig(CaveDustFolder.getParent().resolve("cavedust.json"), this);
config.load();
registerKeyBindings();
ParticleFactoryRegistry.getInstance().register(CaveDustServer.CAVE_DUST, CaveDustParticleFactory.Factory::new);
//register end client tick to create cave dust function, using end client tick for async
ClientTickEvents.END_CLIENT_TICK.register(this::createCaveDust);
@@ -78,20 +80,23 @@ public class CaveDust implements ClientModInitializer {
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());
int x = (int) (client.player.getPos().getX() + (int) generateRandomDouble(config.getDimensionWidth() *-1, config.getDimensionWidth()));
int y = (int) (client.player.getEyePos().getY() + (int) generateRandomDouble(config.getDimensionHeight() *-1, config.getDimensionHeight()));
int z = (int) (client.player.getPos().getZ() + (int) generateRandomDouble(config.getDimensionWidth() *-1, config.getDimensionWidth()));
double miniX = (x + Math.random());
double miniY = (y + Math.random());
double miniZ = (z + Math.random());
BlockPos particlePos = new BlockPos(x, y, z);
if (shouldParticlesSpawn(client, config, particlePos)) {
if (client.world.getBlockState(particlePos).isAir()) {
world.addParticle(config.getParticle(), x, y, z, config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom());
world.addParticle(config.getParticle(), miniX, miniY, miniZ, config.getVelocityRandomnessRandom() * 0.01, config.getVelocityRandomnessRandom() * 0.01, config.getVelocityRandomnessRandom() * 0.01);
}
}
}
catch (NullPointerException e) {
LOGGER.error(String.valueOf(e));
getConfig().setParticleID(WHITE_ASH_ID);
//getConfig().setParticleID(WHITE_ASH_ID);
}
}
}

View File

@@ -16,10 +16,9 @@ public class CaveDustConfig extends JsonFile {
private transient final net.lizistired.cavedust.CaveDust CaveDust;
private int dimensionX = 5;
private int dimensionY = 5;
private int dimensionZ = 5;
private int velocityRandomness = 1;
private int width = 10;
private int height = 10;
private int velocityRandomness = 0;
private boolean caveDustEnabled = true;
private boolean seaLevelCheck = true;
@@ -37,40 +36,28 @@ public class CaveDustConfig extends JsonFile {
this.CaveDust = caveDust;
}
public float setDimensionsX(float size){
if (this.dimensionX != size) {
this.dimensionX = (int)size;
public float setDimensionWidth(float size){
if (this.width != size) {
this.width = (int)size;
save();
}
return getDimensionsX();
return getDimensionWidth();
}
public float setDimensionsY(float size){
if (this.dimensionY != size) {
this.dimensionY = (int)size;
public float setDimensionHeight(float size){
if (this.height != size) {
this.height = (int)size;
save();
}
return getDimensionsY();
return getDimensionHeight();
}
public float setDimensionsZ(float size){
if (this.dimensionZ != size) {
this.dimensionZ = (int)size;
save();
}
return getDimensionsZ();
public float getDimensionWidth(){
return width;
}
public float getDimensionsX(){
return dimensionX;
}
public float getDimensionsY(){
return dimensionY;
}
public float getDimensionsZ(){
return dimensionZ;
public float getDimensionHeight(){
return height;
}
public float setUpperLimit(float upperLimit){
@@ -145,10 +132,11 @@ public class CaveDustConfig extends JsonFile {
try {
return (ParticleEffect) Registries.PARTICLE_TYPE.get(new Identifier(Registries.PARTICLE_TYPE.getEntry(getParticleID()).get().getKey().get().getValue().toString().toLowerCase()));
} catch (ClassCastException e) {
MinecraftClient.getInstance().player.sendMessage(Text.literal("Issue loading particle, defaulting to white ash particle!"), false);
setParticleID(WHITE_ASH_ID);
MinecraftClient.getInstance().player.sendMessage(Text.translatable("debug.cavedust.particleerror"), true);
LOGGER.error("Cannot spawn particle, check config.");
iterateParticle();
save();
return ParticleTypes.WHITE_ASH;
return getParticle();
}
}
@@ -210,15 +198,15 @@ public class CaveDustConfig extends JsonFile {
}
public void resetConfig(){
dimensionX = 5;
dimensionY = 5;
dimensionZ = 5;
width = 10;
height = 10;
upperLimit = 64;
lowerLimit = -64;
particleMultiplier = 1;
particleMultiplierMultiplier = 10;
velocityRandomness = 0;
seaLevelCheck = true;
caveDustEnabled = true;

View File

@@ -0,0 +1,54 @@
package net.lizistired.cavedust;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.particle.*;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.particle.DefaultParticleType;
public class CaveDustParticleFactory extends SpriteBillboardParticle {
private final SpriteProvider spriteProvider;
CaveDustParticleFactory(ClientWorld clientWorld, double x, double y, double z, double velocityX, double velocityY, double velocityZ, SpriteProvider spriteProvider) {
super(clientWorld, x, y, z);
this.spriteProvider = spriteProvider; //Sets the sprite provider from above to the sprite provider in the constructor method
this.maxAge = 200; //20 ticks = 1 second
this.scale = 0.1f;
this.velocityX = velocityX; //The velX from the constructor parameters
this.velocityY = -0.007f; //Allows the particle to slowly fall
this.velocityZ = velocityZ;
this.x = x; //The x from the constructor parameters
this.y = y;
this.z = z;
this.collidesWithWorld = true;
this.alpha = 1.0f; //Setting the alpha to 1.0f means there will be no opacity change until the alpha value is changed
this.setSpriteForAge(spriteProvider); //Required
}
@Override
public void tick() {
super.tick();
if(this.alpha < 0.0f){
this.markDead();
}
this.alpha -= 0.005f;
}
@Override
public ParticleTextureSheet getType() {
return ParticleTextureSheet.PARTICLE_SHEET_TRANSLUCENT;
}
@Environment(EnvType.CLIENT)
public static class Factory implements ParticleFactory<DefaultParticleType> {
private final SpriteProvider spriteProvider;
public Factory(SpriteProvider spriteProvider) {
this.spriteProvider = spriteProvider;
}
public Particle createParticle(DefaultParticleType type, ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ) {
return new CaveDustParticleFactory(world, x, y, z, velocityX, velocityY, velocityZ, this.spriteProvider);
}
}
}

View File

@@ -0,0 +1,19 @@
package net.lizistired.cavedust;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes;
import net.minecraft.particle.DefaultParticleType;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;
public class CaveDustServer implements ModInitializer {
public static final DefaultParticleType CAVE_DUST = FabricParticleTypes.simple();
/**
* Runs the mod initializer.
*/
@Override
public void onInitialize() {
Registry.register(Registries.PARTICLE_TYPE, new Identifier("cavedust", "cave_dust"), CAVE_DUST);
}
}

View File

@@ -3,13 +3,14 @@ package net.lizistired.cavedust;
import com.minelittlepony.common.client.gui.GameGui;
import com.minelittlepony.common.client.gui.element.*;
import net.lizistired.cavedust.utils.TranslatableTextHelper;
import net.minecraft.client.gui.DrawContext;
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;
import java.util.NoSuchElementException;
public class ModMenuConfigScreen extends GameGui {
public ModMenuConfigScreen(@Nullable Screen parent) {
super(Text.translatable("menu.cavedust.title"), parent);
@@ -72,20 +73,15 @@ public class ModMenuConfigScreen extends GameGui {
})).getStyle().setText("Particle: " + (getNameOfParticle()))
.setTooltip(Text.translatable("menu.cavedust.particle.tooltip"));
addButton(new Slider(left += 220, row -= 96, 1, 50, config.getDimensionsX()))
.onChange(config::setDimensionsX)
.setTextFormat(transText::formatMaxX)
.getStyle().setTooltip(Text.translatable("menu.cavedust.X.tooltip"));
addButton(new Slider(left += 220, row -= 96, 1, 50, config.getDimensionWidth()))
.onChange(config::setDimensionWidth)
.setTextFormat(transText::formatMaxWidth)
.getStyle().setTooltip(Text.translatable("menu.cavedust.width.tooltip"));
addButton(new Slider(left, row += 24, 1, 50, config.getDimensionsY()))
.onChange(config::setDimensionsY)
.setTextFormat(transText::formatMaxY)
.getStyle().setTooltip(Text.translatable("menu.cavedust.Y.tooltip"));
addButton(new Slider(left, row += 24, 1, 50, config.getDimensionsZ()))
.onChange(config::setDimensionsZ)
.setTextFormat(transText::formatMaxZ)
.getStyle().setTooltip(Text.translatable("menu.cavedust.Z.tooltip"));
addButton(new Slider(left, row += 24, 1, 50, config.getDimensionHeight()))
.onChange(config::setDimensionHeight)
.setTextFormat(transText::formatMaxHeight)
.getStyle().setTooltip(Text.translatable("menu.cavedust.height.tooltip"));
addButton(new Slider(left, row += 24, 0, 10, config.getVelocityRandomness()))
.onChange(config::setVelocityRandomness)
@@ -93,9 +89,10 @@ public class ModMenuConfigScreen extends GameGui {
.getStyle().setTooltip(Text.translatable("menu.cavedust.velocityrandomness.tooltip"));
addButton(new Button(left -= 110, row += 60).onClick(sender -> {
addButton(new Button(left -= 110, row += 120).onClick(sender -> {
config.resetConfig();
finish();
client.setScreen(new ModMenuConfigScreen(parent));
})).getStyle().setText(Text.translatable("menu.cavedust.reset")).setTooltip(Text.translatable("menu.cavedust.reset.tooltip"));
addButton(new Button(left, row += 24)
@@ -106,13 +103,17 @@ public class ModMenuConfigScreen extends GameGui {
@Override
public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) {
renderBackground(matrices);
super.render(matrices, mouseX, mouseY, partialTicks);
public void render(DrawContext context, int mouseX, int mouseY, float partialTicks) {
renderBackground(context, mouseX, mouseY, partialTicks);
super.render(context, mouseX, mouseY, partialTicks);
}
private String getNameOfParticle(){
CaveDustConfig config = CaveDust.getInstance().getConfig();
config.load();
try {
return Registries.PARTICLE_TYPE.getEntry(config.getParticleID()).get().getKey().get().getValue().toString();
} catch (NoSuchElementException e){
return "null";
}
}
}

View File

@@ -14,7 +14,7 @@ import static net.lizistired.cavedust.utils.ParticleSpawnUtil.shouldParticlesSpa
@Mixin(DebugHud.class)
public abstract class MixinDebugScreenOverlay {
@Inject(method = "getRightText", at = @At("RETURN"))
private void appendShaderPackText(CallbackInfoReturnable<List<String>> cir) {
private void appendDebugText(CallbackInfoReturnable<List<String>> cir) {
List<String> messages = cir.getReturnValue();
messages.add("");

View File

@@ -35,6 +35,10 @@ public class MathHelper {
* @return Random number (double)
*/
public static double generateRandomDouble(double min, double max) {
try {
return ThreadLocalRandom.current().nextDouble(min, max);
} catch (IllegalArgumentException e) {
return 0;
}
}
}

View File

@@ -14,6 +14,7 @@ public class ParticleSpawnUtil {
private static float timer;
public static boolean shouldParticlesSpawn;
/**
* Returns true if particles should spawn.
* @param client MinecraftClient
@@ -67,6 +68,7 @@ public class ParticleSpawnUtil {
|| client.world == null
|| !client.world.getDimension().bedWorks()
|| (client.world.getBottomY() > pos.getY())
//|| client.world.getBiome(Objects.requireNonNull(pos)).matchesKey(LUSH_CAVES))
|| client.world.getBiome(Objects.requireNonNull(pos)).matchesKey(LUSH_CAVES))
{

View File

@@ -6,14 +6,11 @@ import net.minecraft.text.Text;
import javax.swing.*;
public class TranslatableTextHelper {
public Text formatMaxX(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.X", (int)Math.floor(slider.getValue()));
public Text formatMaxWidth(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.width", (int)Math.floor(slider.getValue()));
}
public Text formatMaxY(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.Y", (int)Math.floor(slider.getValue()));
}
public Text formatMaxZ(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.Z", (int)Math.floor(slider.getValue()));
public Text formatMaxHeight(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.height", (int)Math.floor(slider.getValue()));
}
public Text formatUpperLimit(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.upperlimit", (int)Math.floor(slider.getValue()));

View File

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

@@ -4,12 +4,10 @@
"menu.cavedust.global.true": "Cave Dust: Enabled",
"menu.cavedust.global.tooltip.false": "Enable cave dust particles?",
"menu.cavedust.global.tooltip.true": "Disable cave dust particles?",
"menu.cavedust.X": "X bounds: %s",
"menu.cavedust.Y": "Y bounds: %s",
"menu.cavedust.Z": "Z bounds: %s",
"menu.cavedust.X.tooltip": "X axis bounds for particle spawning.",
"menu.cavedust.Y.tooltip": "Y axis bounds for particle spawning.",
"menu.cavedust.Z.tooltip": "Z axis bounds for particle spawning.",
"menu.cavedust.width": "Width bounds: %s",
"menu.cavedust.height": "Height bounds: %s",
"menu.cavedust.width.tooltip": "Maximum width to spawn particle.",
"menu.cavedust.height.tooltip": "Maximum height to spawn particle.",
"menu.cavedust.upperlimit": "Upper limit height: %s",
"menu.cavedust.lowerlimit": "Lower limit height: %s",
"menu.cavedust.upperlimit.tooltip": "The height where particles will fade out and stop spawning (uses player y).",
@@ -37,6 +35,7 @@
"debug.cavedust.toggle.true": "(Cave Dust) Enabled particles",
"debug.cavedust.toggle.false": "(Cave Dust) Disabled particles",
"debug.cavedust.reload": "(Cave Dust) Reloaded config"
"debug.cavedust.reload": "(Cave Dust) Reloaded config",
"debug.cavedust.particleerror": "(Cave Dust) Error setting particle, skipping to next particle!"
}

View File

@@ -0,0 +1,5 @@
{
"textures": [
"minecraft:generic_0"
]
}

View File

@@ -12,12 +12,14 @@
"sources": "https://github.com/LizIsTired/dust"
},
"license": "MPL-2.0",
"icon": "assets/modid/icon.png",
"icon": "assets/cavedust/icon.png",
"environment": "*",
"entrypoints": {
"client": [
"net.lizistired.cavedust.CaveDust"
],
"main": [
"net.lizistired.cavedust.CaveDustServer"],
"modmenu": [
"net.lizistired.cavedust.CaveDustModMenuFactory"
]
@@ -28,7 +30,7 @@
"depends": {
"fabricloader": ">=0.14.5",
"fabric": "*",
"minecraft": ">=1.19-beta.5",
"minecraft": "1.20.4",
"java": ">=17"
},
"suggests": {