From f10a8867639fd29cbc3653b8dc0e5170c554c1bf Mon Sep 17 00:00:00 2001 From: 2No2Name <2no2name@web.de> Date: Thu, 6 Jun 2024 13:45:56 +0200 Subject: [PATCH] Skip sprinting particle creation server side --- build.gradle | 2 +- lithium-mixin-config.md | 4 +++ .../sprinting_particles/EntityMixin.java | 26 +++++++++++++++++++ .../sprinting_particles/package-info.java | 4 +++ src/main/resources/lithium.mixins.json | 1 + 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/EntityMixin.java create mode 100644 src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/package-info.java diff --git a/build.gradle b/build.gradle index 20b19fe67..ce7ebe361 100644 --- a/build.gradle +++ b/build.gradle @@ -99,7 +99,7 @@ dependencies { mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation 'com.github.2No2Name:McTester:v0.3.3' +// modImplementation 'com.github.2No2Name:McTester:v0.3.3' Set fabricApiModulesCompileOnly = [ "fabric-transfer-api-v1" diff --git a/lithium-mixin-config.md b/lithium-mixin-config.md index 3e3e4aa1b..395476dd7 100644 --- a/lithium-mixin-config.md +++ b/lithium-mixin-config.md @@ -332,6 +332,10 @@ Accesses entities of the correct type directly instead of accessing all nearby e (default: `true`) Skips repeated checks whether the equipment of an entity changed. Instead equipment updates are detected +### `mixin.entity.sprinting_particles` +(default: `true`) +Skips trying to create sprinting particles for all entities on the server side. + ### `mixin.experimental` (default: `false`) Various experimental optimizations diff --git a/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/EntityMixin.java b/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/EntityMixin.java new file mode 100644 index 000000000..a171d534c --- /dev/null +++ b/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/EntityMixin.java @@ -0,0 +1,26 @@ +package me.jellysquid.mods.lithium.mixin.entity.sprinting_particles; + +import net.minecraft.entity.Entity; +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.Redirect; + +@Mixin(Entity.class) +public abstract class EntityMixin { + + @Shadow + public abstract World getWorld(); + + @Redirect( + method = "baseTick", + at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;shouldSpawnSprintingParticles()Z") + ) + private boolean skipParticlesOnServerSide(Entity instance) { + if (instance.getWorld().isClient()) { + return instance.shouldSpawnSprintingParticles(); + } + return false; + } +} diff --git a/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/package-info.java b/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/package-info.java new file mode 100644 index 000000000..441091b0b --- /dev/null +++ b/src/main/java/me/jellysquid/mods/lithium/mixin/entity/sprinting_particles/package-info.java @@ -0,0 +1,4 @@ +@MixinConfigOption(description = "Skips trying to create sprinting particles for all entities on the server side.") +package me.jellysquid.mods.lithium.mixin.entity.sprinting_particles; + +import net.caffeinemc.gradle.MixinConfigOption; \ No newline at end of file diff --git a/src/main/resources/lithium.mixins.json b/src/main/resources/lithium.mixins.json index d60419fee..75d211835 100644 --- a/src/main/resources/lithium.mixins.json +++ b/src/main/resources/lithium.mixins.json @@ -141,6 +141,7 @@ "entity.skip_equipment_change_check.ArmorStandEntityMixin", "entity.skip_equipment_change_check.LivingEntityMixin", "entity.skip_equipment_change_check.MobEntityMixin", + "entity.sprinting_particles.EntityMixin", "experimental.chunk_tickets.ChunkTicketManagerMixin", "experimental.entity.block_caching.EntityMixin", "experimental.entity.block_caching.block_support.EntityMixin",