当前位置:首页 > CN2资讯 > 正文内容

我的世界怎么用java写mod

8小时前CN2资讯

介绍

  在游戏中添加方块的方法和之前添加物品的方法类似,都是先通过DeferredRegister.create方法获取对应类型的注册表,然后再把对应的方块添加到注册表中,最后在Mod事件总线上添加该注册表即可。但是由于是方块,会有一些地方和物品不太一样的地方。添加一个方块要分别注册方块方块对应的物品,前者是可以放置在游戏中的实体方块,后者是可以通过一些指令获得或者参与合成用的方块物品,注册方块物品的方法就是前面的注册物品的方法,添加方块后我们还可以为方块设置一些属性,例如方块的硬度、破坏是否获得经验、掉落物是什么之类的属性。由于大部分和添加物品的步骤差不多,下面直接上代码部分了解。

  代码

  我们创建一个ModBlocks类来管理我们添加的方块。

package com.hmy.test1mod.block; import com.hmy.test1mod.Test1Mod; import com.hmy.test1mod.block.custom.JumpBlock; import com.hmy.test1mod.item.ModItems; import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class ModBlocks { //获取方块注册表 public static final DeferredRegister<Block>BLOCKS= DeferredRegister.create(ForgeRegistries.BLOCKS, Test1Mod.MOD_ID); //用我们封装好的方法注册方块和对应物品,第一个参数为方块名字,第二个参数为Block对象 public static final RegistryObject<Block>BLUE_BLOCK=registryBlock("blue_block", ()->new Block(BlockBehaviour.Properties.of()//创建一个空属性 .strength(1.5F, 6.0F)//设置硬度和爆炸防护强度 )); //添加这个方块对应的矿石 public static final RegistryObject<Block>BLUE_ORE=registryBlock("blue_ore", //返回一个掉落经验的方块 ()->new DropExperienceBlock(BlockBehaviour.Properties.of()//创建一个空属性 .strength(1.5F, 3.0F)//设置硬度和爆炸防护强度 ,UniformInt.of(1, 2)));//设置经验值掉落范围 //自定义注册方法方法,因为要同时注册方块和方块对应的物品,就写在一起了 private static <T extends Block> RegistryObject<T> registryBlock(String name, Supplier<T>block){ RegistryObject<T>toReturn= BLOCKS.register(name,block);//注册方块 registerBlockItem(name,toReturn);//注册对应物品 return toReturn; } //把方块对应的物品注册的Item注册表上 private static <T extends Block> RegistryObject<Item> registerBlockItem(String name,RegistryObject<T> block){ return ModItems.ITEMS.register(name,()->new BlockItem(block.get(),new Item.Properties())); } //添加注册 public static void register(IEventBus eventBus){ BLOCKS.register(eventBus); } }

  由于注册方块时还要注册对应的物品,所有专门写了一个方法,用来同时注册 方块及对应的物品。创建方块时,我们使用了BlockBehaviour.Properties.of()来创建了一个方块的空属性,之后我们可以用链式编码的方式继续在后面设置我们想要的属性,也可以直接用BlockBehaviour.Properties.copy(BLOCKS.STONE)方法先复制原版某个方块的属性,在此基础上修改我们需要的属性,具体有哪些属性可以去源码看看原版怎么写的,这里不在过多赘述。

  上面的代码中添加的第二个方块是DropExperienceBlock类的方块,字面意思不难看出这是破坏掉落经验的方块,有很多类似这样的类都继承于Block类,实现了各种各样的方块,大家可以根据需要去源码里看一下,都有哪些方块。不同的方块类创建时有不同的参数需要传递,下面以DropExperienceBlock类的方块为例。

//第一个参数为方块的属性,第二个参数为掉落的经验值的范围 public DropExperienceBlock(BlockBehaviour.Properties pProperties, IntProvider pXpRange) { super(pProperties); this.xpRange = pXpRange; }

  第一个参数就是正常的方块属性,和前面的写法一样,第二个参数我们是设置经验掉落的范围,我们可以传入他所需要类型的一个子类UniformInt类,使用其中的of方法可以返回一个设置好最大者最小值的该类,类似于这样UniformInt.of(1, 2),这样就设置了方块破坏时掉落经验为1-2点之间。

  然后就要把方块添加到我们的创造模式物品栏中,在ModCreativeModeTab类中照着之前的添加物品方法添加方块即可。

pOutput.accept(ModBlocks.BLUE_BLOCK.get()); pOutput.accept(ModBlocks.BLUE_ORE.get());

  最后在我们的Test1Mod主类中向Mod事件总线添加方块注册表即可。

ModBlocks.register(modEventBus);//添加方块注册表到Mod事件总线

   以上步骤完成后,我们就把对应的方块以及物品都添加完成了,后面需要设置相应的json文件,我们这里同样采用自动生成的方式生成json文件,具体的步骤将在3.数据生成文章中具体介绍,这里不再过多说明。

  

  注意:这里放置贴图的位置一定要按照要求放到指定的文件夹下,贴图的名称也要和你设置物品或方块的name属性值一样出来特别标注的要注意一下,其他的都要和图中的结构和命名一样,不然可能无法找到贴图。

 

 



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/31792.html

    分享给朋友:

    “我的世界怎么用java写mod” 的相关文章

    购买DNS解锁服务器的最佳选择与配置指南

    在当今的信息时代,获取我们想要的内容常常并不像想象中那样简单。很多流媒体服务在不同地区的可用性有所限制,这使得我们在享受内容时常常受到阻碍。这时候,DNS解锁服务器就成为了解决这个问题的有效工具。DNS解锁技术通过修改服务器上的DNS设置,可以帮助用户突破地理限制,顺利访问各种国际流媒体服务。 我刚...

    甲骨文云的永久免费服务:开发者的理想选择

    在现代云计算的环境中,甲骨文云(Oracle Cloud)作为一种强有力的云计算服务,凭借其永久免费服务吸引了许多用户。回想我初次接触甲骨文云时,正是被它提供的多种Always Free服务所吸引,比如我可以免费使用2个实例和20GB的存储空间。这让我在学习和开发上有了更加广阔的可能性,不用担心一开...

    Rndc2的线路怎么样?全面评测RackNerd洛杉矶DC02机房

    Rndc2的基本线路信息 说到Rndc2的线路,首先让我跟大家分享一下它的基本信息。这个线路的核心在于RackNerd洛杉矶DC02机房,位置恰好在美国西海岸的洛杉矶。成立于2019年的RackNerd,以其价格优势著称,给我们提供了比较便宜的美国VPS选择,最低年付大约10美元,这对于很多希望节省...

    全面VPN测评:如何选择最适合你的虚拟私人网络服务

    VPN测评是评估虚拟私人网络(VPN)服务质量的一种方法。对我而言,了解VPN测评极为重要,因为它能帮助我做出明智的选择,以确保在使用互联网时的隐私和安全。VPN测评通常涉及多个方面,包括用户评价、性能测试和专业评测。 每个人使用VPN的需求都不尽相同,这就需要从不同的角度来分析VPN服务的优劣。用...

    Vultr DD Windows安装教程:轻松一步到位

    在云计算越来越流行的今天,Vultr作为一个强大的云服务提供商,吸引了大量用户。对于想在Vultr服务器上安装Windows的用户来说,使用DD命令是一种非常便利的方法。接下来,我将为你详细介绍如何通过这一方式在Vultr上安装Windows。 1.1 使用DD命令直接安装Windows 1.1.1...

    台湾VPS:选择高效、安全、性价比优越的虚拟专用服务器

    在当今互联网时代,VPS(虚拟专用服务器)成为了很多用户在选择网络服务时的热门选择。在我看来,VPS的定义可以说是一个虚拟化的服务器,用户能够以相对较低的成本获得类似于物理服务器的管理权和资源使用权。VPS通常被用于搭建网站、管理应用程序、进行数据存储等多种场景,尤其是对资源有较高要求的用户而言,它...