This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/client/block/entity/render/DefensiveLaserBlockEntityRe...

66 lines
3.0 KiB
Java
Raw Normal View History

package com.thebrokenrail.energonrelics.client.block.entity.render;
2020-07-15 22:44:49 +00:00
import com.thebrokenrail.energonrelics.EnergonRelics;
import com.thebrokenrail.energonrelics.block.entity.DefensiveLaserBlockEntity;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.MinecraftClient;
2020-07-26 03:13:15 +00:00
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
2020-07-15 22:44:49 +00:00
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.util.math.Vector3f;
import net.minecraft.item.ItemStack;
2020-07-26 03:13:15 +00:00
import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.math.Vec3d;
2020-07-15 22:44:49 +00:00
public class DefensiveLaserBlockEntityRenderer extends HighlightBlockEntityRenderer {
public DefensiveLaserBlockEntityRenderer(BlockEntityRenderDispatcher dispatcher) {
super(dispatcher);
}
@Override
public void render(BlockEntity entity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) {
if (entity instanceof DefensiveLaserBlockEntity) {
2020-07-26 03:13:15 +00:00
matrices.push();
matrices.translate(0.5d, 0.5d, 0.5d);
matrices.scale(0.6f, 0.6f, 0.6f);
2020-07-15 22:44:49 +00:00
DefensiveLaserBlockEntity laser = (DefensiveLaserBlockEntity) entity;
2020-07-16 18:50:18 +00:00
float yaw = (float) ((laser.rotation.getYaw()) * DefensiveLaserBlockEntity.DEG2RAD);
2020-07-15 22:44:49 +00:00
if (yaw != 0) {
matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(yaw));
}
2020-07-16 18:50:18 +00:00
float pitch = (float) ((laser.rotation.getPitch() + 45) * DefensiveLaserBlockEntity.DEG2RAD);
2020-07-15 22:44:49 +00:00
if (pitch != 0) {
matrices.multiply(Vector3f.POSITIVE_X.getRadialQuaternion(pitch));
}
2020-07-16 18:50:18 +00:00
matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-90));
2020-07-26 03:13:15 +00:00
MinecraftClient client = MinecraftClient.getInstance();
2020-08-20 23:03:47 +00:00
client.getItemRenderer().renderItem(new ItemStack(EnergonRelics.Items.DEFENSIVE_LASER_CORE), ModelTransformation.Mode.FIXED, light, overlay, matrices, vertexConsumers);
2020-07-26 03:13:15 +00:00
matrices.pop();
2020-07-29 18:18:16 +00:00
if (client.getEntityRenderDispatcher().shouldRenderHitboxes()) {
2020-07-26 03:13:15 +00:00
matrices.push();
Matrix4f matrix4f = matrices.peek().getModel();
Vec3d vec3d = ((DefensiveLaserBlockEntity) entity).rotation.getRayVector().multiply(2d).add(0.5d, 0.5d, 0.5d);
VertexConsumer vertices = vertexConsumers.getBuffer(RenderLayer.getLines());
vertices.vertex(matrix4f, 0.5f, 0.5f, 0.5f).color(0, 0, 255, 255).next();
vertices.vertex(matrix4f, (float) vec3d.getX(), (float) vec3d.getY(), (float) vec3d.getZ()).color(0, 0, 255, 255).next();
matrices.pop();
}
2020-07-15 22:44:49 +00:00
}
2020-08-17 22:59:31 +00:00
super.render(entity, tickDelta, matrices, vertexConsumers, light, overlay);
2020-07-15 22:44:49 +00:00
}
}