【教程】我的世界模组教程-声音系统
声明本教程中一些例子使用了酒石酸大大中的女仆模组中的代码内容,只在做出解释,侵删。
添加声音注册1234567891011121314public class ModSounds { public static final DeferredRegister<SoundEvent> SOUND_EVENT = DeferredRegister.create(Registries.SOUND_EVENT, FlansMod.MOD_ID); public static final Supplier<SoundEvent> ATTACK1 = registerSound("item.sv371_1_attack1"); private static Supplier<SoundEvent> registerSound(String name) { return SOUND_EVENT.register(name, () -> SoundEvent.createFixedR ...
【Minecraft-1-20-4-NeoForge-模组教程】04第一个方块
第一个方块在Minecraft中,如果你想添加一个新的方块,你需要创建一个新的Java类来代表这个方块。这个类需要继承自Block类,并使用Properties类来设置方块的一些属性,如硬度、爆炸抗性等。在下面的代码中,我们创建了一个名为RubyBlock的类,这个类代表了一个新的方块,它的属性与石头相似,但硬度更高。
12345678910package net.flandre923.examplemod.block.custom;import net.minecraft.world.level.block.Block;import net.minecraft.world.level.block.Blocks;public class RubyBlock extends Block { public RubyBlock() { super(Properties.ofFullCopy(Blocks.STONE).strength(5f)); }}
接下来,你需要注册这个新的方块,这样Minecraft才知道它的存在。这 ...
【Minecraft-1-20-4-NeoForge-模组教程】03自定义物品栏
自定义创造模式物品栏现在添加一个创造物品栏和添加一个物品类似,同样你需要创建一个CreativeModeTab注册器,以使用注册器注册一个CreativeModeTab。然后添加的IEventBus总线中。
添加的包路径如下
12345678910111213141516171819202122package net.flandre923.examplemod.item;public class ModCreativeTab {// 对应的注册器 public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ExampleMod.MODID);// 这个string是鼠标移动到tab上的显示的内容。 public static final String EXAMPLE_MOD_TAB_STRING = "creativetab.example_tab ...
【Minecraft-1-20-4-NeoForge-模组教程】02第一个物品
第一个物品我们需要继承原版得物品类,实例化这个物品类,之后把这个物品类添加到游戏中去。
对于在注册表中的很多类型,这样的添加方式是类似的。
12345public class RubyItem extends Item { public RubyItem(Properties pProperties) { super(pProperties); }}
很简单只有一个构造函数,构造函数传入一个item的属性即可。
这里的属性规定了是不是食物,堆叠数量,等内容。你可以进入到该类查看。
之后我们实例化物品注册器和使用注册器注册物品
123456789public class ModItems { public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(Registries.ITEM, ExampleMod.MODID); public static final Supplier<Item> ...
【新闻翻译】【neoforge】The Good,The Bad...And Fork
2023: The Good, The Bad… and The Fork现在,我们即将步入2024年,作为NeoForged团队,是时候回顾过去6个月里发生的事情了。
The Fork让我们先来谈谈房间里的大象:我们究竟是谁?
NeoForge 是 Minecraft Forge 项目的分支。它于 2023 年 7 月 12 日(提前)正式宣布,原 Forge 团队中几乎所有人都加入了 NeoForged,只有一个明显的例外:LexManos。
导致分支的原因有很多,最明显的是团队(尤其是triage团队)与管理层之间的分歧。一些次要的原因包括有自由去使用以及重构大部分内部结构和相关的基础,从模组API到模组加载系统。这些变化与 Forge 有着明显的分歧,Forge 历来对某些领域的变更持严格立场,通常反对大规模的重构,因此从一个“更干净”的起点开始会更容易。
The Good我们的团队已增加 6 名成员,但我们仍在寻找更多成员,例如存储库的维护人员。 (有兴趣吗?请填写我们的申请表进行 申请.)
自fork以来,我们一直致力于改进代码库的多个领域。例如,我们重写了 Gradle ...
【新闻翻译】Neoforge-网络重构
引言重构网络欢迎阅读NeoForge重做网络的博客文章,这些更改在NeoForge 20.4.70-beta及更高版本中可用。文章将描述NeoForge的更改,以启用由Fabric的维护者Modmuss50设计的配置网络协议,并进行了一些小的修改。我将在下面分享更多相关信息。
SimpleChannel和EventChannelForge有两种不同的方法来实现自定义网络通道。一种简单的基于注册的方法称为SimpleChannel,而一种为每个接收到的数据包触发事件的系统称为EventChannel。为了简化API并使与新数据包布局的交互更加容易,决定将这两种实现重构成一个单一的系统,结合两者的优点。
实现新的网络有效载荷处理该系统基于 Mojang 使用的 CustomPacketPayload 定义来表示自定义数据包的内容。在内部,他们将主要用于调试的自定义有效载荷注册到一个映射表中。我们需要扩展这个映射表,以便模组制作者可以发送和接收 CustomPacketPayload 的自定义实现。这是重写工作的大部分内容。模组制作者可以通过在 RegisterPayloadHandlerE ...
The Capability rework翻译
介绍我们最初的[20.3版本](NeoForge 20.3 for Minecraft 1.20.3 and 1.20.4 - The NeoForged project)对功能系统进行了根本性的重新设计,目标是修复经过多年使用后在上一次迭代中发现的所有问题。
最重要的是,现在有两种不同的系统来取代以前所谓的“capabilities”:
Data attachments允许将任意数据添加到block entities, chunks, entities, and item stacks.
Capabilities 允许从blocks, entities, and item stacks中查询行为实例。
Data attachments附加系统允许mods将任意数据对象附加到 block entities, chunks, entities, and stacks.
要使用该系统,您需要注册 AttachmentType 。附件类型包含:
一个默认值提供者,用于在第一次访问数据时创建实例,或者比较有数据的堆栈和没有数据的堆栈;
可选的序列化程序(如果附件应该持久化);
att ...
NeoForge 20.3 for Minecraft 1.20.3 and 1.20.4 翻译
NeoForge 20.3 for Minecraft 1.20.3 and 1.20.4原文The Capability rework - The NeoForged project
注意:渣译,如果有错误请指正
随着Minecraft 1.20.4热修复版本的最近发布,我们将不再支持1.20.3版本,并鼓励所有模组开发者更新到NeoForge 20.4。此处提到的未来计划没有变化,但目标版本将调整为20.4而不是20.3。Minecraft 1.20.3版本的NeoForge的第一个测试版,NeoForge 20.3.1-beta现已发布!请尝试使用它,与之互动,开发,并给我们反馈!我们目前还不稳定,所以在接下来的几周内可能会遇到一些重大变化。对于玩家来说,您可以直接从https://neoforged.net/获取最新的安装程序。这篇博客的其余部分是针对模组开发者的。让我们来谈谈模组开发者应该注意的NeoForge最近的更新,这些更新与迁移到20.3有关。Minecraft 1.20.3本身也带来了一些技术上的变化,但这些内容将不会在本帖中介绍。
Capability 重做能 ...
【Minecraft-1.20.4-NeoForge-模组教程】15附魔
与附魔相关的类Enchantment 类是附魔系统的抽象基类,用于定义和创建游戏中的附魔。每个附魔都会影响游戏中的实体或物品,例如提供额外的伤害、防御或特殊效果。该类实现了 IEnchantmentExtension 接口,以支持扩展附魔功能。
slots:附魔适用的装备槽数组。rarity:附魔的稀有度。category:附魔的类别,通常控制附魔可以应用到的物品类型以及在哪个创造模式标签下显示。descriptionId:附魔的描述ID,通常用于创建本地化键。builtInRegistryHolder:内置注册表持有者,用于存储附魔实例。
byId(int pId):静态方法,通过内部数字ID从注册表中获取附魔。getSlotItems(LivingEntity pEntity):获取实体装备在附魔关心slots中的所有物品。getRarity():获取附魔的稀有度。getMinLevel():获取附魔的正常情况下的最小等级。getMaxLevel():获取附魔的正常情况下的最大等级。getMinCost(int pLevel):返回附魔在给定等级下的最小附魔能力值。getMaxCo ...
【Minecraft-1.20.4-NeoForge-模组教程】01环境搭建
安装Java 和 IDEA(略过)Latest Releases | Adoptium
Download IntelliJ IDEA – The Leading Java and Kotlin IDE (jetbrains.com)
下载MDK
2.点击code,下载zip
解压解压压缩包,我这里还换了个文件夹的名称
构建用Idea打开文件夹。等待build完成。
构建完成
运行运行此task获得idea的配置
选中run client 启动
正常启动游戏
配置模组信息调整包结构
调整类的内容
ExampleMod
1234567891011121314151617181920212223242526272829303132333435package net.flandre923.examplemod;import com.mojang.logging.LogUtils;import net.neoforged.api.distmarker.Dist;import net.neoforged.bus.api.IEventBus;import net.neoforged.b ...