User Tools

Site Tools


ru:tutorial:fluids

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:tutorial:fluids [2022/02/24 21:44] – created (половина в переводе furnygoru:tutorial:fluids [2022/02/25 20:19] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Создание жидкостей ====== ====== Создание жидкостей ======
  
-===== Ознакомление ===== +===== Введение ===== 
-Здесь мы рассмотрим создание жидкости. Если вы планируете создать несколько жидкостей, рекомендуется создать абстрактный базовый класс жидкостей, в котором вы зададите необходимые значения по умолчанию, которые будут общими для его подклассов. Мы также сделаем так, чтобы она генерировалась в мире, как озера.+Здесь мы рассмотрим создание жидкости. Если вы планируете создать несколько жидкостей, рекомендуется создать абстрактный базовый класс жидкостей, в котором вы зададите необходимые значения по умолчанию, которые будут общими для его подклассов. Мы также сделаем так, чтобы жидкость генерировалась в мире, как озера.
  
 ===== Создание абстрактной жидкости ===== ===== Создание абстрактной жидкости =====
Line 25: Line 25:
  
  /**  /**
- * Выполняйте действия, когда жидкость поступает в сменный блок. Вода ссылается+ * Выполняйте действия, когда жидкость поступает в следующий блок. Вода ссылается
  * на таблицу добычи блока. Лава воспроизводит звук "block.lava.extinguish".  * на таблицу добычи блока. Лава воспроизводит звук "block.lava.extinguish".
  */  */
Line 38: Line 38:
  * Жидкость - это Вода.  * Жидкость - это Вода.
  *   * 
- * @вернём, может ли данная жидкость перетекать в это FluidState+ * @вернём, может ли данная жидкость перетекать в этот FluidState
  */  */
  @Override  @Override
Line 46: Line 46:
  
  /**  /**
- * Возможно, это связано с проверкой расстояния на предмет попадания в близлежащие отверстия? + * На каком расстоянии проверять попадания в близлежащие отверстия? 
- * Вода возвращает 4. Лава возвращает 2 в Верхнем мире и 4 в Нижнем.+ * Вода возвращает 4. Лава возвращает 2 в Верхнем мире и 4 в Нижнем мире.
  */  */
  @Override  @Override
Line 55: Line 55:
  
  /**  /**
- * Water returns 1. Lava returns 2 in the Overworld and 1 in the Nether.+ * Вода возвращает 1. Лава возвращает 2 в Верхнем мире и 1 в Нижнем мире.
  */  */
  @Override  @Override
Line 63: Line 63:
  
  /**  /**
- * Water returns 5. Lava returns 30 in the Overworld and 10 in the Nether.+ * Вода возвращает 5. Лава возвращает 30 в Верхнем мире и 10 в Нижнем мире.
  */  */
  @Override  @Override
Line 71: Line 71:
  
  /**  /**
- * Water and Lava both return 100.0F.+ * Вода и лава возвращают 100.0F.
  */  */
  @Override  @Override
Line 80: Line 80:
 </yarncode> </yarncode>
  
-===== Implementation ===== +===== Реализация ===== 
-Now let's make an actual fluid which will have still and flowing variants. For this tutorial, we will call it Acid. The missing references will be filled in shortly.+Теперь давайте создадим настоящую жидкость, которая будет иметь неподвижные и текучие варианты. В этом уроке мы будем называть его Acid(Кислота). Недостающие ссылки будут заполнены в ближайшее время.
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
Line 87: Line 87:
  @Override  @Override
  public class_3611 method_15751() {  public class_3611 method_15751() {
- return YOUR_STILL_FLUID_HERE;+ return VASH_STILL_FLUID_ZDES;
  }  }
  
  @Override  @Override
  public class_3611 method_15750() {  public class_3611 method_15750() {
- return YOUR_FLOWING_FLUID_HERE;+ return VASH_FLOWING_FLUID_ZDES;
  }  }
  
  @Override  @Override
  public class_1792 method_15774() {  public class_1792 method_15774() {
- return YOUR_BUCKET_ITEM_HERE;+ return VASH_BUCKET_ITEM_ZDES;
  }  }
  
  @Override  @Override
  protected class_2680 method_15790(class_3610 fluidState) {  protected class_2680 method_15790(class_3610 fluidState) {
- return YOUR_FLUID_BLOCK_HERE.method_9564().method_11657(class_2741.field_12538, method_15741(fluidState));+ return VASH_FLUID_BLOCK_ZDES.method_9564().method_11657(class_2741.field_12538, method_15741(fluidState));
  }  }
  
Line 137: Line 137:
 </yarncode> </yarncode>
  
-Next, we'll make static instances of still and flowing acid variants, and an acid bucket. In your ''ModInitializer'':+Далее мы создадим статические экземпляры неподвижных и текущих вариантов кислоты, а также ведро кислоты. В вашем ''ModInitializer'':
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
Line 157: Line 157:
 </yarncode> </yarncode>
  
-To make a custom fluid behave more like water or lava, you must add it to a corresponding fluid tag: For water, make a ''data/minecraft/tags/fluids/water.json'' file and write the identifiers of your fluids in there:+Чтобы ваша жидкость вела себя больше как вода или лава, вы должны добавить ее в соответствующий тег жидкости: для воды создайте файл ''data /minecraft/tags/fluids/water.json'' и запишите туда идентификаторы ваших жидкостей:
 <code json [enable_line_numbers="true"]> <code json [enable_line_numbers="true"]>
 { {
Line 169: Line 169:
 </code> </code>
  
-===== Making a fluid block ===== +===== Создание блока жидкости ===== 
-Next we need to create a block which will represent acid in the world. ''<yarn net.minecraft.class_2404>'' is the class we need to use, but since its constructor is protected, we can't construct it directly. Some ways to use it are to make a subclass or an anonymous subclass. Here we will be showing the latter. In your ''ModInitializer'':+Далее нам нужно создать блок, который будет представлять кислоту в мире. ''<yarn net.minecraft.class_2404>'' - это класс, который нам нужно использовать, но поскольку его конструктор защищен, мы не можем создать его напрямую. Некоторые способы его использования заключаются в создании подкласса или анонимного подкласса. Здесь мы покажем последнее. В вашем ''ModInitializer'':
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
Line 183: Line 183:
 </yarncode> </yarncode>
  
-Now that we have these static objects, we can go back to ''AcidFluid'' and fill in the overridden methods:+Теперь, когда у нас есть эти статические объекты, мы можем вернуться к ''AcidFluid'' и заполнить переопределенные методы:
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
Line 240: Line 240:
 </yarncode> </yarncode>
  
-===== Rendering setup ===== +===== Настройка рендеринга ===== 
-For your fluids to have textures or be tinted with a color, you will need to register a ''FluidRenderHandler'' for them. Here, we will reuse water's textures and just change the tint color applied to them. To make sure the textures are rendered as translucent, you can use Fabric's ''BlockRenderLayerMap''.+Чтобы ваши жидкости имели текстуру или были окрашены в определенный цвет, вам нужно будет зарегистрировать для них ''FluidRenderHandler''. Здесь мы будем повторно использовать текстуры воды и просто изменим цвет оттенка, примененный к ним. Чтобы убедиться, что текстуры отображаются как полупрозрачные, вы можете использовать ''BlockRenderLayerMap'' Fabric'а.
  
 <yarncode java [enable_line_numbers="true"]> <yarncode java [enable_line_numbers="true"]>
Line 256: Line 256:
  BlockRenderLayerMap.INSTANCE.putFluids(class_1921.method_23583(), TutorialMod.STILL_ACID, TutorialMod.FLOWING_ACID);  BlockRenderLayerMap.INSTANCE.putFluids(class_1921.method_23583(), TutorialMod.STILL_ACID, TutorialMod.FLOWING_ACID);
  
- //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.+ //Чтобы зарегистрировать свои пользовательские текстуры, используйте этот метод:
  //ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register((atlasTexture, registry) -> {  //ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register((atlasTexture, registry) -> {
  //    registry.register(new Identifier("modid:block/custom_fluid_still"));  //    registry.register(new Identifier("modid:block/custom_fluid_still"));
Line 269: Line 269:
 </yarncode> </yarncode>
  
-If you want to use your own fluid textures, you can refer to vanilla's assets ((''assets/minecraft/blockstates/water.json''\\ ''assets/minecraft/models/block/water.json''\\ ''assets/minecraft/textures/block/water_still.png''\\ ''assets/minecraft/textures/block/water_still.png.mcmeta''\\ ''assets/minecraft/textures/block/water_flow.png''\\ ''assets/minecraft/textures/block/water_flow.png.mcmeta'')) as a template.+Если вы хотите использовать свои собственные текучие текстуры, вы можете обратиться к ванильным ресурсам ((''assets/minecraft/blockstates/water.json''\\ ''assets/minecraft/models/block/water.json''\\ ''assets/minecraft/textures/block/water_still.png''\\ ''assets/minecraft/textures/block/water_still.png.mcmeta''\\ ''assets/minecraft/textures/block/water_flow.png''\\ ''assets/minecraft/textures/block/water_flow.png.mcmeta'')) as a template.
  
-===== Generation in the world ===== +===== Генерация в мире ===== 
-To make lakes of acid generate in the world, you can create a ''<yarn net.minecraft.class_3085>'' in your ''ModInitializer'' and then add it to the biomes you want it to generate in:+Чтобы заставить озера кислоты генерироваться в мире, вы можете создать ''<yarn net.minecraft.class_3085>'' в вашем ''ModInitializer'' а затем добавить его в биомы, в которых вы хотите, чтобы он генерировался:
  
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
Line 281: Line 281:
  ACID_LAKE = Registry.register(Registry.FEATURE, new Identifier(MOD_ID, "acid_lake"), new LakeFeature(SingleStateFeatureConfig::deserialize));  ACID_LAKE = Registry.register(Registry.FEATURE, new Identifier(MOD_ID, "acid_lake"), new LakeFeature(SingleStateFeatureConfig::deserialize));
   
- // generate in swamps, similar to water lakes, but with a chance of 40 (the higher the number, the lower the generation chance)+ // генерация в болотах, похожих на водные озера, но с вероятностью 40 (чем выше число, тем ниже вероятность генерации)
  Biomes.SWAMP.addFeature(  Biomes.SWAMP.addFeature(
  GenerationStep.Feature.LOCAL_MODIFICATIONS,  GenerationStep.Feature.LOCAL_MODIFICATIONS,
ru/tutorial/fluids.1645739069.txt.gz · Last modified: 2022/02/24 21:44 by furnygo