originsjs
v1.0.0
Published
Make origins datapacks with JS / TS!
Downloads
1
Readme
OriginsJS
Origins JS is a "wrapper" to make origins specific minecraft datapacks. It was partially generated from the origins docs to use as a base then modified from there.
This library can be quicker to setup and make origins easier to code with more efficiently. For example you can make a custom "Spells" class that has custom logic that provides an easier way to make modular powers.
Notes:
I would suggest using typescript with this library as you will bennefit from type checking compared to traditional datapacks.
Other things to note are any methods prefixed with add
are usually "dynamic" and will use things like origins:and
automatically, whereas methods prefixed with set
will just set the value with what you provide.
Links
Usage/Examples
Avian Origin
import { ActionOnWakeUpPower, AndMetaAction, AndMetaCondition, AttributePower, AttributedAttributeModifierBuilder, Datapack, FoodItemCondition, GiveEntityAction, HeightBlockCondition, IngredientItemCondition, ItemStackBuilder, MeatItemCondition, OrMetaCondition, Origin, PlaySoundEntityAction, PreventItemUsePower, PreventSleepPower } from "originsjs";
const datapack = new Datapack("namespace");
const avianOrigin = new Origin()
.setName("Avian")
.setIcon("minecraft:feather")
.setImpact(1)
const freshAir = new PreventSleepPower()
.setBlockCondition(
new HeightBlockCondition()
.setComparison("<")
.setCompareTo(86)
)
.setMessage("origins.avian_sleep_fail");
const tailwind = new AttributePower()
.setModifier(
new AttributedAttributeModifierBuilder()
.setAttribute("minecraft:generic.movement_speed")
.setValue(0.02)
.setName("Tailwind speed bonus")
.setOperation("addition")
);
const layEggs = new ActionOnWakeUpPower()
.setEntityAction(
new AndMetaAction()
.add(
new GiveEntityAction()
.setStack(
new ItemStackBuilder()
.setItem("minecraft:egg")
),
new PlaySoundEntityAction()
.setSound("minecraft:entity.chicken.egg")
)
)
const vegetarian = new PreventItemUsePower()
.setItemCondition(
new AndMetaCondition()
.add(
new OrMetaCondition()
.add(
new IngredientItemCondition()
.setIngredient({ tag: "origins:meat" }),
new MeatItemCondition()
),
new FoodItemCondition(),
new IngredientItemCondition()
.setIngredient({ tag: "origins:ignore_diet" })
.setInverted(true)
)
)
avianOrigin.addPowers([ freshAir, tailwind, layEggs, vegetarian ])
avianOrigin.addPowerReference("origins:slow_falling")
datapack.addOrigin(avianOrigin)
datapack.build("./avian.zip")