Description

Overview
Black Horizont - Forbidden Nightfall is a technology-based progression addon designed to control and enhance gameplay progression through custom systems, lore integration, and modular design.
This mod introduces processors, dimensional keys, and specialized components required to unlock access to critical areas such as the Nether, The End, and restricted laboratory doors tied to the mod's lore.
Additionally, it provides a custom economy system that replaces vanilla emeralds with personalized currency, enabling deeper control over trading mechanics.
Important Notice
This mod is not pre-configured by default.
-
It is designed primarily as a supporting addon for the modpack:
Black Horizont - Forbidden Nightfall
- All items included are functional components, meaning:
- They do not have fully standalone gameplay progression
- They require custom configuration by the user or modpack developer
However, you are free to:
- Use this mod in your own modpack
- Customize recipes, progression, and systems according to your needs
Core Features
- π§ Custom Processors & Components
- Used for advanced crafting and progression systems
- π Dimensional Access Keys
- Control access to:
- The Nether
- The End
- Control access to:
- π§ͺ Lore-Based Laboratory System
- Unlock restricted areas through progression
- π° Custom Economy System
- Replaces vanilla emeralds with custom coins
- Fully configurable via scripting
-
Economy System (KubeJS + MoreJS)
To enable the custom economy system, you must configure it manually using KubeJS.
π Setup
- Go to your server directory: kubejs/server_scripts/
- Create a new file, for example: economy.js
- Paste the following script:
MoreJSEvents.updateVillagerOffers(event => {
let offers = event.getOffers();
for (let i = offers.length - 1; i >= 0; i--) {
let o = offers[i];
if (o.getOutput().getId() === 'minecraft:emerald') {
offers.splice(i, 1);
} else {
const a = o.getFirstInput();
const b = o.getSecondInput();
if (a && a.getId() === 'minecraft:emerald') {
o.setFirstInput(Item.of('syngearaddons:coinbronze', a.getCount()));
}
if (b && b.getId() === 'minecraft:emerald') {
o.setSecondInput(Item.of('syngearaddons:coinbronze', b.getCount()));
}
}
}
});
MoreJSEvents.updateWandererOffers(event => {
let offers = event.getOffers();
for (let i = offers.length - 1; i >= 0; i--) {
let o = offers[i];
if (o.getOutput().getId() === 'minecraft:emerald') {
offers.splice(i, 1);
} else {
const a = o.getFirstInput();
const b = o.getSecondInput();
if (a && a.getId() === 'minecraft:emerald') {
o.setFirstInput(Item.of('syngearaddons:coinbronze', a.getCount()));
}
if (b && b.getId() === 'minecraft:emerald') {
o.setSecondInput(Item.of('syngearaddons:coinbronze', b.getCount()));
}
}
}
});
MoreJSEvents.updateAbstractVillagerOffers(event => {
let offers = event.getOffers();
for (let i = offers.length - 1; i >= 0; i--) {
let o = offers[i];
if (o.getOutput().getId() === 'minecraft:emerald') {
offers.splice(i, 1);
} else {
const a = o.getFirstInput();
const b = o.getSecondInput();
if (a && a.getId() === 'minecraft:emerald') {
o.setFirstInput(Item.of('syngearaddons:coinbronze', a.getCount()));
}
if (b && b.getId() === 'minecraft:emerald') {
o.setSecondInput(Item.of('syngearaddons:coinbronze', b.getCount()));
}
}
}
});
π What this does
- Removes all trades that output emeralds
- Replaces emerald inputs with: syngearaddons:coinbronze
Applies to:
- Villagers
- Wandering Trader
- Custom/abstract trades
Crafting System (CraftTweaker)
Recipes are handled via CraftTweaker using standard shaped crafting.
β οΈ Important:
- Recipes depend on items from other mods (such as Create and others)
- You must adapt them to your own modpack
π¦ Example Recipe
π§ Modpack Integration
This mod is ideal for:
- Custom progression systems
- Tech-based modpacks
- Lore-driven gameplay experiences
It is highly recommended to:
- Customize recipes
- Adjust progression requirements
- Integrate with other tech mods (e.g., Create)
π Final Notes
- This mod is a framework-style addon
- It provides tools, not a complete experience by itself
- Full functionality depends on your configuration


