From 75c0e7b77ac6e53a47adc01fc99909a49b7733ab Mon Sep 17 00:00:00 2001 From: johni0702 Date: Sun, 13 Nov 2016 20:03:30 +0100 Subject: [PATCH] Fix particles being visible after world change when jumping in time (fixes #35) --- .../replay/mixin/MixinParticleManager.java | 31 +++++++++++++++++++ .../resources/mixins.replay.replaymod.json | 1 + 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java diff --git a/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java new file mode 100644 index 00000000..ff4dc3d9 --- /dev/null +++ b/src/main/java/com/replaymod/replay/mixin/MixinParticleManager.java @@ -0,0 +1,31 @@ +package com.replaymod.replay.mixin; + +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleManager; +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 java.util.Queue; + +@Mixin(ParticleManager.class) +public abstract class MixinParticleManager { + @Shadow + private Queue queueEntityFX; + + /** + * This method additionally clears the queue of particles to be added when the world is changed. + * Otherwise particles from the previous world might show up in this one if they were spawned after + * the last tick in the previous world. + * + * @param world The new world + * @param ci Callback info + */ + @Inject(method = "clearEffects", at = @At("HEAD")) + public void replayModReplay_clearParticleQueue(World world, CallbackInfo ci) { + queueEntityFX.clear(); + } +} diff --git a/src/main/resources/mixins.replay.replaymod.json b/src/main/resources/mixins.replay.replaymod.json index 94ef40e6..398a9331 100644 --- a/src/main/resources/mixins.replay.replaymod.json +++ b/src/main/resources/mixins.replay.replaymod.json @@ -3,6 +3,7 @@ "package": "com.replaymod.replay.mixin", "mixins": [ "MixinGuiSpectator", + "MixinParticleManager", "MixinPlayerControllerMP", "MixinRenderArmorStand", "MixinRenderArrow",