mirror of
https://github.com/PuzzleMC/Puzzle.git
synced 2025-12-15 11:25:11 +01:00
40 lines
2.1 KiB
Java
Executable File
40 lines
2.1 KiB
Java
Executable File
package net.puzzlemc.emissives.mixin;
|
|
|
|
import net.minecraft.client.render.OverlayTexture;
|
|
import net.minecraft.client.render.RenderLayer;
|
|
import net.minecraft.client.render.VertexConsumer;
|
|
import net.minecraft.client.render.VertexConsumerProvider;
|
|
import net.minecraft.client.render.entity.*;
|
|
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
|
|
import net.minecraft.client.render.entity.model.EntityModel;
|
|
import net.minecraft.client.util.math.MatrixStack;
|
|
import net.minecraft.entity.LivingEntity;
|
|
import net.puzzlemc.core.config.PuzzleConfig;
|
|
import net.puzzlemc.emissives.PuzzleEmissiveTextures;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.Inject;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
|
|
@Mixin(value = LivingEntityRenderer.class)
|
|
public abstract class MixinLivingEntityRenderer<T extends LivingEntity, M extends EntityModel<T>> extends EntityRenderer<T> implements FeatureRendererContext<T, M> {
|
|
|
|
@Shadow public abstract M getModel();
|
|
|
|
protected MixinLivingEntityRenderer(EntityRendererFactory.Context ctx) {
|
|
super(ctx);
|
|
}
|
|
|
|
@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/model/EntityModel;render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;IIFFFF)V", shift = At.Shift.AFTER), method = "render*")
|
|
private void onRender(T entity, float yaw, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, CallbackInfo ci) {
|
|
if (PuzzleConfig.emissiveTextures && PuzzleEmissiveTextures.emissiveTextures.containsKey(this.getTexture(entity))) {
|
|
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(PuzzleEmissiveTextures.emissiveTextures.get(this.getTexture(entity)),true));
|
|
|
|
matrices.scale(1.015f,1.015f,1.015f);
|
|
this.getModel().render(matrices, vertexConsumer, 15728640, OverlayTexture.DEFAULT_UV, 1.0F, 1.0F, 1.0F, 1.0F);
|
|
matrices.scale(1f,1f,1f);
|
|
}
|
|
}
|
|
}
|