Minecraft 1.19.2 Forge模组开发 07.拼图建筑(jigsaw)

news2025/1/18 19:03:43

如果你看过之前的Minecraft 1.19.2建筑生成的话,想必会更好理解这篇教程。

cr0.gif
效果演示 效果演示 效果演示

1.我们本期准备生成的建筑分为4块,所以首先需要用4个结构方块将整个建筑包括起来:

ccr.jpg

2.之后我们需要用指令拿出拼图方块:

give @p minecraft:jigsaw

我们需要对拼图顺序做一个大致的设计:

cr1.png

来到1、2的衔接点,将我们的结构方块摆放如下:

2022-05-30_13.48.05.png

右键建筑1的结构方块,在该方块中输入如下信息:

建筑1要找到建筑2拼图,所以它的Target PoolTarget Name中要是建筑2的名称。
crk.jpg

右键建筑2的结构方块,在该方块中输入如下信息:

建筑2只需要被建筑1找到,不需要找别的建筑。所以它没有Target,只有自己的名字,和建筑1的Target Name一样。
crl.jpg

同理,我们把另外两个衔接点都给完成。

我们将所有的衔接工作搞完后,将所有的建筑保存为.nbt文件:

crm.jpg

3.在你的地图存档中的generated\minecraft\structures下找到所有的.nbt文件,存放到resources\data\re8joymod\structures路径下:

cr5.png

4.之后来到数据包制作:

cro.jpg
项目结构 项目结构 项目结构

和之前一样,在data\你的modid\tags\worldgen\biome\has_structure中新建文件说明我们的建筑在哪些生态群系生成:

bene_house.json

{
  "replace": false,

  "_comment": " This biome tag can specify the biome directly. Or specify another biome tag by starting with # ",
  "values": [
    "minecraft:plains",
    "re8joymod:re8_ehills_biome"
  ]
}

data\你的modid\worldgen\structure中新建文件,说明你的建筑内生成什么生物

bene_house.json

{
  "type": "minecraft:jigsaw",
  //起始生成建筑
  "start_pool": "re8joymod:bene_house/start_pool",
  //这个是指从我们中心处可以往外延伸几个建筑
  "size": 2,
  "max_distance_from_center": 100,
  //建筑在什么群系生成,对应上面的has_structure中的文件名称
  "biomes": "#re8joymod:has_structure/bene_house",
  "step": "surface_structures",

  "start_height": {
    "absolute": 0
  },

  "project_start_to_heightmap": "WORLD_SURFACE_WG",
  "use_expansion_hack": false,
  //建筑物内生成的生物
  "spawn_overrides": {
    "creature": {
      "bounding_box": "piece",
      "spawns": [
        {
          "type": "minecraft:bat",
          "weight": 1,
          "minCount": 1,
          "maxCount": 4
        }
      ]
    }
  }
}
注:上面的size可以用3维宽度优先搜索来解释:

crn.jpg

你的建筑会从中心结构朝着上下左右前后共6个方向延伸,延伸的次数就是这个size

data\你的modid\worldgen\structure_set中新建文件,说明你的建筑生成间距、建筑生成id等内容:

bene_house.json

{
  // What structures to pick to try and spawn if a spot passes the placement check.
  // If two or more structures in this list can spawn in a biome at a spot, a random one based on weight is chosen to spawn
  "structures": [
    {
      "structure": "re8joymod:bene_house",
      "weight": 1
    }
  ],
  "placement": {
    // Make sure this is unique and does not match any other structure set's salt
    //找一个介于int间的数,不要和其他的建筑一样
    "salt": 36694,

    // The average distance apart in chunks for spawn attempts
    //平均几个区块的距离生成一个这种建筑
    "spacing": 24,

    // Minimum distance apart in chunks for spawn attempts
    // MUST ALWAYS BE SMALLER THAN spacing ABOVE
    "separation": 20,

    // The kind of placement to use. The other kind is ring based like strongholds use.
    "type": "minecraft:random_spread"
  }
}

resources\data\re8joymod\worldgen\template_pool中新建我们的建筑文件夹bene_house,将我们第2步中定义的建筑新建出来:

