跳到正文

Revelationary

作者:DaFuqs

数据驱动的方块与物品发现系统,边玩边探索!

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

概述

数据驱动的方块与物品揭示系统。随着探索逐步发现!

Revelationary 通过数据包或 API(供其他模组使用)为世界中新方块的发现提供了一种门控方式。
使用 Revelationary,你可以设计整合包/模组的进度,让玩家在开始新的游戏流程时不会感到不知所措。只有当玩家解锁了特定的进度时,他们才能感知到这些世界生成方块,使方块对他们可见。

示例:
玩家将某种特定的矿石视为石头。当他们击败末影龙后,就能在世界中看到并开采你的矿石——它从一开始就一直在那里。对每位玩家独立生效,且性能非常出色。

揭示

“揭示是某种真相或知识的显露或公开”

如果你是进度导向模组或整合包的设计者,那么你来对地方了。

借助 Revelationary,你可以使用数据包或 Revelation API,随着玩家的进度逐步揭示世界中的方块。一处看似填满普通石头的裂隙,可能会在玩家击败 Boss 或达到重要里程碑时,显露出充满生机与矿石的真面目。

只要玩家尚未具备必要的进度,你通过 API 或数据包在 Revelationary 中注册的方块和物品就只会显示为隐晦的名称;对于世界中的方块,它们会掉落与其伪装方块相同的掉落物,从而为玩家提供无缝的体验,而不会被大量在游戏初期无法使用的不明资源所淹没。相反,你可以只在需要时引入资源。

限制

除了外观和掉落物之外,伪装方块会保留原始方块的所有属性:碰撞箱、光线是否穿透以及其他一切。在寻找合适的伪装候选方块时请记住这一点。你的矿石最完美的伪装是石头或深板岩,因为它们有许多相似之处。同样,你可以用虞美人来伪装你难以寻觅的植物:两者都有较小的碰撞箱,玩家可以从中穿过。

如果你是程序员,你可以使用 Revelation API 根据方块对玩家是否可见来动态更改其属性。这样你甚至可以把你的花伪装成空气:在伪装状态下给它一个空的碰撞箱,玩家在能看到它们之前甚至可能不知道它的存在!

在 Revelationary 的 wiki 中可以找到大量数据包与 API 的示例:https://github.com/DaFuqs/Revelationary/wiki

通过数据包注册揭示

必须放置在文件夹 resources/data/<<mod_id>>/revelations 中

{
  "advancement": "spectrum:milestones/reveal_quitoxic_reeds",
  "block_states": {
    "minecraft:grass": "minecraft:beacon",
    "minecraft:tall_grass": "minecraft:obsidian",
    "minecraft:tall_grass[half=upper]": "minecraft:netherite_block"
  },
  "items": {
    "minecraft:nether_star": "minecraft:gunpowder"
  }
}

注册“感知揭示”的方块或物品

public class CloakedItem extends Item implements RevelationAware {
	
	Identifier cloakAdvancementIdentifier;
	Item cloakItem;
	
	public CloakedItem(Settings settings, Identifier cloakAdvancementIdentifier, Item cloakItem) {
		super(settings);
		this.cloakAdvancementIdentifier = cloakAdvancementIdentifier;
		this.cloakItem = cloakItem;
		
		registerCloak();
	}
	
	@Override
	public Identifier getCloakAdvancementIdentifier() {
		return cloakAdvancementIdentifier;
	}
	
	@Override
	public Hashtable<BlockState, BlockState> getBlockStateCloaks() {
		return new Hashtable<>();
	}
	
	@Override
	public Pair<Item, Item> getItemCloak() {
		return new Pair<>(this, cloakItem);
	}
	
	@Override
	public void onCloak() { }
	
	@Override
	public void onUncloak() { }
	
}

在揭示发生时注册回调

RevelationHolder.registerRevelationCallback(new RevelationHolder.UncloakCallback() {
    @Override
    public void trigger(List<Identifier> advancements, List<Block> blocks, List<Item> items) {
        for(Block block : blocks) {
            if(Registry.BLOCK.getId(block).getNamespace().equals(MOD_ID)) {
                ...
                <我不知道。比如显示一个弹窗之类的。你来告诉我>
                ...
                break
            }
        }
    }
});

Discord

你会在 Spectrum 的 Discord 上找到很多乐于助人的人。周围总是有友好且愿意帮忙的人。如果你愿意,也来逛逛吧!

https://discord.com/invite/EXU9XFXT8a

常见问题

Revelationary 支持哪些 Minecraft 版本?

Revelationary 支持 Minecraft Java 版 1.18.2–26.2,共 19 个版本,可用的加载器:Fabric / NeoForge / Quilt。下载时注意选择和你游戏版本一致的文件。

Revelationary 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge / Quilt,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

DaFuqs 的其他作品

查看全部 →