Minecraft 1.12.2模组进阶(二十四) 流体(Fluid)「建议收藏」

Minecraft 1.12.2模组进阶(二十四) 流体(Fluid)「建议收藏」我们本次在世界中生成一种属于我们自己的流体流体(原版中的水、岩浆):既属于一种液体,也属于一种方块

我们本次在世界中生成一种属于我们自己的流体

流体(原版中的水、岩浆):既属于一种液体,也属于一种方块。

1.新建一个fluids包

cr2.png

2.在fluids包中新建FluidLiquid类

cr3.png

在FluidLiquid.java中编辑代码:
package com.Joy187.newmod.fluids;

import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;

public class FluidLiquid extends Fluid{
	public FluidLiquid(String name, ResourceLocation still, ResourceLocation flow) {
		super(name, still, flow);
		this.setUnlocalizedName(name);
	}
	
}

3.在init包中新建ModFluid类

cr1.png

在 ModFluid.java 中编辑:
package com.Joy187.newmod.init;

import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import com.Joy187.newmod.fluids.FluidLiquid;

public class ModFluid {
    //定义你的流体       一共两种材质:静止态 流动态
	public static final Fluid VIRGINIS = new FluidLiquid("virginis", new ResourceLocation("joymod:blocks/virginis_still"), new ResourceLocation("joymod:blocks/virginis_flow"));

	public static void registerFluids() {
		registerFluid(VIRGINIS);
	}
	
	public static void registerFluid(Fluid fluid) {
		FluidRegistry.registerFluid(fluid);
		FluidRegistry.addBucketForFluid(fluid);
	}
	
}

4.在blocks包中新建FluidBlock类

cr4.png

在FluidBlock.java中编辑
package com.Joy187.newmod.blocks;

import com.Joy187.newmod.init.ModBlocks;
import com.Joy187.newmod.init.ModItems;

import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fluids.Fluid;

public class FluidBlock extends BlockFluidClassic {
	public FluidBlock(String name, Fluid fluid, Material material)
	{
		super(fluid, material);
		setUnlocalizedName(name);
		setRegistryName(name);
		
		ModBlocks.BLOCKS.add(this);
		ModItems.ITEMS.add(new ItemBlock(this).setRegistryName(this.getRegistryName()));
	}
	
	public EnumBlockRenderType getRenderType(IBlockState state)
	{
		return EnumBlockRenderType.MODEL;
	}
}

5.在 init包中的ModBlocks.java中添加该流体方块的注册信息

	public static final Block VIRGINIS_BLOCK = new FluidBlock("virginis", ModFluid.VIRGINIS , Material.WATER);

cr6.png

6.在handlers包中的RenderHandler.java 中添加一个新的函数registerCustomMeshesAndStates()用于渲染流体

	public static void registerCustomMeshesAndStates() {
		ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock(ModBlocks.VIRGINIS_BLOCK), new ItemMeshDefinition()
		{
			public ModelResourceLocation getModelLocation(ItemStack stack) {
			                                    //这里是你的modid:流体名称
				return new ModelResourceLocation("joymod:virginis", "fluid");
			}
		});
		
		ModelLoader.setCustomStateMapper(ModBlocks.VIRGINIS_BLOCK, new StateMapperBase()
		{
			protected ModelResourceLocation getModelResourceLocation(IBlockState state)
			{   
			                                    //这里是你的modid:流体名称
				return new ModelResourceLocation("joymod:virginis", "fluid");
			}
		});
	}

7.在 RegistryHandler.java 中的preInitRegistries()中添加流体注册信息:

	public static void preInitRegistries(){
		
		ModFluid.registerFluids();  //注册流体
		EntityInit.registerEntities();
		RenderHandler.registerEntityRenders();
		RenderHandler.registerCustomMeshesAndStates();  //注册流体的渲染
	}

8.在Main.java中PreInit()函数之前添加流体信息注册

	static { FluidRegistry.enableUniversalBucket(); }

cr7.png

9.代码部分结束,开始绘制材质(resources包)

在en_us.lang语言文件中添加游戏中物品名称
//fluid
fluid.virginis=Sanguis Virginis

10.在blockstates中添加virginis(你的流体名字).json文件

在文件中编辑流体方块的状态
{
	"forge_marker": 1,  //1表示是游戏中流体
	"variants": {
		"fluid": {
			"model" : "forge:fluid",
			"custom": { "fluid": "virginis" //这里写你的流体的名字}
		}
	}
}

11.在textures中添加两个.png文件一张图片是静止时的状态,一种是流动时的状态

cr8.png

同时我们还要定义两种图片的.mcmeta文件(流体流动动画文件(animation))
用记事本打开virginis_still.png.mcmeta 和 virginis_flow.png.mcmeta文件,复制下面的代码(两个文件代码一样)
{
	"animation":
	{
	     "frametime":4
	}
}

12.保存所有文件 -> 刷新项目 -> 运行游戏

在原版的水和岩浆(杂项物品栏)里最下面找到我们的流体

cr5.png

左边静态液体,右边流动液体,还不错吧~

今天的文章Minecraft 1.12.2模组进阶(二十四) 流体(Fluid)「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88213.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注