cr6.png
我们的建筑1作为整个大型建筑的开头,需要命名为start_pool
start_pool.json

{
  //作为建筑的start_pool
  "name": "re8joymod:bene_house/start_pool",

  "fallback": "minecraft:empty",

  "elements": [
    {

      "weight": 1,
      "element": {

        //第3步中我们第一个建筑保存的名称
        "location": "re8joymod:bene_house",

        "processors": "minecraft:empty",


        "projection": "rigid",


        "element_type": "minecraft:single_pool_element"
      }
    }
  ]
}

第二个建筑作为拼图,命名为side_pool2

side_pool2.json

{
  //建筑2作为拼图,命名为side_pool2
  "name": "re8joymod:bene_house/side_pool2",
  "fallback": "minecraft:empty",
  "elements": [
    {
      "weight": 1,
      "element": {

        //第3步中我们第2个建筑的名称
        "location": "re8joymod:bene_house2",
        "processors": "minecraft:empty",
        "projection": "rigid",
        "element_type": "minecraft:single_pool_element"
      }
    }
  ]
}

第三个、第四个同理:

side_pool3.json

{
  "name": "re8joymod:bene_house/side_pool3",
  "fallback": "minecraft:empty",
  "elements": [
    {
      "weight": 1,
      "element": {


        "location": "re8joymod:bene_house3",
        "processors": "minecraft:empty",
        "projection": "rigid",
        "element_type": "minecraft:single_pool_element"
      }
    }
  ]
}

side_pool4.json

{
  "name": "re8joymod:bene_house/side_pool4",
  "fallback": "minecraft:empty",
  "elements": [
    {
      "weight": 1,
      "element": {


        "location": "re8joymod:bene_house4",
        "processors": "minecraft:empty",
        "projection": "rigid",
        "element_type": "minecraft:single_pool_element"
      }
    }
  ]
}

5.保存所有文件 -> 运行游戏

如果你能在你第4步中定义的生态群系里找到你的建筑,就说明你成功了!!!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93334.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——Java实现递归、迷宫回溯问题、八皇后问题

目录 一、递归 1.1 介绍递归 二、迷宫回溯问题 2.1 代码实现 三、八皇后问题 3.1 基本介绍 3.2 分析思路 3.3 代码实现 一、递归 1.1 介绍递归 简单的说:递归就是方法自己调用自己,每次传入不同的变量。 递归有助于编程者解决复杂的问题&#x…

Efficient Zero-shot Event Extraction with Context-Definition Alignment论文解读

Efficient Zero-shot Event Extraction with Context-Definition Alignment code:tencent-ailab/ZED: This is the repository for EMNLP 2022 paper “Efficient Zero-shot Event Extraction with Context-Definition Alignment” (github.com) paper:…

【手把手】分布式定时任务调度解析之Elastic-Job

1、这货怎么没怎么听过 经常使用Quartz或者Spring Task的小伙伴们,或多或少都会遇到几个痛点,比如: 1、不敢轻易跟着应用服务多节点部署,可能会重复多次执行而引发系统逻辑的错误; 2、Quartz的集群仅仅只是用来HA&…

业主应该重视装修中的“道”而不是“术”!极家精工装修好不好!

业主应该重视装修中的“道”而不是“术”!极家精工装修好不好!看了很多业主问了很多关于装修中很琐碎的事儿,比如“装修流程”、“装修应该注意什么”、“装修哪些必须要重视”、“某某材料和某某材料相比哪个好”、“家里装了什么是你最不后…

Lua中的基本数据类型

Lua中的数据类型一、Lua基本数据类型1.1、nil1.2、boolean1.3、number1.4、string1.5、function1.6、table二、Lua 通用数据结构的实现总结后言Lua是一门动态类型的脚本语言,这意味着同一个变量可以在不同时刻指向不同类型的数据。Lua代码中 一般采用一下两种做法相…

Dubbo-admin+Zookeeper 的环境搭建实操与 Could-not-extract-archive 报错踩坑

$ brew install zookeeper > Downloading https://homebrew.bintray.com/bottles/zookeeper-3.4.13.mojave.bottle.tar.gz ...先来看dubbo-admin的安装;我们先找到它在apache下的官方GitHub,官方也有相关介绍,中英文版都有(毕竟原本是中国…

