Skip to content

Commit

Permalink
Add Campfire Backport compatibility to animation speedup
Browse files Browse the repository at this point in the history
Fixes Angelica's equivalent of GTNewHorizons/Hodgepodge#204
Fixes embers and NEI mixed flames not animating
  • Loading branch information
makamys committed Jan 21, 2024
1 parent 5b705d2 commit aeb0f81
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,11 @@ public enum Mixins {
"angelica.animation.MixinRenderBlockFluid",
"angelica.animation.MixinWorldRenderer",
"angelica.animation.MixinRenderItem")),

SPEEDUP_CAMPFIRE_BACKPORT_ANIMATIONS(new Builder("Add animation speedup support to Campfire Backport").setPhase(Phase.LATE)
.addTargetedMod(TargetedMod.CAMPFIRE_BACKPORT).setSide(Side.CLIENT)
.setApplyIf(() -> AngelicaConfig.speedupAnimations)
.addMixinClasses("client.campfirebackport.MixinRenderBlockCampfire")),

IC2_FLUID_RENDER_FIX(new Builder("IC2 Fluid Render Fix").setPhase(Phase.EARLY).setSide(Side.CLIENT)
.addTargetedMod(TargetedMod.IC2).setApplyIf(() -> AngelicaConfig.speedupAnimations)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public enum TargetedMod {
, FASTCRAFT("FastCraft", "fastcraft.Tweaker")
, OPTIFINE("Optifine", "optifine.OptiFineForgeTweaker", "Optifine")
, BOTANIA("Botania", null, "Botania")
, CAMPFIRE_BACKPORT("CampfireBackport", null, "campfirebackport")
, CHICKENCHUNKS("ChickenChunks", null, "ChickenChunks")
, COFHCORE("CoFHCore", "cofh.asm.LoadingPlugin", "CoFHCore")
, DYNAMIC_SURROUNDINGS_MIST("Dynamic Surroundings", "org.blockartistry.mod.DynSurround.mixinplugin.DynamicSurroundingsEarlyMixins", "dsurround")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.gtnewhorizons.angelica.mixins.late.client.campfirebackport;

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.ModifyArgs;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;

import com.gtnewhorizons.angelica.mixins.interfaces.ITexturesCache;
import com.gtnewhorizons.angelica.utils.AnimationsRenderUtils;

import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.util.IIcon;

@Mixin(targets = "connor135246.campfirebackport.client.rendering.RenderBlockCampfire")
public class MixinRenderBlockCampfire {
@Inject(method = "renderFace", at = @At("HEAD"))
private static void angelica$beforeRenderFace(double x, double y, double z, Block block, RenderBlocks renderer, IIcon icon, int side, CallbackInfo ci) {
AnimationsRenderUtils.markBlockTextureForUpdate(icon, renderer.blockAccess);
((ITexturesCache)renderer).getRenderedTextures().add(icon);
}

@ModifyArgs(method = "renderFire", at = @At(value = "INVOKE", target = "Lconnor135246/campfirebackport/client/rendering/RenderBlockCampfire;drawCrossedSquaresTwoIcons(Lnet/minecraft/util/IIcon;Lnet/minecraft/util/IIcon;DDDF)V"))
private static void angelica$onDrawCrossedSquaresTwoIcons(Args args, double x, double y, double z, Block block, RenderBlocks renderer, boolean mix) {
IIcon icon1 = (IIcon)args.get(0);
AnimationsRenderUtils.markBlockTextureForUpdate(icon1, renderer.blockAccess);
((ITexturesCache)renderer).getRenderedTextures().add(icon1);

IIcon icon2 = (IIcon)args.get(1);
AnimationsRenderUtils.markBlockTextureForUpdate(icon2, renderer.blockAccess);
((ITexturesCache)renderer).getRenderedTextures().add(icon2);
}
}

0 comments on commit aeb0f81

Please sign in to comment.