Posted July 1, 20223 yr Hi, i'm trying to create a sort of toxic "mist" in minecraft wich will be cleared by a machine. To create my mist I modified minecraft RenderSystem using the setShaderFogStart and End and setShaderFogColor methods and the EntityViewRenderEvent from forge to update it. The final idea is to make the block create a protective sphere where there is no toxic mist. What I've done from now is to apply the toxic fog effect to the player when he leaves a sphere i defined (center : 10 100 10 in the World, radius = 10 blocks ). Here is how it looks : https://imgur.com/WdAhF3D (inside the sphere) https://imgur.com/PcluWul (outside the sphere) The reason why i'm posting here is because I have a problem that I can't solve : as you can see in the picture 1, when inside the fog clear zone the player can see clearly through the sphere's border wich makes no sens as the outsides of the sphere is supposed to be toxic. What I would like to do is to make the outside of the sphere look the same as when we are outside of it (I hope what I say makes sense, English is not my native language ), how can I achieve that ? Maybe modifing the fog center effect to be centered on the sphere center (10 100 10 ) instead of the player itself ? Is it possible ? Do you think about an another way accomplishing what i descibed ? I really hope what I said made sense and that I made a correct description of what i want to accomplish Have a nice day ! Edited July 1, 20223 yr by Socrate
July 1, 20223 yr Author here is my github if you want to check what I did https://github.com/Socrateee/Mist
July 1, 20223 yr I don't know much about this, but I do know you can't use the fog for this. The fog is designed to limit the player's view distance, e.g. if they are in lava or water, but mainly so the game doesn't have to draw all the way to "infinity". This means all the fog rendering code is based on the distance to camera. It's an illusion, it's not based on something physically in the world at some position. Spit balling: I would guess you want something more like how clouds are drawn? But again these are partially an illusion. They are procedurally generated rather than being physically in the world, but they are kind of drawn at a location. You can use forge's RenderLevelLastEvent to draw over the world. Look at LevelRenderer.renderClouds() for how clouds are drawn. Edited July 1, 20223 yr by warjort Boilerplate: If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one. If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install Large files should be posted to a file sharing site like https://gist.github.com You should also read the support forum sticky post.
July 1, 20223 yr Author 1 hour ago, diesieben07 said: I think you need a combination of both. Fog for when the player is inside the mist and a custom rendered "thing" for when they are outside. You can probably use RenderLevelLastEvent for that or a BlockEntityRenderer. Okay thank you that's what I was thinking too, so I need a way to hide the zone where there is the fog (but not visible cause the player is not inside ) from the player outside of when he's outside of the fog ? Could you explain a little bit more precisely how to use the RenderLevelLastEvent or the BlockEntityRender ?
July 1, 20223 yr RenderLevelLastEvent is just an event like you used EntityViewRenderEvent. The event is fired after all the other renderering has been done, use it to draw what you like. BlockEntityRenderer is used to manually render block entities, like drawing a chest opening and closing. I don't know how it could be used for this? Boilerplate: If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one. If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install Large files should be posted to a file sharing site like https://gist.github.com You should also read the support forum sticky post.
July 1, 20223 yr Author So if I understood correctly, I should create a new BlockEntity like a Foggy green block and set it on the surface of the sphere using RenderLevelLastEvent or BlockEntityRenderer ( to hide the outside of the protecting sphere ) ? And the green foggy block should be translucid but not transparent and make the player able to go trough it like a phantom block ? Edited July 1, 20223 yr by Socrate
July 2, 20223 yr 20 hours ago, Socrate said: So if I understood correctly, I should create a new BlockEntity like a Foggy green block this is one option you have 20 hours ago, Socrate said: and set it on the surface of the sphere using RenderLevelLastEvent or BlockEntityRenderer no, RenderLevelLastEvent would be one of the other optins you have inside the BlockEntityRenderer you need to render the stuff (sphere) you want 20 hours ago, Socrate said: And the green foggy block should be translucid but not transparent and make the player able to go trough it like a phantom block ? yeah if you want that the player can see the source of the sphere
July 2, 20223 yr Author 29 minutes ago, Luis_ST said: this is one option you have no, RenderLevelLastEvent would be one of the other optins you have inside the BlockEntityRenderer you need to render the stuff (sphere) you want yeah if you want that the player can see the source of the sphere Okay thank you a lot for your help ! So either I create a BlockEntity and set it in a sphere shape using the BER or I use the RenderLevelLastEvent to draw something ? I don't really understand how the RenderLevelLastEvent For you wich option is the best ?
July 2, 20223 yr 48 minutes ago, Socrate said: Okay thank you a lot for your help ! So either I create a BlockEntity and set it in a sphere shape using the BER or I use the RenderLevelLastEvent to draw something ? yeah 49 minutes ago, Socrate said: I don't really understand how the RenderLevelLastEvent not sure whats the question 50 minutes ago, Socrate said: For you wich option is the best ? depends on your purpose and which one you prefer
July 2, 20223 yr Quote I don't really understand how the RenderLevelLastEvent For you wich option is the best ? If you don't understand how RenderLevelLastEvent would be used, it probably means its not a good solution for your problem? Boilerplate: If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one. If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install Large files should be posted to a file sharing site like https://gist.github.com You should also read the support forum sticky post.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.