Skip to content

Commit 3755e25

Browse files
authored
Fix campfire backport animations (#224)
* Mark animations of crossed squares Fixes Angelica's equivalent of GTNewHorizons/Hodgepodge#264 Fixes Campfire Backport campfire flames not animating (but the embers and the mixed NEI flames are still broken) * Add Campfire Backport compatibility to animation speedup Fixes Angelica's equivalent of GTNewHorizons/Hodgepodge#204 Fixes embers and NEI mixed flames not animating
1 parent 0d79f5e commit 3755e25

File tree

5 files changed

+50
-0
lines changed

5 files changed

+50
-0
lines changed

dependencies.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ dependencies {
8585
compileOnly("com.github.GTNewHorizons:NotEnoughIds-Legacy:1.4.7:dev") // ASM Version
8686

8787
compileOnly("com.github.GTNewHorizons:Jabba:1.3.1:dev")
88+
compileOnly(rfg.deobf("curse.maven:campfirebackport-387444:4611675"))
8889
// HMMMMM
8990
compileOnly(rfg.deobf("curse.maven:journeymap-32274:2367915"))
9091

src/main/java/com/gtnewhorizons/angelica/mixins/Mixins.java

+5
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,11 @@ public enum Mixins {
194194
"angelica.animation.MixinRenderBlockFluid",
195195
"angelica.animation.MixinWorldRenderer",
196196
"angelica.animation.MixinRenderItem")),
197+
198+
SPEEDUP_CAMPFIRE_BACKPORT_ANIMATIONS(new Builder("Add animation speedup support to Campfire Backport").setPhase(Phase.LATE)
199+
.addTargetedMod(TargetedMod.CAMPFIRE_BACKPORT).setSide(Side.CLIENT)
200+
.setApplyIf(() -> AngelicaConfig.speedupAnimations)
201+
.addMixinClasses("client.campfirebackport.MixinRenderBlockCampfire")),
197202

198203
IC2_FLUID_RENDER_FIX(new Builder("IC2 Fluid Render Fix").setPhase(Phase.EARLY).setSide(Side.CLIENT)
199204
.addTargetedMod(TargetedMod.IC2).setApplyIf(() -> AngelicaConfig.speedupAnimations)

src/main/java/com/gtnewhorizons/angelica/mixins/TargetedMod.java

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public enum TargetedMod {
99
, OPTIFINE("Optifine", "optifine.OptiFineForgeTweaker", "Optifine")
1010
, ARCHAICFIX("ArchaicFix", "org.embeddedt.archaicfix.ArchaicCore", "archaicfix")
1111
, BOTANIA("Botania", null, "Botania")
12+
, CAMPFIRE_BACKPORT("CampfireBackport", null, "campfirebackport")
1213
, CHICKENCHUNKS("ChickenChunks", null, "ChickenChunks")
1314
, COFHCORE("CoFHCore", "cofh.asm.LoadingPlugin", "CoFHCore")
1415
, DYNAMIC_SURROUNDINGS_MIST("Dynamic Surroundings", "org.blockartistry.mod.DynSurround.mixinplugin.DynamicSurroundingsEarlyMixins", "dsurround")

src/main/java/com/gtnewhorizons/angelica/mixins/early/angelica/animation/MixinRenderBlocks.java

+8
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ public class MixinRenderBlocks implements ITexturesCache {
6666

6767
return icon;
6868
}
69+
70+
@Inject(method = "drawCrossedSquares", at = @At("HEAD"))
71+
public void angelica$markCrossedSquaresAnimationForUpdate(IIcon icon, double p_147765_2_, double p_147765_4_, double p_147765_6_, float p_147765_8_,
72+
CallbackInfo ci) {
73+
AnimationsRenderUtils.markBlockTextureForUpdate(icon, blockAccess);
74+
75+
this.renderedSprites.add(icon);
76+
}
6977

7078
@Override
7179
public Set<IIcon> getRenderedTextures() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.gtnewhorizons.angelica.mixins.late.client.campfirebackport;
2+
3+
import org.spongepowered.asm.mixin.Mixin;
4+
import org.spongepowered.asm.mixin.injection.At;
5+
import org.spongepowered.asm.mixin.injection.Inject;
6+
import org.spongepowered.asm.mixin.injection.ModifyArgs;
7+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8+
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
9+
10+
import com.gtnewhorizons.angelica.mixins.interfaces.ITexturesCache;
11+
import com.gtnewhorizons.angelica.utils.AnimationsRenderUtils;
12+
13+
import net.minecraft.block.Block;
14+
import net.minecraft.client.renderer.RenderBlocks;
15+
import net.minecraft.util.IIcon;
16+
17+
@Mixin(targets = "connor135246.campfirebackport.client.rendering.RenderBlockCampfire", remap = false)
18+
public class MixinRenderBlockCampfire {
19+
@Inject(method = "renderFace", at = @At("HEAD"))
20+
private static void angelica$beforeRenderFace(double x, double y, double z, Block block, RenderBlocks renderer, IIcon icon, int side, CallbackInfo ci) {
21+
AnimationsRenderUtils.markBlockTextureForUpdate(icon, renderer.blockAccess);
22+
((ITexturesCache)renderer).getRenderedTextures().add(icon);
23+
}
24+
25+
@ModifyArgs(method = "renderFire", at = @At(value = "INVOKE", target = "Lconnor135246/campfirebackport/client/rendering/RenderBlockCampfire;drawCrossedSquaresTwoIcons(Lnet/minecraft/util/IIcon;Lnet/minecraft/util/IIcon;DDDF)V"))
26+
private static void angelica$onDrawCrossedSquaresTwoIcons(Args args, double x, double y, double z, Block block, RenderBlocks renderer, boolean mix) {
27+
IIcon icon1 = (IIcon)args.get(0);
28+
AnimationsRenderUtils.markBlockTextureForUpdate(icon1, renderer.blockAccess);
29+
((ITexturesCache)renderer).getRenderedTextures().add(icon1);
30+
31+
IIcon icon2 = (IIcon)args.get(1);
32+
AnimationsRenderUtils.markBlockTextureForUpdate(icon2, renderer.blockAccess);
33+
((ITexturesCache)renderer).getRenderedTextures().add(icon2);
34+
}
35+
}

0 commit comments

Comments
 (0)