tutorial:fluids
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tutorial:fluids [2021/11/08 18:30] – Removed the Advanced customization section fusion_flux | tutorial:fluids [2023/05/04 11:31] (current) – [Rendering setup] solidblock | ||
|---|---|---|---|
| Line 17: | Line 17: | ||
| /** | /** | ||
| - | * @return whether the fluid infinite like water | + | * @return whether the fluid is infinite |
| */ | */ | ||
| @Override | @Override | ||
| Line 25: | Line 25: | ||
| /** | /** | ||
| - | * Perform actions when fluid flows into a replaceable block. Water drops | + | * Perform actions when the fluid flows into a replaceable block. Water drops |
| * the block' | * the block' | ||
| */ | */ | ||
| Line 35: | Line 35: | ||
| /** | /** | ||
| - | * Lava returns true if its FluidState is above a certain height and the | + | * Lava returns true if it' |
| * Fluid is Water. | * Fluid is Water. | ||
| * | * | ||
| Line 146: | Line 146: | ||
| @Override | @Override | ||
| public void onInitialize() { | public void onInitialize() { | ||
| - | STILL_ACID = class_2378.method_10230(class_2378.field_11154, new class_2960(MOD_ID, " | + | STILL_ACID = class_2378.method_10230(class_7923.field_41173, new class_2960(" |
| - | FLOWING_ACID = class_2378.method_10230(class_2378.field_11154, new class_2960(MOD_ID, " | + | FLOWING_ACID = class_2378.method_10230(class_7923.field_41173, new class_2960(" |
| - | ACID_BUCKET = class_2378.method_10230(class_2378.field_11142, new class_2960(MOD_ID, " | + | ACID_BUCKET = class_2378.method_10230(class_7923.field_41178, new class_2960(" |
| new class_1755(STILL_ACID, | new class_1755(STILL_ACID, | ||
| Line 163: | Line 163: | ||
| " | " | ||
| [ | [ | ||
| - | "your_mod_id: | + | "tutorial: |
| - | "your_mod_id: | + | "tutorial: |
| ] | ] | ||
| } | } | ||
| Line 177: | Line 177: | ||
| @Override | @Override | ||
| public void onInitialize() { | public void onInitialize() { | ||
| - | ACID = class_2378.method_10230(class_2378.field_11146, new class_2960(MOD_ID, | + | ACID = class_2378.method_10230(class_7923.field_41175, new class_2960(MOD_ID, |
| // ... | // ... | ||
| Line 241: | Line 241: | ||
| ===== Rendering setup ===== | ===== Rendering setup ===== | ||
| - | For your fluids to have textures or be tinted with a color, you will need to register a '' | + | For your fluids to have textures or be tinted with a color, you will need to register a '' |
| < | < | ||
| + | @Environment(EnvType.CLIENT) | ||
| public class TutorialModClient implements ClientModInitializer { | public class TutorialModClient implements ClientModInitializer { | ||
| @Override | @Override | ||
| public void onInitializeClient() { | public void onInitializeClient() { | ||
| - | setupFluidRendering(TutorialMod.STILL_ACID, | + | FluidRenderHandlerRegistry.INSTANCE.register(TutorialMod.STILL_ACID, |
| + | new class_2960(" | ||
| + | new class_2960("minecraft: | ||
| + | 0x4CC248 | ||
| + | )); | ||
| BlockRenderLayerMap.INSTANCE.putFluids(class_1921.method_23583(), | BlockRenderLayerMap.INSTANCE.putFluids(class_1921.method_23583(), | ||
| + | |||
| + | //if you want to use custom textures they needs to be registered. | ||
| + | //In this example this is unnecessary because the vanilla water textures are already registered. | ||
| + | //To register your custom textures use this method. | ||
| + | // | ||
| + | // registry.register(new Identifier(" | ||
| + | // registry.register(new Identifier(" | ||
| + | //}); | ||
| // ... | // ... | ||
| - | } | ||
| - | |||
| - | public static void setupFluidRendering(final class_3611 still, final class_3611 flowing, final class_2960 textureFluidId, | ||
| - | final class_2960 stillSpriteId = new class_2960(textureFluidId.method_12836(), | ||
| - | final class_2960 flowingSpriteId = new class_2960(textureFluidId.method_12836(), | ||
| - | |||
| - | // If they' | ||
| - | ClientSpriteRegistryCallback.event(class_1059.field_5275).register((atlasTexture, | ||
| - | registry.register(stillSpriteId); | ||
| - | registry.register(flowingSpriteId); | ||
| - | }); | ||
| - | |||
| - | final class_2960 fluidId = class_2378.field_11154.method_10221(still); | ||
| - | final class_2960 listenerId = new class_2960(fluidId.method_12836(), | ||
| - | |||
| - | final class_1058[] fluidSprites = { null, null }; | ||
| - | |||
| - | ResourceManagerHelper.get(class_3264.field_14188).registerReloadListener(new SimpleSynchronousResourceReloadListener() { | ||
| - | @Override | ||
| - | public class_2960 getFabricId() { | ||
| - | return listenerId; | ||
| - | } | ||
| - | |||
| - | /** | ||
| - | * Get the sprites from the block atlas when resources are reloaded | ||
| - | */ | ||
| - | @Override | ||
| - | public void method_14491(class_3300 resourceManager) { | ||
| - | final Function< | ||
| - | fluidSprites[0] = atlas.apply(stillSpriteId); | ||
| - | fluidSprites[1] = atlas.apply(flowingSpriteId); | ||
| - | } | ||
| - | }); | ||
| - | |||
| - | // The FluidRenderer gets the sprites and color from a FluidRenderHandler during rendering | ||
| - | final FluidRenderHandler renderHandler = new FluidRenderHandler() | ||
| - | { | ||
| - | @Override | ||
| - | public class_1058[] getFluidSprites(class_1920 view, class_2338 pos, class_3610 state) { | ||
| - | return fluidSprites; | ||
| - | } | ||
| - | |||
| - | @Override | ||
| - | public int getFluidColor(class_1920 view, class_2338 pos, class_3610 state) { | ||
| - | return color; | ||
| - | } | ||
| - | }; | ||
| - | |||
| - | FluidRenderHandlerRegistry.INSTANCE.register(still, | ||
| - | FluidRenderHandlerRegistry.INSTANCE.register(flowing, | ||
| } | } | ||
| } | } | ||
| Line 309: | Line 273: | ||
| ===== Generation in the world ===== | ===== Generation in the world ===== | ||
| - | To make lakes of acid generate in the world, you can create a ''< | + | TODO Update |
| - | + | ||
| - | <code java [enable_line_numbers=" | + | |
| - | public static LakeFeature ACID_LAKE; | + | |
| - | + | ||
| - | @Override | + | |
| - | public void onInitialize() { | + | |
| - | ACID_LAKE = Registry.register(Registry.FEATURE, | + | |
| - | + | ||
| - | // generate in swamps, similar to water lakes, but with a chance of 40 (the higher the number, the lower the generation chance) | + | |
| - | Biomes.SWAMP.addFeature( | + | |
| - | GenerationStep.Feature.LOCAL_MODIFICATIONS, | + | |
| - | ACID_LAKE.configure(new SingleStateFeatureConfig(ACID.getDefaultState())) | + | |
| - | .createDecoratedFeature(Decorator.WATER_LAKE.configure(new ChanceDecoratorConfig(40))) | + | |
| - | ); | + | |
| - | } | + | |
| </ | </ | ||
| - | |||
| - | |||
tutorial/fluids.1636396234.txt.gz · Last modified: 2021/11/08 18:30 by fusion_flux