NaturesAura/src/main/java/de/ellpeck/naturesaura/entities/render/RenderEffectInhibitor.java

51 lines
2.2 KiB
Java
Raw Normal View History

package de.ellpeck.naturesaura.entities.render;
import com.mojang.blaze3d.vertex.PoseStack;
2023-07-08 12:32:27 +02:00
import com.mojang.math.Axis;
import de.ellpeck.naturesaura.entities.EntityEffectInhibitor;
import de.ellpeck.naturesaura.items.ItemEffectPowder;
import de.ellpeck.naturesaura.items.ModItems;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
2019-10-20 22:30:49 +02:00
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
2023-02-15 23:45:50 +01:00
import net.minecraft.world.inventory.InventoryMenu;
2023-07-08 12:32:27 +02:00
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
2024-02-03 14:56:07 +01:00
import net.neoforged.api.distmarker.Dist;
import net.neoforged.api.distmarker.OnlyIn;
import java.util.HashMap;
import java.util.Map;
2019-10-20 22:30:49 +02:00
@OnlyIn(Dist.CLIENT)
public class RenderEffectInhibitor extends EntityRenderer<EntityEffectInhibitor> {
private final Map<ResourceLocation, ItemStack> items = new HashMap<>();
2023-02-15 23:45:50 +01:00
public RenderEffectInhibitor(EntityRendererProvider.Context ctx) {
super(ctx);
}
2020-01-28 18:08:56 +01:00
@Override
public ResourceLocation getTextureLocation(EntityEffectInhibitor entity) {
2023-02-15 23:45:50 +01:00
return InventoryMenu.BLOCK_ATLAS;
}
@Override
public void render(EntityEffectInhibitor entity, float entityYaw, float partialTicks, PoseStack matrixStackIn, MultiBufferSource bufferIn, int packedLightIn) {
matrixStackIn.pushPose();
2021-12-15 16:30:22 +01:00
var time = entity.renderTicks + entity.getId() + partialTicks;
var bob = (float) Math.sin(time / 10F) * 0.05F;
matrixStackIn.translate(0, 0.15F + bob, 0);
2023-07-08 12:32:27 +02:00
matrixStackIn.mulPose(Axis.YP.rotationDegrees(time * 3 % 360));
2021-12-15 16:30:22 +01:00
var effect = entity.getInhibitedEffect();
var stack = this.items.computeIfAbsent(effect,
res -> ItemEffectPowder.setEffect(new ItemStack(ModItems.EFFECT_POWDER), effect));
2023-07-08 12:32:27 +02:00
Minecraft.getInstance().getItemRenderer().renderStatic(stack, ItemDisplayContext.GROUND, packedLightIn, OverlayTexture.NO_OVERLAY, matrixStackIn, bufferIn, entity.level(), 0);
matrixStackIn.popPose();
}
}