zh_cn: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 | ||
zh_cn:tutorial:fluids [2020/11/15 01:23] – [Rendering setup] solidblock | zh_cn:tutorial:fluids [2023/05/04 11:22] – [创建抽象流体] solidblock | ||
---|---|---|---|
Line 3: | Line 3: | ||
在这里,我们将介绍自定义流体的创建。如果计划创建多个流体,建议创建一个抽象的基本流体类,在其中设置必要的默认值,这些默认值将在其子类中共享。我们还将使其像湖泊一样在世界中生成。 | 在这里,我们将介绍自定义流体的创建。如果计划创建多个流体,建议创建一个抽象的基本流体类,在其中设置必要的默认值,这些默认值将在其子类中共享。我们还将使其像湖泊一样在世界中生成。 | ||
===== 创建抽象流体 ===== | ===== 创建抽象流体 ===== | ||
- | 原版流体扩展了'' | + | 原版流体继承了 '' |
- | <code java [enable_line_numbers=" | + | <yarncode |
- | public abstract class TutorialFluid extends | + | public abstract class TutorialFluid extends |
- | { | + | |
/** | /** | ||
- | * @return | + | * @return |
*/ | */ | ||
@Override | @Override | ||
- | public boolean | + | public boolean |
- | { | + | |
return fluid == getStill() || fluid == getFlowing(); | return fluid == getStill() || fluid == getFlowing(); | ||
} | } | ||
/** | /** | ||
- | * @return | + | * @return |
*/ | */ | ||
@Override | @Override | ||
- | protected boolean | + | protected boolean |
- | { | + | |
return false; | return false; | ||
} | } | ||
/** | /** | ||
- | * Perform actions when fluid flows into a replaceable block. Water drops | + | * 流体流入一个可替换的方块时的行为。 |
- | * the block' | + | * 水会掉落方块的战利品表。熔岩会播放“block.lava.extinguish”音效。 |
*/ | */ | ||
@Override | @Override | ||
- | protected void beforeBreakingBlock(WorldAccess | + | protected void method_15730(class_1936 |
- | { | + | |
final BlockEntity blockEntity = state.getBlock().hasBlockEntity() ? world.getBlockEntity(pos) : null; | final BlockEntity blockEntity = state.getBlock().hasBlockEntity() ? world.getBlockEntity(pos) : null; | ||
Block.dropStacks(state, | Block.dropStacks(state, | ||
Line 37: | Line 33: | ||
/** | /** | ||
- | * Lava returns true if its FluidState | + | * 熔岩在其 |
- | * Fluid is Water. | + | |
* | * | ||
- | * @return | + | * @return |
*/ | */ | ||
@Override | @Override | ||
- | protected boolean | + | protected boolean |
- | { | + | |
return false; | return false; | ||
} | } | ||
/** | /** | ||
- | * Possibly related to the distance checks for flowing into nearby holes? | + | * 或许与流入周围附近凹洞的距离检查有关? |
- | * Water returns | + | * 水返回4。熔岩在主世界返回2,而在下界返回4。 |
*/ | */ | ||
@Override | @Override | ||
- | protected int getFlowSpeed(WorldView | + | protected int method_15733(class_4538 |
- | { | + | |
return 4; | return 4; | ||
} | } | ||
/** | /** | ||
- | * Water returns | + | * 返回每次流动一格,其等级减少的数值。水返回1,熔岩在主世界返回2,在下界返回1。 |
*/ | */ | ||
@Override | @Override | ||
- | protected int getLevelDecreasePerBlock(WorldView | + | protected int method_15739(class_4538 |
- | { | + | |
return 1; | return 1; | ||
} | } | ||
/** | /** | ||
- | * Water returns | + | * 返回每流一格需要花费的时间(按刻计算)。水返回5。熔岩在主世界返回30,在下界返回10。 |
*/ | */ | ||
@Override | @Override | ||
- | public int getTickRate(WorldView | + | public int method_15789(class_4538 |
- | { | + | |
return 5; | return 5; | ||
} | } | ||
/** | /** | ||
- | * Water and Lava both return | + | * 返回爆炸抗性。水和熔岩都返回100.0F。 |
*/ | */ | ||
@Override | @Override | ||
- | protected float getBlastResistance() | + | protected float method_15784() { |
- | { | + | |
return 100.0F; | return 100.0F; | ||
} | } | ||
} | } | ||
- | </code> | + | </yarncode> |
===== 进行 ===== | ===== 进行 ===== | ||
Line 252: | Line 242: | ||
</ | </ | ||
===== 渲染设置 ===== | ===== 渲染设置 ===== | ||
- | 为了让流体拥有材质,或者与一个颜色绑定,你需要为其注册一个'' | + | 为了让流体拥有纹理,或者与一个颜色绑定,你需要为其注册一个'' |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
Line 333: | Line 323: | ||
</ | </ | ||
- | 如果你需要使用你自己的流体材质,你可以参考原版资源包(('' | + | 如果你需要使用你自己的流体纹理,你可以参考原版资源包(('' |
- | ===== Generation in a world ===== | + | ===== 在世界中生成 |
+ | 为使得酸湖在世界中生成,你可以在你的'' | ||
- | 要在世界上产生酸湖,可以使用在ModInitializer中创建的** net.minecraft.world.gen.feature.LakeFeature **: | + | <code java [enable_line_numbers=" |
- | <code java> | + | // ... |
- | + | ||
- | LakeFeature acidFeature = Registry.register(Registry.FEATURE, new Identifier(MODID," | + | |
+ | public static LakeFeature ACID_LAKE; | ||
+ | |||
+ | // ... | ||
+ | |||
+ | @Override | ||
+ | public void onInitialize() | ||
+ | { | ||
+ | // ... | ||
+ | |||
+ | ACID_LAKE = Registry.register(Registry.FEATURE, | ||
+ | |||
+ | // 在沼泽中生成,类似于水湖,但是概率为40(数字越高,生成几率越低) | ||
+ | Biomes.SWAMP.addFeature( | ||
+ | GenerationStep.Feature.LOCAL_MODIFICATIONS, | ||
+ | ACID_LAKE.configure(new SingleStateFeatureConfig(ACID.getDefaultState())) | ||
+ | .createDecoratedFeature(Decorator.WATER_LAKE.configure(new ChanceDecoratorConfig(40))) | ||
+ | ); | ||
+ | |||
+ | // ... | ||
+ | } | ||
+ | |||
+ | // ... | ||
</ | </ | ||
- | 然后将其放入所需的生物群系中以生成: | ||
- | <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, | ||
- | </ | ||
- | 本教程到此结束。 | ||
zh_cn/tutorial/fluids.txt · Last modified: 2023/05/04 11:31 by solidblock