
Advancement JS
Configure more than advancements by KubeJS
245K загрузок21 подписчиковLGPL-2.1-onlyfabricforge
Обновлён 14 мая 2024 г. · опубликован 28 декабря 2023 г.
AdvancementJS
Configure more than advancements by KubeJS
Quick Example(for latest version 2.9.3)
Startup script
// Create a custom trigger
AdvJSEvents.trigger(event => {
event.create("advjs:get_adv")
// How many matches you defined, how many tests you should put in
// In this example, we defined 2 matches
.match(advancement => advancement.getId() == "minecraft:story/smelt_iron")
.match(playerName => playerName == "Dev")
})
Server script
AdvJSEvents.advancement(event => {
const { PREDICATE, TRIGGER } = event;
// Define trigger
const jump5times = TRIGGER.tick(triggerBuilder =>
triggerBuilder.addStat(Stats.JUMP, Stats.CUSTOM, { min: 5 }));
const bred_in_nether = TRIGGER.bredAnimals(triggerBuilder => {
triggerBuilder.setChildByPredicate(PREDICATE.entityFromJson({
stepping_on: {
dimension: "the_nether"
}
}))
});
// AdvJS custom trigger
const destroy_dirt = TRIGGER.blockDestroyed(triggerBuilder => triggerBuilder.setBlock("dirt"));
// Your custom trigger
const get_adv = TRIGGER.custom("advjs:get_adv");
// Create root advancement
const root = event.create("advjs:hell")
.display(displayBuilder => {
displayBuilder.setTitle("AdvancementJS")
displayBuilder.setDescription("Quick example")
displayBuilder.setIcon("diamond")
})
.criteria(criteriaBuilder => criteriaBuilder.add("dirt", destroy_dirt))
.rewards(rewardsBuilder => {
rewardsBuilder.setExperience(100)
// AdvJS custom reward
rewardsBuilder.addEffect("absorption", 200)
})
// Make it repeatable
.repeatable();
// Add child for root
root.addChild("child1", childBuilder => {
childBuilder
.display(displayBuilder => {
displayBuilder.setTitle(Text.red("Holy"))
displayBuilder.setDescription(Text.red("Hell starts"))
})
.criteria(criteriaBuilder => {
// 'OR' means that if you want to achieve this advancement,
// you just need one of two triggers matched below
criteriaBuilder.setStrategy(RequirementsStrategy.OR)
criteriaBuilder.add("bred", bred_in_nether)
criteriaBuilder.add("jump", jump5times)
criteriaBuilder.add("get_adv", get_adv)
})
.rewards(rewardsBuilder => {
rewardsBuilder.setRecipes("minecraft:lodestone", "minecraft:brewing_stand")
rewardsBuilder.setExperience(100)
})
});
// Remove an exist advancement by AdvancementFilter, available filter was writen in doc.
// you can also remove by id: 'event.remove("minecraft:story/lava_bucket");'
event.remove({
mod: "minecraft",
icon: "minecraft:lava_bucket",
frame: "task"
});
// Modify an exist advancement
event.get("minecraft:story/smelt_iron")
// Apply offset to display
.displayOffset(1, 1, true)
.modifyDisplay(displayBuilder => displayBuilder.setIcon("diamond_pickaxe"))
.addChild("child2", childBuilder => {
childBuilder
.display(displayBuilder => {
displayBuilder.setIcon("recovery_compass")
displayBuilder.setTitle('I will come back!')
displayBuilder.setDescription(Text.green("Good luck"))
// You can also apply display in DisplayBuilder
displayBuilder.offset(-1, 0)
})
// The trigger could also be created from json
.criteria(criteriaBuilder => criteriaBuilder.add("go_back_to_home", TRIGGER.fromJson({
"trigger": "minecraft:changed_dimension",
"conditions": {
"from": "minecraft:the_end",
"to": "minecraft:overworld"
}
})))
// Check if parent done, else it will not be done
.requireParentDone()
});
})
AdvJSEvents.lock(event => {
event.result("stone_slab", "minecraft:story/smelt_iron");
event.itemUse("spyglass", "minecraft:story/smelt_iron");
event.blockInteract("chest", "minecraft:story/smelt_iron");
event.entityInteract("villager", "minecraft:story/smelt_iron");
})
// Compat with 'Better Advancements'
AdvJSEvents.betterAdv(event => {
event.modify("advjs:hell/child1").posX(0).posY(32).hideLines()
})
PlayerEvents.advancement(event => {
const player = event.getPlayer();
// The first argument is use for match player predicate, the other two is the matches you defined
CustomTriggers.of("advjs:get_adv").trigger(player, event.getAdvancement(), player.username)
})
How to reload
Just use /reload
Features
- Command
/advjsfor generate builtin examples - You can create a custom trigger in startup event
AdvJSEvents.trigger. - AdvJS custom trigger
- blockDestroyed: triggers when the player breaks a block.
- playerTouch: triggers when the player touch an entity.
- bossEvent: triggers when the play joins a boss fight.
- increasedKillScore: triggers when the player killed an entity.
- AdvJS custom reward
- addEffect: to give effect.
- AdvJS custom method
- displayOffset(offsetX: number, offsetY: number, modifyChildren?: boolean)
- apply offset to advancement display and its children
- requireParentDone()
- check if parent done, else it will not be done.
- requireOthersDone(requires[]: ...ResourceLocation)
- check if advancements that you put in had done.
- requireAnyDone(requires[]: ...ResourceLocation)
- displayOffset(offsetX: number, offsetY: number, modifyChildren?: boolean)
- Compat
Better Advancements, the new server event:AdvJSEvents.betterAdv
Версии
| Версия | Канал | Игра | Загрузчики | Дата | Скачать |
|---|---|---|---|---|---|
| 2001forge-2.9.4 | Релиз | 1.20.1 | forge | 14 мая 2024 г. | .jar (212 КБ) |
| 2001fabric-2.9.4 | Релиз | 1.20.1 | fabric | 14 мая 2024 г. | .jar (221 КБ) |
| 2001forge-2.9.3-hotfix | Бета | 1.20.1 | forge | 19 марта 2024 г. | .jar (212 КБ) |
| 2001forge-2.9.2 | Бета | 1.20.1 | forge | 1 марта 2024 г. | .jar (211 КБ) |
| 2001fabric-2.9.0 | Релиз | 1.20.1 | fabric | 17 февраля 2024 г. | .jar (224 КБ) |
| 2001forge-2.9.0 | Релиз | 1.20.1 | forge | 17 февраля 2024 г. | .jar (215 КБ) |
| 2001fabric-2.8.0 | Релиз | 1.20.1 | fabric | 15 февраля 2024 г. | .jar (219 КБ) |
| 2001forge-2.8.0 | Релиз | 1.20.1 | forge | 10 февраля 2024 г. | .jar (211 КБ) |
| 2001fabric-2.7.0 | Релиз | 1.20.1 | fabric | 8 февраля 2024 г. | .jar (214 КБ) |
| 2001forge-2.7.0 | Релиз | 1.20.1 | forge | 2 февраля 2024 г. | .jar (205 КБ) |
| 1902fabric-2.6.0 | Релиз | 1.19.2 | fabric | 31 января 2024 г. | .jar (179 КБ) |
| 1902forge-2.6.0 | Релиз | 1.19.2 | forge | 30 января 2024 г. | .jar (186 КБ) |
| 2001fabric-2.6.0 | Релиз | 1.20.1 | fabric | 29 января 2024 г. | .jar (212 КБ) |
| 2001forge-2.6.0 | Релиз | 1.20.1 | forge | 29 января 2024 г. | .jar (203 КБ) |
| 2001fabric-2.5.0 | Релиз | 1.20.1 | fabric | 28 января 2024 г. | .jar (200 КБ) |
Показаны последние 15 из 20 версий. Все версии — на Modrinth.
Ченджлог
2001fabric-2.9.4Релиз1.20.1 · 14 мая 2024 г.
Addition
AdvConfigureEventJS.removeAll()AdvConfigureEventJS.enableRecipeAdvancementsRemoval()
Remove
{ mod: "*" }of AdvancementFilter
2001forge-2.9.3-hotfixБета1.20.1 · 19 марта 2024 г.
Fixed a stupid bug about AdvancementFilter
2001forge-2.9.2Бета1.20.1 · 1 марта 2024 г.
Fix
- Removed compat with Revelationary(EventHorizon), so that ProbeJS could successfully generate js doc
- common.properties will create AdvJS configures correctly
2001forge-2.9.0Релиз1.20.1 · 17 февраля 2024 г.
Fix
AdvancementFilterwill filter icon correctlyDamagePredicateBuilder.setType(predicate)->DamagePredicateBuilder.setTypeByPredicate(predicate)
Addition
- Client example in
/advjs
Compat
Better Advancements: the new server event:AdvJSEvents.betterAdv
2001forge-2.8.0Релиз1.20.1 · 10 февраля 2024 г.
Addition
- AdvLockEventJS.itemUse(toLock: Item, lockBy: ResourceLocation): void
- AdvLockEventJS.blockInteract(toLock: Block, lockBy: ResourceLocation): void
- AdvLockEventJS.entityInteract(toLock: EntityType<any>, lockBy: ResourceLocation): void
Binding
- AdvHelper: for checking server player's advancement isn't done
Upgrades
- AdvancementFilter: compound type is available
2001forge-2.7.0Релиз1.20.1 · 2 февраля 2024 г.
Addition
AdvBuilder.repeatable()andAdvGetter.repeatable()- If invoked this method, the advancement will revoke after grant automatically.
AdvGetter.changeParent(parentId: ResourceLocation)- PlayerPredicateBuilder.checkAdvancementCriterions(advancement: ResourceLocation, criterions: Map<String, Boolean>)
Fix
- If an advancement has no display, the displayModifier will not throw error, but create a new display
/advjswill generate correct code
Rename
AdvRemoveFilter->AdvancementFilterGameType->GameModeBaseTrigger->CustomTrigger
1902forge-2.6.0Релиз1.19.2 · 30 января 2024 г.
Updates to latest version
Diff
- No
/advjscommand - No example script
2001forge-2.6.0Релиз1.20.1 · 29 января 2024 г.
Breaking Changes
Compat
Revelationary(Fabric only), the new client event:AdvJSEvents.revelationEventHorizon(Forge only), the new client event:AdvJSEvents.revelation
Reconstruct
ServerEvents.advancement->AdvJSEvents.advancementAdvConfigureEventJS.lock->AdvJSEvents.lock
Addition
- The new startup event
AdvJSEvents.trigger, for registering custom trigger- Use
CustomTriggers.of(id: ResourceLocation): BaseTriggerto get your custom trigger for triggers - Use
Trigger.custom(id: ResourceLocation): BaseTriggerInstanceto create a trigger instance for criteria
- Use
Полная история изменений — на Modrinth.
Комментарии
Загружаем…




