我的世界1.20.1forge开发教程(6)——自定义燃料,熔炼规则、配方

news/2025/2/23 1:24:48

配方篇

在Minecraft中,配方代码是用于定义合成配方的一种数据格式。在开发者的角度,配方代码通常以JSON格式编写,包含了合成所需的原料、合成产物以及合成方式等信息。

在1.12版本之前,开发者需要通过修改游戏的源代码来添加自定义配方。这通常需要对游戏的Java代码进行修改,以及添加新的合成逻辑和图形界面。

而在1.12版本之后,Minecraft引入了更加灵活和易用的自定义配方系统。开发者可以通过JSON文件来定义新的合成配方,然后将这些文件放置在资源包中,游戏会自动加载这些配方文件并添加到合成表中。

Minecraft中的配方机制指的是玩家可以通过合成台使用玩家所拥有的原材料来合成新的物品。配方机制可以通过合成表来查看,玩家可以通过了解配方来制作各种物品和方块。自定义配方的添加则为玩家和开发者提供了更多的自定义和玩法扩展的可能性。

新建燃料

这里我们新建一个超级烈焰粉作为我们的自定义燃料,在物品类里写入如下代码:

    public static final RegistryObject<Item> SUPER_BLAZE_POWDER = ITEMS.register("super_blaze_powder",
            () -> new Item(new Item.Properties().fireResistant().rarity(Rarity.UNCOMMON)));

新建熔炼规则 

@Mod.EventBusSubscriber(modid =MODID)
public class ModEvents {
    @SubscribeEvent
    public static void onFuelCheck(FurnaceFuelBurnTimeEvent event) {
        if (event.getItemStack().getItem() == items.SUPER_BLAZE_POWDER.get()) {
            event.setBurnTime(4000); // 设置自定义燃料的燃烧时间
        }
    }
}

这段代码是一个基于Minecraft Forge模组开发框架的事件处理器类。让我们逐行解释每部分的功能:

  1. @Mod.EventBusSubscriber(modid = MODID):这是一个注解,表示这个类是一个Mod事件总线订阅类,在该类中定义的方法将会自动注册到Mod的事件总线中。其中modid是一个指定Mod标识符的参数。

  2. public class ModEvents { :定义了一个名为ModEvents的Java类。

  3. @SubscribeEvent:这是一个注解,表示下面的方法将会订阅事件。

  4. public static void onFuelCheck(FurnaceFuelBurnTimeEvent event) { :定义了一个名为onFuelCheck的静态方法,接受一个FurnaceFuelBurnTimeEvent类型的参数event。当熔炉燃料烧尽时间事件发生时,该方法会被调用。

  5. if (event.getItemStack().getItem() == items.SUPER_BLAZE_POWDER.get()) { :通过判断事件中的物品堆栈(ItemStack)的物品是否为SUPER_BLAZE_POWDER来确定是否符合条件。

  6. event.setBurnTime(4000);:如果事件中的物品是SUPER_BLAZE_POWDER,则将该物品的燃烧时间设置为4000。

综上,这段代码的功能是在熔炉燃料烧尽时间事件发生时检查物品堆栈,如果堆栈中的物品是SUPER_BLAZE_POWDER,则将其燃烧时间设置为4000,以实现自定义燃料的燃烧时间。

配方文件生成器 

上述的SUPER_BLAZE_POWDER就是我们的自定义燃料,像往常那样注册即可,不会的看之前发的内容。基于data generator的配方生成器

public class RecipeGenerator extends RecipeProvider {
    public RecipeGenerator(DataGenerator generator) {
        super(generator.getPackOutput());
    }
    @Override
    protected void buildRecipes(Consumer<FinishedRecipe> consumer) {
        SimpleCookingRecipeBuilder.smelting(
                        Ingredient.of(Items.NETHERITE_SWORD),
                        RecipeCategory.COMBAT,
                        items.FLAME_SWORD.get(),
                        0.0f, // 原版经验设为0
                        600   // 需要3个燃料(600/200=3)
           

http://www.niftyadmin.cn/n/5862900.html

相关文章

【.NET全栈】.NET包含的所有技术

文章目录 前言一、基础框架与语言1、.NET Framework2、编程语言 二、Web开发技术1、ASP.NET2、Blazor3、SignalR 三、桌面与移动开发技术1、Windows Forms&#xff08;WinForms&#xff09;2、Windows Presentation Foundation&#xff08;WPF&#xff09;3、Xamarin4、.NET MA…

AI提示词进阶:RTGO与CO-STAR框架实战指南

掌握提示词设计是解锁AI生产力的关键。本文将深入解析两大顶尖框架RTGO与CO-STAR&#xff0c;通过程序员视角拆解技术原理&#xff0c;配合真实案例演示如何根据场景精准选型。 一、框架定位与技术特性对比 维度RTGO框架CO-STAR框架架构四层递进式结构六维网状结构响应速度0.8…

go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值

内容包括 1. 用interface{}接收值 2. 判断interface{}的类型 switch 3. 打印interface{}的类型 4. 通过字符串对结构体&#xff0c;interface{}等进行设置值、获取值处理 示例代码 package mainimport ("fmt""log""reflect" )type Student…

MYSQL-数据库-DDL-DML-DQL-DCL-基础学习

MySql概念&#xff1a; 建立在关系模型基础上&#xff0c;有多张相互连接的二维表组成的数据库 SQL通用语法&#xff1a; 1.SQL语句可以单行或多行书写&#xff0c;以分号结尾 2.SQL语句可以使用空格/缩进来增强语句的可读性 3.MySQL数据库的SQL语句不区分大小写&#xff0c;关…

基于FPGA的制冷型红外成像电路设计(论文+图纸)

1.总体设计 对于本次课题基于FPGA的制冷型红外成像电路设计&#xff0c;其主要包括两个功能&#xff0c;第一就是红外图像的显示&#xff0c;第二就是红外图像中各点温度的测量。首先对于红外图像的显示来说&#xff0c;一般根据红外探测器根据阵列的大小可以显示出不同的清晰度…

深入理解 Rust 的 `Rc<T>`:实现多所有权的智能指针

一、为什么需要多所有权&#xff1f; 通常&#xff0c;我们习惯于每个值只有一个所有者&#xff0c;这样编译器在值离开作用域时就能自动释放资源。然而&#xff0c;在某些数据结构中&#xff0c;一个节点可能会被多个其他结构同时引用——比如图结构中的节点或共享链表的一部…

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天机器人功能&#xff0c;可以与用户进行自然语言交互&#xff0c;回答问题、提供建议和帮助解决问题。DeepSeek 的特点包括&#xff1a; 强大的语言理解能力&#xff1a;能够理解和生成自然语言&#xff0c;与用户进行流畅的对话。多领域知识&…

MySQL日常维护工具------备份

MySQL日常维护工具-备份 一、MySQL字符集 &#xff08;一&#xff09;字符集介绍 字符(Character)是各种文字和符号的总称&#xff0c;包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合&#xff0c;字符集种类较多&#xff0c;每个字符集…