[附源码]Node.js计算机毕业设计高校学科竞赛管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Kibana使用

简介 Kibana是通向 Elastic 产品集的窗口。 它可以在 Elasticsearch 中对数据进行视觉探索和实时分析。 Kibana通常用于项目log日志收集分析、数据可视化分析等。 一、【Discover】搜索查询 Discover模块用于全文搜索文档(doucument),支持索引筛选、时间筛选、字段筛选、支持…

linux下syslog使用说明

syslog 系统日志应用 1) 概述 syslog是Linux默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。 几乎所有的…

读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记1

上面3图是书中MySQL帮助的使用小节; 实测: 我用DATE_FORMAT(date,format)函数的时候经常会记不清格式化的字符是啥,这个时候我会去求助度娘,然后从零散的帖子里找一个合适的,测试一下可用,就拿来用了,但没法马上找到一个比较完整系统一点的帖子,从看此书本章节,可知使用MySQL的…

acm是什么?你准备好去打了吗?

1.引言2.acm究竟是什么?3.acm的时间安排重点网络赛的作用1.名额分配2.校内选拔icpc省赛省赛选拔赛(校内)4.acm该如何准备1.前期的算法积累1.Acwing 平台算法基础课 -y总业界良心。算法提高课 基本囊括了蓝桥杯的知识范畴算法进阶课(选) 算法中…

MYSQL 8.0 -- 事务中删除不存在的记录导致死锁

最近开发的某个功能中,线上偶尔会爆出死锁异常。再大佬同事的帮助下,最终排查出了原因,在此记录一下。 文章目录业务描述事务中删除行时锁的表现场景重现问题处理业务描述 在业绩信息维护中,可以维护相关人员列表,相关…

谁再问我 Kafka,我把这 43 张图甩给他

从Kafka诞生的早期,我就对Kafka投入了很多的关注,虽然不敢说精通Kafka, 但也算是非常熟悉了。 平时在工作之中,几乎天天都在跟这玩意儿打交道,在面试的时候,也会经常聊一些Kafka相关的内容。 Kafka 是一个优秀的分布…

二苯并环辛炔-二硫键-马来酰亚胺,DBCO-SS-Maleimide,DBCO-SS-Mal

基础产品数据(Basic Product Data): CAS号:N/A 中文名:二苯并环辛炔-二硫键-马来酰亚胺 英文名:DBCO-SS-Maleimide,DBCO-SS-Mal 详细产品数据(Detailed Product Data)&am…

C++--数据结构--并查集--高阶0711

1. 并查集 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个 单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一 个元素归属于那个集合的运算。适合于描述这类问…

如何使用Python批量化处理Excel——零基础入门指南

本教程旨在帮助零编程基础,但是又有“批量化处理Excel表”这种需求的大家。 在进入教程时,请确保你具有以下资质: 1、 并非工作压到头上了,急需解决一批表所以想过来速成,而是愿意耐心花上几个小时学习来获得一项长久…

Redis之相关拓展(事务、监控、Jedis)

Redis之相关拓展一、事务1、介绍2、流程3、shell命令3.1 开启事务3.2 放弃事务3.3 编译型异常(代码有问题,命令有错)3.4 运行时异常二、监控(watch)1、锁1.1 悲观锁1.2 乐观锁2、注意2.1 原理2.2 流程三、Jedis1、简介…

学习Opencv不得不掌握的操作

OpenCV基本操作 1 图像的IO操作 这里我们会给大家介绍如何读取图像,如何显示图像和如何保存图像。 1.1 读取图像 API cv.imread() 参数: 要读取的图像读取方式的标志cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将…

C++ Primer笔记——explicit、string流、vector比较、emplace

目录 一.P265 抑制构造函数定义的隐式转换 二.P287 string流 三.P304 vector的比较 四.P307 在容器中特定位置添加元素 一.P265 抑制构造函数定义的隐式转换 举个例子,如果构造函数参数是string类型,那么当使用赋值符号进行初始化操作时&#xff0c…

leetcode -- ⽤最少数量的箭引爆⽓球(452)

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一…