diff --git a/src/main/java/io/github/protonmc/proton/mixin/client/PlayerAdvancementTrackerMixin.java b/src/main/java/io/github/protonmc/proton/mixin/client/PlayerAdvancementTrackerMixin.java new file mode 100644 index 0000000..1d4bfd0 --- /dev/null +++ b/src/main/java/io/github/protonmc/proton/mixin/client/PlayerAdvancementTrackerMixin.java @@ -0,0 +1,37 @@ +package io.github.protonmc.proton.mixin.client; + +import io.github.protonmc.proton.Proton; +import io.github.protonmc.proton.base.annotation.FromModule; +import io.github.protonmc.proton.base.module.ModuleManager; +import io.github.protonmc.proton.module.client.AdvancementScreenshot; +import net.minecraft.advancement.Advancement; +import net.minecraft.advancement.PlayerAdvancementTracker; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.util.ScreenshotUtils; +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.CallbackInfoReturnable; + +@Mixin(PlayerAdvancementTracker.class) +public abstract class PlayerAdvancementTrackerMixin { + @Inject(method = "grantCriterion(Lnet/minecraft/advancement/Advancement;Ljava/lang/String;)Z", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/advancement/PlayerAdvancementTracker;updateDisplay(Lnet/minecraft/advancement/Advancement;)V", + shift = At.Shift.AFTER)) + @FromModule(AdvancementScreenshot.class) + private void screenshot(Advancement advancement, String criterionName, CallbackInfoReturnable cir) { + if (ModuleManager.getInstance().isModuleEnabled(AdvancementScreenshot.class)) { + MinecraftClient client = MinecraftClient.getInstance(); + ScreenshotUtils.saveScreenshot( + client.runDirectory, + client.getWindow().getFramebufferWidth(), + client.getWindow().getFramebufferHeight(), + client.getFramebuffer(), + text -> { + } + ); + Proton.LOGGER.debug("Screenshot taken"); + } + } +} diff --git a/src/main/java/io/github/protonmc/proton/module/client/AdvancementScreenshot.java b/src/main/java/io/github/protonmc/proton/module/client/AdvancementScreenshot.java new file mode 100644 index 0000000..19c42d8 --- /dev/null +++ b/src/main/java/io/github/protonmc/proton/module/client/AdvancementScreenshot.java @@ -0,0 +1,13 @@ +package io.github.protonmc.proton.module.client; + +import io.github.protonmc.proton.Proton; +import io.github.protonmc.proton.base.module.ProtonModule; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +@Environment(EnvType.CLIENT) +public class AdvancementScreenshot extends ProtonModule { + public AdvancementScreenshot() { + super(Proton.identifier("advancement_screenshot")); + } +} diff --git a/src/main/resources/proton.mixins.json b/src/main/resources/proton.mixins.json index 9f0fe93..fc541b7 100644 --- a/src/main/resources/proton.mixins.json +++ b/src/main/resources/proton.mixins.json @@ -19,6 +19,8 @@ "client.entities.ChickenRendererMixin", "client.entities.CowRendererMixin", "client.entities.LivingEntityRendererMixin", + "client.entities.PigRendererMixin", + "client.PlayerAdvancementTrackerMixin" "client.entities.LlamaRendererMixin", "client.entities.PigRendererMixin", "client.entities.RabbitRendererMixin"