From e58b6543beac8f9b22618810bc9992ad78ca1e86 Mon Sep 17 00:00:00 2001 From: PinkGoosik Date: Wed, 4 Dec 2024 14:36:52 +0500 Subject: [PATCH] fix sprinting soul sand particles --- build.gradle | 2 +- gradle.properties | 12 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- src/main/java/visuality/mixin/BlockMixin.java | 15 -------- .../java/visuality/mixin/EntityMixin.java | 37 +++++++++++++++++++ .../visuality/mixin/LivingEntityMixin.java | 2 + .../particle/WaterCircleParticle.java | 2 +- src/main/resources/visuality.mixins.json | 3 +- 8 files changed, 50 insertions(+), 25 deletions(-) create mode 100644 src/main/java/visuality/mixin/EntityMixin.java diff --git a/build.gradle b/build.gradle index 8cb22c6..60c1560 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id "fabric-loom" version "1.8-SNAPSHOT" + id "fabric-loom" version "1.9-SNAPSHOT" } version = project.mod_version diff --git a/gradle.properties b/gradle.properties index 3d8b3c6..ae9a508 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs = -Xmx2G org.gradle.parallel = true # Mod Properties -mod_version = 0.7.8+1.21.3 +mod_version = 0.7.9+1.21.4 maven_group = ru.pinkgoosik archives_base_name = visuality @@ -12,10 +12,10 @@ modrinth_id = rI0hvYcd curseforge_id = 521126 # Dependencies | Check these on https://fabricmc.net/develop -minecraft_version = 1.21.3 -yarn_mappings = 1.21.3+build.2 -fabric_loader = 0.16.8 -fabric_api = 0.107.0+1.21.3 +minecraft_version = 1.21.4 +yarn_mappings = 1.21.4+build.1 +fabric_loader = 0.16.9 +fabric_api = 0.110.5+1.21.4 cloth_config = 16.0.141 -modmenu_version = 12.0.0-beta.1 +modmenu_version = 13.0.0-beta.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 707e499..21d5e09 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/visuality/mixin/BlockMixin.java b/src/main/java/visuality/mixin/BlockMixin.java index a9ff1bc..06defd2 100644 --- a/src/main/java/visuality/mixin/BlockMixin.java +++ b/src/main/java/visuality/mixin/BlockMixin.java @@ -3,7 +3,6 @@ import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; import net.minecraft.item.ItemConvertible; import net.minecraft.registry.tag.BlockTags; import net.minecraft.util.math.BlockPos; @@ -26,20 +25,6 @@ public BlockMixin(Settings settings) { super(settings); } - @Inject(method = "onLandedUpon", at = @At("TAIL")) - void onLandedUpon(World world, BlockState state, BlockPos pos, Entity entity, float fallDistance, CallbackInfo ci) { - if(VisualityMod.config.soulEnabled) { - if(state.isIn(BlockTags.WITHER_SUMMON_BASE_BLOCKS)) { - for(int i = 0; i <= world.random.nextInt(5) + 1; i++) { - double x = entity.getX(); - double y = entity.getY() + 0.1; - double z = entity.getZ(); - ParticleUtils.add(world, VisualityParticles.SOUL, x, y, z); - } - } - } - } - @Inject(method = "randomDisplayTick", at = @At("TAIL")) void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random, CallbackInfo ci) { if(VisualityMod.config.soulEnabled && state.isIn(BlockTags.WITHER_SUMMON_BASE_BLOCKS)) { diff --git a/src/main/java/visuality/mixin/EntityMixin.java b/src/main/java/visuality/mixin/EntityMixin.java new file mode 100644 index 0000000..ae4e73b --- /dev/null +++ b/src/main/java/visuality/mixin/EntityMixin.java @@ -0,0 +1,37 @@ +package visuality.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import visuality.VisualityMod; +import visuality.registry.VisualityParticles; +import visuality.util.ParticleUtils; + +@Mixin(Entity.class) +abstract class EntityMixin { + + @Shadow + public abstract World getWorld(); + + @Inject(method = "spawnSprintingParticles", at = @At("TAIL")) + void spawnSprintingParticles(CallbackInfo ci, @Local BlockState state) { + Entity entity = Entity.class.cast(this); + World world = getWorld(); + + if(world.isClient() && VisualityMod.config.soulEnabled && state.isIn(BlockTags.WITHER_SUMMON_BASE_BLOCKS)) { + if(world.random.nextInt(5) == 0) { + double x = entity.getX(); + double y = entity.getY() + 0.1; + double z = entity.getZ(); + ParticleUtils.add(world, VisualityParticles.SOUL, x, y, z); + } + } + } +} diff --git a/src/main/java/visuality/mixin/LivingEntityMixin.java b/src/main/java/visuality/mixin/LivingEntityMixin.java index 2061cce..76a0338 100644 --- a/src/main/java/visuality/mixin/LivingEntityMixin.java +++ b/src/main/java/visuality/mixin/LivingEntityMixin.java @@ -24,11 +24,13 @@ @Mixin(LivingEntity.class) public abstract class LivingEntityMixin extends Entity { + @Unique LivingEntity self = LivingEntity.class.cast(this); @Shadow public abstract boolean isAlive(); + @Unique int ticksDelay = 0; public LivingEntityMixin(EntityType type, World world) { diff --git a/src/main/java/visuality/particle/WaterCircleParticle.java b/src/main/java/visuality/particle/WaterCircleParticle.java index e4d5da3..5a6f76b 100644 --- a/src/main/java/visuality/particle/WaterCircleParticle.java +++ b/src/main/java/visuality/particle/WaterCircleParticle.java @@ -50,7 +50,7 @@ public void tick() { } @Override - public void buildGeometry(VertexConsumer buffer, Camera camera, float ticks) { + public void render(VertexConsumer buffer, Camera camera, float ticks) { Vec3d vec3 = camera.getPos(); float x = (float) (MathHelper.lerp(ticks, this.prevPosX, this.x) - vec3.getX()); float y = (float) (MathHelper.lerp(ticks, this.prevPosY, this.y) - vec3.getY()); diff --git a/src/main/resources/visuality.mixins.json b/src/main/resources/visuality.mixins.json index 65dcac3..fb90f22 100644 --- a/src/main/resources/visuality.mixins.json +++ b/src/main/resources/visuality.mixins.json @@ -8,7 +8,8 @@ "CreeperEntityMixin", "LivingEntityMixin", "SlimeEntityMixin", - "BlockMixin" + "BlockMixin", + "EntityMixin" ], "injectors": { "defaultRequire": 1