tutorial:fluids
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:fluids [2019/09/24 10:46] – fluid implementation alexiy | tutorial:fluids [2019/09/24 11:43] – lake generation alexiy | ||
---|---|---|---|
Line 290: | Line 290: | ||
Now we can assert that the Acid class is complete. | Now we can assert that the Acid class is complete. | ||
+ | |||
+ | ===== Rendering setup ===== | ||
+ | |||
+ | Time to do client-side things. In your **ClientModInitializer** you need to specify locations of sprites for your fluids and define their rendering. I will reuse water textures and just change the color applied to them. | ||
+ | |||
+ | <code java> | ||
+ | @Override | ||
+ | public void onInitializeClient() | ||
+ | { | ||
+ | Identifier stillSpriteLocation=new Identifier(" | ||
+ | Identifier dynamicSpriteLocation=new Identifier(" | ||
+ | // here I tell to use only 16x16 area of the water texture | ||
+ | FabricSprite stillAcidSprite = new FabricSprite(stillSpriteLocation, | ||
+ | // same, but 32 | ||
+ | FabricSprite dynamicAcidSprite=new FabricSprite(dynamicSpriteLocation, | ||
+ | | ||
+ | // adding the sprites to the block texture atlas | ||
+ | ClientSpriteRegistryCallback.event(SpriteAtlasTexture.BLOCK_ATLAS_TEX).register((spriteAtlasTexture, | ||
+ | registry.register(stillAcidSprite); | ||
+ | registry.register(dynamicAcidSprite); | ||
+ | }); | ||
+ | |||
+ | // this renderer is responsible for drawing fluids in a world | ||
+ | FluidRenderHandler acidRenderHandler=new FluidRenderHandler() | ||
+ | { | ||
+ | // return the sprites: still sprite goes first into the array, flowing/ | ||
+ | @Override | ||
+ | public Sprite[] getFluidSprites(ExtendedBlockView extendedBlockView, | ||
+ | { | ||
+ | return new Sprite[]{stillAcidSprite, | ||
+ | } | ||
+ | |||
+ | // apply light green color | ||
+ | @Override | ||
+ | public int getFluidColor(ExtendedBlockView view, BlockPos pos, FluidState state) | ||
+ | { | ||
+ | return 0x4cc248; | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | // registering the same renderer for both fluid variants is intentional | ||
+ | |||
+ | FluidRenderHandlerRegistry.INSTANCE.register([ModInitializer].stillAcid, | ||
+ | FluidRenderHandlerRegistry.INSTANCE.register([ModInitializer].flowingAcid, | ||
+ | </ | ||
+ | |||
+ | Then what's left to do is to create necessary Json files and textures, but you should know how to do that at this point. | ||
+ | |||
+ | ===== Generation in a world ===== | ||
+ | |||
+ | To make acid lakes generate in the world, you can use **net.minecraft.world.gen.feature.LakeFeature**, | ||
+ | <code java> | ||
+ | | ||
+ | LakeFeature acidFeature=Registry.register(Registry.FEATURE, | ||
+ | |||
+ | </ | ||
+ | Then put it into desired biomes to generate: | ||
+ | <code java> | ||
+ | // I tell it to generate like water lakes, with a rarity of 40 (the higher is the number, the lesser is the generation chance): | ||
+ | Biomes.FOREST.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, | ||
+ | </ | ||
+ | This is the end of the tutorial. | ||
+ |
tutorial/fluids.txt · Last modified: 2023/05/04 11:31 by solidblock