Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Mod.EventBusSubscriber(modid = Main.MOD_ID)
- public class ModSubscribeEvents {
- @SubscribeEvent
- public static void onTextureStitch(TextureStitchEvent.Pre event){
- if (event.getMap().getTextureLocation().equals(AtlasTexture.LOCATION_BLOCKS_TEXTURE)){
- event.addSprite(new ResourceLocation(Main.MOD_ID, "block/sfire_0"));
- event.addSprite(new ResourceLocation(Main.MOD_ID, "block/sfire_1"));
- }
- }
- RenderMaterial LOCATION_SFIRE_0 = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(Main.MOD_ID, "block/sfire_0"));
- RenderMaterial LOCATION_SFIRE_1 = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, new ResourceLocation(Main.MOD_ID, "block/sfire_1"));
- @SubscribeEvent
- public void onRenderEntity(RenderLivingEvent.Pre event) {
- Entity entityIn = event.getEntity();
- if (entityIn.isAlive() && entityIn.getEntityWorld().isRemote
- && !(entityIn instanceof PlayerEntity) && (Config.COMMON.sRendering.get() == 1)) {
- EntityRenderer<? super Entity> entityrenderer = event.getRenderer();
- MatrixStack matrixStackIn = event.getMatrixStack();
- IRenderTypeBuffer bufferIn = event.getBuffers();
- int packedLightIn = event.getLight();
- float partialTicks = event.getPartialRenderTick();
- double xIn = MathHelper.lerp(partialTicks, entityIn.lastTickPosX, entityIn.getPosX());
- double yIn = MathHelper.lerp(partialTicks, entityIn.lastTickPosY, entityIn.getPosY());
- double zIn = MathHelper.lerp(partialTicks, entityIn.lastTickPosZ, entityIn.getPosZ());
- float rotationYawIn = MathHelper.lerp(partialTicks, entityIn.prevRotationYaw, entityIn.rotationYaw);
- Vector3d vector3d = entityrenderer.getRenderOffset(entityIn, partialTicks);
- double d2 = xIn + vector3d.getX();
- double d3 = yIn + vector3d.getY();
- double d0 = zIn + vector3d.getZ();
- matrixStackIn.push();
- matrixStackIn.translate(d2, d3, d0);
- entityrenderer.render(entityIn, rotationYawIn, partialTicks, matrixStackIn, bufferIn, packedLightIn);
- if (flag) { //flag is defined somewhere else, but it works correctly
- this.renderSFire(matrixStackIn, bufferIn, entityIn, rotationYawIn);
- }
- matrixStackIn.translate(-vector3d.getX(), -vector3d.getY(), -vector3d.getZ());
- matrixStackIn.pop();
- }
- }
- private void renderSFire(MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, Entity entityIn, float entityYaw) {
- TextureAtlasSprite textureatlassprite = LOCATION_SFIRE_0.getSprite();
- TextureAtlasSprite textureatlassprite1 = LOCATION_SFIRE_1.getSprite();
- matrixStackIn.push();
- float f = entityIn.getWidth() * 1.4F;
- matrixStackIn.scale(f, f, f);
- float f1 = 0.5F;
- float f3 = entityIn.getHeight() / f;
- float f4 = 0.0F;
- ActiveRenderInfo activerenderinfo = Minecraft.getInstance().gameRenderer.getActiveRenderInfo();
- matrixStackIn.rotate(Vector3f.YP.rotationDegrees(-activerenderinfo.getYaw()));
- matrixStackIn.translate(0.0D, 0.0D, -0.3F + (float)((int)f3) * 0.02F);
- float f5 = 0.0F;
- int i = 0;
- IVertexBuilder ivertexbuilder = bufferIn.getBuffer(Atlases.getCutoutBlockType());
- for(MatrixStack.Entry matrixstack$entry = matrixStackIn.getLast(); f3 > 0.0F; ++i) {
- TextureAtlasSprite textureatlassprite2 = i % 2 == 0 ? textureatlassprite : textureatlassprite1;
- float f6 = textureatlassprite2.getMinU();
- float f7 = textureatlassprite2.getMinV();
- float f8 = textureatlassprite2.getMaxU();
- float f9 = textureatlassprite2.getMaxV();
- if (i / 2 % 2 == 0) {
- float f10 = f8;
- f8 = f6;
- f6 = f10;
- }
- fireVertex(matrixstack$entry, ivertexbuilder, f1 - 0.0F, 0.0F - f4, f5, f8, f9);
- fireVertex(matrixstack$entry, ivertexbuilder, -f1 - 0.0F, 0.0F - f4, f5, f6, f9);
- fireVertex(matrixstack$entry, ivertexbuilder, -f1 - 0.0F, 1.4F - f4, f5, f6, f7);
- fireVertex(matrixstack$entry, ivertexbuilder, f1 - 0.0F, 1.4F - f4, f5, f8, f7);
- f3 -= 0.45F;
- f4 -= 0.45F;
- f1 *= 0.9F;
- f5 += 0.03F;
- }
- matrixStackIn.pop();
- }
- private static void fireVertex(MatrixStack.Entry matrixEntryIn, IVertexBuilder bufferIn, float x, float y, float z, float texU, float texV) {
- bufferIn.pos(matrixEntryIn.getMatrix(), x, y, z).color(255, 255, 255, 255).tex(texU, texV).overlay(0, 10).lightmap(240).normal(matrixEntryIn.getNormal(), 0.0F, 1.0F, 0.0F).endVertex();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement