From de082c323018c51ff35350477743410e535c741e Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Tue, 11 Aug 2015 20:01:45 +0200 Subject: [PATCH] Uses Mixin Magic to add BlockBreakAnimation Packets to the Replay when a Player breaks a block --- .../replaymod/mixin/MixinRenderGlobal.java | 26 +++++++++++++++++++ src/main/resources/mixins.replaymod.json | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/main/java/eu/crushedpixel/replaymod/mixin/MixinRenderGlobal.java diff --git a/src/main/java/eu/crushedpixel/replaymod/mixin/MixinRenderGlobal.java b/src/main/java/eu/crushedpixel/replaymod/mixin/MixinRenderGlobal.java new file mode 100644 index 00000000..f76d4aef --- /dev/null +++ b/src/main/java/eu/crushedpixel/replaymod/mixin/MixinRenderGlobal.java @@ -0,0 +1,26 @@ +package eu.crushedpixel.replaymod.mixin; + +import eu.crushedpixel.replaymod.recording.ConnectionEventHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderGlobal; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.play.server.S25PacketBlockBreakAnim; +import net.minecraft.util.BlockPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(RenderGlobal.class) +public abstract class MixinRenderGlobal { + @Inject(method = "sendBlockBreakProgress", at = @At("HEAD")) + public void saveBlockBreakProgressPacket(int breakerId, BlockPos pos, int progress, CallbackInfo info) { + if(ConnectionEventHandler.isRecording()) { + EntityPlayer thePlayer = Minecraft.getMinecraft().thePlayer; + if(thePlayer != null && breakerId == thePlayer.getEntityId()) { + ConnectionEventHandler.insertPacket(new S25PacketBlockBreakAnim(breakerId, pos, progress)); + } + } + } + +} diff --git a/src/main/resources/mixins.replaymod.json b/src/main/resources/mixins.replaymod.json index 14693aa8..d89e68e8 100644 --- a/src/main/resources/mixins.replaymod.json +++ b/src/main/resources/mixins.replaymod.json @@ -8,7 +8,8 @@ "MixinRender", "MixinRendererLivingEntity", "MixinRenderItem", - "MixinRenderManager" + "MixinRenderManager", + "MixinRenderGlobal" ], "server": [], "client": [],