Skip to content

Commit

Permalink
Add name tag entity ID
Browse files Browse the repository at this point in the history
  • Loading branch information
IMS212 committed Jun 28, 2024
1 parent 1620565 commit 0ea74e4
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package net.irisshaders.iris.mixin.entity_render_context;

import com.mojang.blaze3d.vertex.PoseStack;
import it.unimi.dsi.fastutil.objects.Object2IntFunction;
import net.irisshaders.iris.shaderpack.materialmap.NamespacedId;
import net.irisshaders.iris.shaderpack.materialmap.WorldRenderingSettings;
import net.irisshaders.iris.uniforms.CapturedRenderingState;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.network.chat.Component;
import net.minecraft.world.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(EntityRenderer.class)
public class MixinEntityRenderer<T extends Entity> {
@Unique
private static final NamespacedId NAME_TAG_ID = new NamespacedId("minecraft", "name_tag");

@Unique
private int lastId = -100;

@Inject(method = "renderNameTag", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getNameTagOffsetY()F"))
private void setNameTagId(T entity, Component component, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) {
Object2IntFunction<NamespacedId> entityIds = WorldRenderingSettings.INSTANCE.getEntityIds();

if (entityIds == null) {
return;
}

this.lastId = CapturedRenderingState.INSTANCE.getCurrentRenderedEntity();

int intId = entityIds.applyAsInt(NAME_TAG_ID);

CapturedRenderingState.INSTANCE.setCurrentEntity(intId);
}

@Inject(method = "renderNameTag", at = @At("RETURN"))
private void resetId(T entity, Component component, PoseStack poseStack, MultiBufferSource multiBufferSource, int i, CallbackInfo ci) {
if (lastId != -100) {
CapturedRenderingState.INSTANCE.setCurrentEntity(lastId);
lastId = -100 ;
}
}
}
1 change: 1 addition & 0 deletions src/main/resources/mixins.iris.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"entity_render_context.MixinElytraLayer",
"entity_render_context.MixinEnderDragonRenderer",
"entity_render_context.MixinEntityRenderDispatcher",
"entity_render_context.MixinEntityRenderer",
"entity_render_context.MixinHorseArmorLayer",
"entity_render_context.MixinHumanoidArmorLayer",
"entity_render_context.MixinItemRenderer",
Expand Down

0 comments on commit 0ea74e4

Please sign in to comment.