mirror of
https://github.com/GTNewHorizons/Angelica.git
synced 2026-10-26 14:24:30 +00:00
Adds entity_flame ID to Angelic (#1202)
This commit is contained in:
1 parent
b84286ba3b
commit
1649c3c0c6
2 files changed
+38
No files matched your search
@@ -182,6 +182,7 @@ public enum Mixins implements IMixins {
|
||||
, "shaders.MixinLocale"
|
||||
, "shaders.MixinOpenGlHelper"
|
||||
, "shaders.MixinRender"
|
||||
, "shaders.MixinRenderEntityFlame"
|
||||
, "shaders.MixinRendererLivingEntity"
|
||||
, "shaders.MixinRenderGlobal"
|
||||
, "shaders.MixinTileEntityBeaconRenderer"
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.gtnewhorizons.angelica.mixins.early.shaders;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntFunction;
|
||||
import net.coderbot.iris.block_rendering.BlockRenderingSettings;
|
||||
import net.coderbot.iris.shaderpack.materialmap.NamespacedId;
|
||||
import net.coderbot.iris.uniforms.CapturedRenderingState;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(Render.class)
|
||||
public class MixinRenderEntityFlame {
|
||||
@Unique
|
||||
private static final NamespacedId flameId = new NamespacedId("minecraft", "entity_flame");
|
||||
// Shader devs use entity_flame to target this effect.
|
||||
|
||||
@Inject(method = "renderEntityOnFire", at = @At("HEAD"))
|
||||
|
||||
// This runs after the initial entity has finished being rendered.
|
||||
// The flame is not a real entity but from the shader's perspective, it is.
|
||||
private void iris$setFlame(Entity entity, double x, double y, double z, float partialTicks, CallbackInfo ci) {
|
||||
Object2IntFunction<NamespacedId> entityIdMap = BlockRenderingSettings.INSTANCE.getEntityIds();
|
||||
if (entityIdMap != null) {
|
||||
CapturedRenderingState.INSTANCE.setCurrentEntity(entityIdMap.applyAsInt(flameId));
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "renderEntityOnFire", at = @At("RETURN"))
|
||||
private void iris$resetFlame(Entity entity, double x, double y, double z, float partialTicks, CallbackInfo ci) {
|
||||
CapturedRenderingState.INSTANCE.setCurrentEntity(0);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user