Ultimate Spell System icon

Ultimate Spell System -----

A custom DSL for nice spells in your world.




New feature
  • Added a SpellCaster Citizens trait.
  • Added corresponding command (/spellcaster <add|remove|list|cast>) and permission (uss.spellcaster).
    • All of this was previoulsy exposed in the example-plugin in the git repo.
Fixes
  • Fixed a java bug which caused effects and particles arrays to not be read in Orb summon properties.
Miscelleanous
  • Warning in console when a spell is compiled with unknown summon properties.
    • The complete properties keys can be foud here..
    • Can be toggled-off in configuration.
----------, May 17, 2025

New features
  • Cooldown :
    • It is now possible to add cooldowns on bind items.
    • The cooldown can also be send to the material (like an enderpearl for example). It is configurable.
    • The /uss bind command has been completly reworked for easier use.
New properties
  • For armor-stand : small, marker, base_plate, visible, show_arms.
New functions
  • set_name(entity, string) : change the nameplate of an entity.
Miscellaneous
  • Configuration file structure has been changed. Check if after you upgrade.
  • Configurable default clock value for custom entities.
----------, May 14, 2025

New features
  • Added a /uss status command, to get the plugin status.
New functions
  • entity_has_effect(<entity>, <effect_type: string>, [min_level]) -> boolean : check if a specified entity has a potion-effect.
  • set_aggro(<entity>, <target>) : set the aggro of an Mob to another entity.
Other new elements
  • New cost: "permission". The player must have a specific permission to cast the spell.
  • Added configuration to set if events should be cancelled on bind-spell cast / trigger-step.
Fixes
  • Added the missing potion effects: oozing, weaving, infested, wind_charged and trial_omen.
  • Fixed issues related to event cancellation.
  • API: fixed issue with casing in providers.
----------, May 9, 2025

New features
  • USS functions
    • Before, to have a custom function, you needed to use the Java API to register it. It's not mandatory anymore. All USS scripts put into the ./functions/ folder will be a callable function in your spells. Check the related documentation for more details about the parameters and output syntax.
  • Allies system. When playing with friends, you don't want your summoned monsters to attack them.
    • Created a provider (Java API) to register custom allies relationships. For example, if you have a homemade plugin to handle parties, you will be able to say if two entities are allied.
    • For now, the only "allies" test is using the vanilla Teams systems : entities in the same scoreboard team with disabled friendly-fire will be considered as allies. More allies-conditions will be added later.
New properties
  • can_damage_caster used by projectiles. Control if a projectile can damage its own caster.
  • can_damage_allies : the same as before, but with the caster's allies.
  • can_aggro_allies : the same as before, but for standard summons, not projectiles.
    • In a future version, those properties names may change to clarify them.
New function
  • are_allies(Entity, Entity) -> Boolean : check if two spell-entities are allies.
Other changes
  • The players scope will now accept a bukkit entity if it has a player scorebard tag attached to it. Thus, NPC can now be included in this scope with spells.
  • (technical) The projectile damage was using NBTs. It's not the case anymore.
Miscellaneous
  • API javadoc is now published here.
----------, May 1, 2025

I don't post all release, so this post also includes the 2.1.1.

Changes
  • The all-around expression now accepts the scope the be a string. As such, you can do branched-in scopes.
  • The scopes will also allow for scoreboard tags to act. It's mostyly useful with Citizens plugin.
    • Example: if you tag a Citizens NPC with monster, then the monsters scope will include it.
    • Thus, Citizens NPCs are not "players" anymore
New functions
  • get_health(Entity) -> Number : Get the current health of an entity.
  • get_max_health(Entity) -> Number : Get the maximum health of an entity.
  • heal(Entity, number) -> Number : Heal the entity by a certain amount. Returns the new health of the entity.
  • loc_to_list(Location) -> Number[] : transforms a location to a list containing the X, Y and Z coordinates.
    • Allows for easy extractions like: %y = loc_to_list(position of %caster)[1]
Fixes
  • The knockback function allows for proper list of number as input vector.
API changes
Exposed a way for external plugin to :
  • Create a SpellRuntime instance,
  • "compile" a USS statement or expression.
    • With this, an external plugin can evaluate any USS string.
Miscellaneous
  • The "send" evaluation will be proceeded synchronously. Don't worry, the execution will still be asynchronous.
  • The example plugin contains a proper conditional SpellCaster trait. It will probably be integrated into the main plugin in a future date.
----------, Apr 24, 2025

