数据驱动的方块和物品揭示系统。边游玩边发现!
Revelationary 提供了一种通过数据包或 API(供其他模组使用)来限制世界中新方块发现方式的方法。
使用 Revelationary,你可以以一种让玩家在开始新周目时不会感到信息过载的方式来设计你的整合包 / 模组进程。只有当玩家解锁了特定进度后,他们才能感知这些世界生成方块,使这些方块对他们可见。
示例:
玩家会把某种特定矿石看成石头。当他们击败末影龙后,就能在世界中看到并开采你的矿石——其实它从一开始就在那里了。该效果对每位玩家单独生效,而且性能非常优秀。
“[a] revelation is the revealing or disclosing of some form of truth or knowledge”
如果你是一个基于进程设计的模组或整合包作者,那你来对地方了。
借助 Revelationary,你可以使用数据包或 Revelation API,随着玩家推进进度,逐步揭示世界中的方块。原本只是被普通石头填满的裂隙,可能会在玩家击败 Boss 或达成重要里程碑后,显现出其中充满生机与矿石的真实样貌。
只要玩家还没有达到所需进度,你通过 API 或数据包向 Revelationary 注册的方块和物品就只会显示神秘名称;而对于世界中的方块,它们还会掉落与其伪装方块相同的掉落物。这样可以在不让玩家一开始就被大量无法使用的未知资源淹没的前提下,提供流畅自然的游玩体验。相反,你可以在真正需要时再引入这些资源。
除了视觉效果和掉落物之外,伪装后的方块会保留原始方块的所有属性:碰撞箱、是否透光以及其他一切特性。在寻找合适的伪装对象时请牢记这一点。对于你的矿石来说,完美的伪装可能是石头或深板岩,因为它们在很多方面都很相似。类似地,你也可以把你那难以察觉的植物伪装成罂粟:两者都有较小的碰撞箱,而且玩家都可以穿过它们。
如果你是程序员,你可以使用 Revelation API 根据方块对玩家是否可见来动态更改方块属性。这样你甚至可以把你的花伪装成空气:在伪装时给予它空碰撞箱,玩家可能根本不知道它在那里,直到他们能够看见它们!
在 Revelationary 的 wiki 中可以找到大量数据包和 API 示例:https://github.com/DaFuqs/Revelationary/wiki
必须放置在文件夹 resources/data/>/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 getBlockStateCloaks() {
return new Hashtable<>();
}
@Override
public Pair getItemCloak() {
return new Pair<>(this, cloakItem);
}
@Override
public void onCloak() { }
@Override
public void onUncloak() { }
}
RevelationHolder.registerRevelationCallback(new RevelationHolder.UncloakCallback() {
@Override
public void trigger(List advancements, List blocks, List items) {
for(Block block : blocks) {
if(Registry.BLOCK.getId(block).getNamespace().equals(MOD_ID)) {
...
...
break
}
}
}
});
你可以在 Spectrum 的 Discord 上找到很多乐于助人的人。那里总是有友好且热心的人在。也欢迎你顺道来看看,如果你愿意!
https://discord.com/invite/EXU9XFXT8a
友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:198,101 | 历史访问人次:303,505
今日访问人数:4,822 | 今日访问人次:5,256
昨日访问人数:30,537 | 昨日访问人次:36,142
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6