2019-03-31 23:53:53 +02:00
|
|
|
package de.ellpeck.naturesaura.blocks.tiles.render;
|
|
|
|
|
2020-01-28 18:08:56 +01:00
|
|
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
2020-01-29 18:18:41 +01:00
|
|
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
2019-03-31 23:53:53 +02:00
|
|
|
import de.ellpeck.naturesaura.NaturesAura;
|
|
|
|
import de.ellpeck.naturesaura.blocks.tiles.TileEntityProjectileGenerator;
|
2020-01-28 18:08:56 +01:00
|
|
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
2020-01-29 18:18:41 +01:00
|
|
|
import net.minecraft.client.renderer.RenderType;
|
|
|
|
import net.minecraft.client.renderer.Vector3f;
|
|
|
|
import net.minecraft.client.renderer.model.Model;
|
|
|
|
import net.minecraft.client.renderer.model.ModelRenderer;
|
2019-10-20 22:30:49 +02:00
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
|
2020-01-28 18:08:56 +01:00
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
2020-01-29 18:18:41 +01:00
|
|
|
import net.minecraft.util.Direction;
|
2019-03-31 23:53:53 +02:00
|
|
|
import net.minecraft.util.ResourceLocation;
|
2019-10-20 22:30:49 +02:00
|
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
2019-03-31 23:53:53 +02:00
|
|
|
|
2019-10-20 22:30:49 +02:00
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
|
|
public class RenderProjectileGenerator extends TileEntityRenderer<TileEntityProjectileGenerator> {
|
2019-03-31 23:53:53 +02:00
|
|
|
private static final ResourceLocation RES = new ResourceLocation(NaturesAura.MOD_ID, "textures/models/projectile_generator_overlay.png");
|
2020-01-29 18:18:41 +01:00
|
|
|
private final ModelOverlay model = new ModelOverlay();
|
2020-01-28 18:08:56 +01:00
|
|
|
|
|
|
|
public RenderProjectileGenerator(TileEntityRendererDispatcher rendererDispatcherIn) {
|
|
|
|
super(rendererDispatcherIn);
|
|
|
|
}
|
2019-03-31 23:53:53 +02:00
|
|
|
|
|
|
|
@Override
|
2020-01-29 18:18:41 +01:00
|
|
|
public void render(TileEntityProjectileGenerator te, float partialTicks, MatrixStack stack, IRenderTypeBuffer buffer, int combinedLightIn, int combinedOverlayIn) {
|
|
|
|
stack.push();
|
2019-10-20 22:30:49 +02:00
|
|
|
if (te.nextSide == Direction.NORTH) {
|
2020-01-29 18:18:41 +01:00
|
|
|
stack.rotate(Vector3f.YP.rotationDegrees(270));
|
2020-01-31 13:42:21 +01:00
|
|
|
stack.translate(-0.002F, 0, -1);
|
2019-10-20 22:30:49 +02:00
|
|
|
} else if (te.nextSide == Direction.EAST) {
|
2020-01-29 18:18:41 +01:00
|
|
|
stack.rotate(Vector3f.YP.rotationDegrees(180));
|
2020-01-31 13:42:21 +01:00
|
|
|
stack.translate(-1.002F, 0, -1);
|
2019-10-20 22:30:49 +02:00
|
|
|
} else if (te.nextSide == Direction.SOUTH) {
|
2020-01-29 18:18:41 +01:00
|
|
|
stack.rotate(Vector3f.YP.rotationDegrees(90));
|
2020-01-31 13:42:21 +01:00
|
|
|
stack.translate(-1.002F, 0, 0);
|
2019-03-31 23:53:53 +02:00
|
|
|
} else {
|
2020-01-31 13:42:21 +01:00
|
|
|
stack.translate(-0.002F, 0, 0);
|
2019-03-31 23:53:53 +02:00
|
|
|
}
|
2020-01-25 16:56:04 +01:00
|
|
|
int brightness = 15 << 20 | 15 << 4;
|
2020-01-29 18:18:41 +01:00
|
|
|
this.model.render(stack, buffer.getBuffer(this.model.getRenderType(RES)), brightness, combinedOverlayIn, 1, 1, 1, 1);
|
|
|
|
stack.pop();
|
2019-03-31 23:53:53 +02:00
|
|
|
}
|
|
|
|
|
2020-01-23 19:20:47 +01:00
|
|
|
private static class ModelOverlay extends Model {
|
2019-03-31 23:53:53 +02:00
|
|
|
|
2020-01-29 18:18:41 +01:00
|
|
|
private final ModelRenderer box;
|
2019-03-31 23:53:53 +02:00
|
|
|
|
|
|
|
public ModelOverlay() {
|
2020-01-29 18:18:41 +01:00
|
|
|
super(RenderType::entityTranslucent);
|
|
|
|
this.box = new ModelRenderer(this, 0, 0);
|
2019-03-31 23:53:53 +02:00
|
|
|
this.box.setTextureSize(64, 64);
|
|
|
|
this.box.addBox(0, 0, 0, 16, 16, 16);
|
|
|
|
}
|
|
|
|
|
2020-01-29 18:18:41 +01:00
|
|
|
@Override
|
|
|
|
public void render(MatrixStack matrixStackIn, IVertexBuilder bufferIn, int packedLightIn, int packedOverlayIn, float red, float green, float blue, float alpha) {
|
|
|
|
this.box.render(matrixStackIn, bufferIn, packedLightIn, packedOverlayIn, red, green, blue, alpha);
|
2019-03-31 23:53:53 +02:00
|
|
|
}
|
2020-01-29 18:18:41 +01:00
|
|
|
}
|
2019-03-31 23:53:53 +02:00
|
|
|
}
|