Optimizations
  • Particle and block effects are executed in a secondary thread.
  • Custom SpellEntity logic (i.e. Orb) are also executed async.
Fixes
  • Fixed Duration equality tests.
API changes
  • Removed exposure of logging in.
  • Moved schedule public methods from UltimateSpellSystem proxy to an exposed Scheduler.
  • Full javadoc coverage for the API. More javadoc for the DSL.
----------, Apr 19, 2025

This release is a huge one. The main feature is the possibility to allow multiple spells to be bind to a single item, each one triggered by a different serie of actions. The cost of spells has been diversified.

Feature details
  • Items will be able to store multiple "bind-data".
  • Each one links 3 elements:
    • A spell (ID),
    • A cost (can have arguments). Basic implementation are: item durability, item count, player health, player food-level, player experience. Can be "none" to have to cost.
    • A trigger, composed of a sequence of "trigger steps". Each step can be one of: "attack", "left click [block/air]", "right click [block/air]", "sneak".
Bug fixes
  • The drop property of summons has been fixed.
  • The all <scope> around expression did not handle properly the exclude keyword. Check your spells.
New features
  • Added a send nbt statement, to apply a temporary NBT tag to an entity.
  • Added a uss help command, for more information in-game.
New functions
  • normalize(Vector) -> Vector : normalize a Vector.
  • direction_of(Entity) -> Vector : get the direction of an Entity.
  • knockback(Entity, Vector, [number]) -> Void : apply a force to an entity. If the third argument is set, the force will be normalized and multiplied by it.
API changes
  • The ItemBinder interface has new methods for #bind, and the old signature as been deprecated. Legacies methods will be removed in a future version.
  • The SpellEntity interface needs to implement the #setVelocity method.
Miscellaneous
  • The configuration file changed. Future version will handle a proper migration system.
  • Now using the Exlll/'s ConfigLib library for configuration management.
----------, Apr 18, 2025

Short release to fix an old bug in the Orb application of effects.
----------, Mar 25, 2025

API (breaking) changes
  • The API now requires an implementation of a `SpellEntity` instead of a `LivingEntity`. This allow for a more generic approach.

Fixes
  • Fix on startup due to spells loaded before the callbacks extension.

Miscellaneous
  • Added a sample project to demonstrate the use of the API.
    • Added an example with Citizens2
----------, Mar 25, 2025

New features
  • Added a new system: the callback. It provides access to the events for summoned entities.
  • Currently existing callbacks: `(projectile) landed`, `(projectile) hit`, `die`, `expire`.
  • Added a `rand(min, max)` function to generate random numbers.
----------, Mar 23, 2025

New features
  • The summon statement can now summon projectiles. You can now make arrows rain down the skies !
    • Summoned arrows cannot be picked-up.
    • All projectiles may apply damage.
  • New entity properties for projectiles : projectile_damage, velocity and direction. Check the wiki for more infos.
  • New property for orbs: max_blocks_hit : destroys orbs after a specific amount of block collisions.
Miscellaneous
  • Entity attributes will now have access to the whole "summoning context" instead of just the spell runtime. If you have custom attributes, you may want to change the third type.
  • Added an update-check to look for the latest version.
----------, Mar 7, 2025

New features
  • Added list operators expressions :
    • :+ : list append (list + elem -> list).
    • :- : list remove (list + elem -> list).
    • :/ : list remove (at index) (list + int -> list).
    • :? : list contains test (list + elem -> boolean).
  • Added standard break and continue statements.
Bug-fix
  • Fixed null comparison with != operator.
  • Variables will mutate in a block (when defined in parent block).
  • Variables can properly be set to null.
  • Added type inducing (when first declared as null).
  • The define keyword may be implicit.
----------, Mar 5, 2025

New features
  • The repeat statement now adds a variable _repeat_index to keep track of the current iteration number.
  • Changed the @Metadata system : arguments must be raw values.
  • Added a @param(<var_name>, <type>) metadata tag. It guarantees a specific variable will exist on runtime. This allows more complex recursive spellc calls (i.e. allow for "scripting").
Bug fixes
  • Some blocks did not apply their runtime inheritance.
  • Fixed the stop scope backtrack.
Miscellaneous
  • Added a bStat reporting.
  • Cleaner way to add a function (no need to add the function name again).
----------, Feb 28, 2025

Resource Information
Author:
----------
Total Downloads: 180
First Release: Feb 23, 2025
Last Update: May 17, 2025
Category: ---------------
All-Time Rating:
1 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings