Skip to main content

๐Ÿงพ Skript Addon

EventForgeSkriptAddon lets Skript users work with EventForge without writing Java.

It adds Skript syntax for:

starting events
stopping events
finishing events
adding points
setting scores
reading event state
reading leaderboards
reading schedules
reading cooldowns
reading event variables
reading metadata
filtering events
reading objective info
starting and cancelling dialogues
parsing EventForge text effects
parsing EventForge variables
reading milestones
listening to EventForge events

Use it for small server-specific integrations, custom commands, admin tools, menus, reward scripts, and lightweight event logic.


Requirements

Java 21
Spigot, Paper, or Purpur 1.21 - 1.21.11
EventForge v1.0.2+
EventForgeSkriptAddon v1.0.2+
Skript

EventForge and Skript must both be installed before the addon can load.


Installation

Install the plugins:

plugins/
โ”œโ”€ EventForge.jar
โ”œโ”€ Skript.jar
โ””โ”€ EventForgeSkriptAddon-1.0.2-obf.jar

Then restart the server.

After startup, check console to make sure the addon loaded successfully.


Maven version

The addon uses EventForge API 1.0.2-release.

<dependency>
<groupId>dev.hxze</groupId>
<artifactId>eventforge-api</artifactId>
<version>1.0.2-release</version>
<scope>provided</scope>
</dependency>

For Spigot compatibility, it uses the Spigot API:

<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21.11-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>

It also includes JetBrains annotations as a provided dependency for compatibility.


plugin.yml

name: EventForgeSkriptAddon
version: '1.0.2'
main: dev.hxze.eventforgeskript.EventForgeSkriptAddonPlugin
api-version: '1.21'
author: HxZe
description: Skript integration addon for EventForge v1.0.2.
depend:
- EventForge
- Skript

Folder structure

src/main/java/dev/hxze/eventforgeskript/
โ”œโ”€ EventForgeSkriptAddonPlugin.java
โ”œโ”€ syntax/
โ”‚ โ””โ”€ EventForgeSkriptSyntax.java
โ”œโ”€ effect/
โ”‚ โ”œโ”€ EffStartEventForgeEvent.java
โ”‚ โ”œโ”€ EffStopEventForgeEvent.java
โ”‚ โ”œโ”€ EffFinishEventForgeEvent.java
โ”‚ โ”œโ”€ EffAddEventForgePoints.java
โ”‚ โ”œโ”€ EffSetEventForgeScore.java
โ”‚ โ”œโ”€ EffClearEventForgeCooldown.java
โ”‚ โ”œโ”€ EffStartEventForgeDialogue.java
โ”‚ โ””โ”€ EffCancelEventForgeDialogue.java
โ”œโ”€ event/
โ”‚ โ””โ”€ EventForge event syntax
โ”œโ”€ expression/
โ”‚ โ””โ”€ EventForge expressions
โ””โ”€ util/
โ””โ”€ TextUtil.java

Example scripts are bundled here:

src/main/resources/example-scripts/

Effects

Effects perform actions through EventForge.

start eventforge event "mining_rush"
stop eventforge event "mining_rush"
finish eventforge event "mining_rush"

add 10 eventforge points to player for "mining_rush"
set eventforge score of player for "mining_rush" to 50

clear eventforge cooldown of event "mining_rush"

start eventforge dialogue "guide_intro" of event "relic_hunt" for player
cancel eventforge dialogue for player

Start an event

command /startmine:
permission: eventforge.skript.admin
trigger:
start eventforge event "mining_rush"
send "&aStarted Mining Rush."

Starting an event this way uses EventForge start checks.


Stop an event

command /stopmine:
permission: eventforge.skript.admin
trigger:
stop eventforge event "mining_rush"
send "&cStopped Mining Rush."

A forced stop does not start cooldown.


Finish an event

command /finishmine:
permission: eventforge.skript.admin
trigger:
finish eventforge event "mining_rush"
send "&aFinished Mining Rush naturally."

A natural finish can process results, rewards, history, and cooldowns.


Add points

command /efbonus <player> <text> <number>:
permission: eventforge.skript.admin
trigger:
add arg-3 eventforge points to arg-1 for arg-2
send "&aAdded &f%arg-3% &apoints to &f%arg-1%&a."

Set score

command /efsetscore <player> <text> <number>:
permission: eventforge.skript.admin
trigger:
set eventforge score of arg-1 for arg-2 to arg-3
send "&aSet &f%arg-1%&a's score in &f%arg-2% &ato &f%arg-3%&a."

Clear cooldown

command /efclearcooldown <text>:
permission: eventforge.skript.admin
trigger:
clear eventforge cooldown of event arg-1
send "&aCleared cooldown for &f%arg-1%&a."

Start dialogue

command /efdialogue <text> <text>:
permission: eventforge.skript.admin
trigger:
start eventforge dialogue arg-2 of event arg-1 for player
send "&aStarted dialogue &f%arg-2% &afor event &f%arg-1%&a."

Cancel dialogue

command /efcanceldialogue:
permission: eventforge.skript.admin
trigger:
cancel eventforge dialogue for player
send "&cCancelled your EventForge dialogue."

Basic expressions

eventforge event "mining_rush" is active
eventforge event "mining_rush" is loaded

eventforge loaded event count
eventforge active event count

eventforge loaded events
eventforge active events

eventforge display name of event "mining_rush"
eventforge time left of event "mining_rush"
eventforge participants of event "mining_rush"

Example:

command /efstatus <text>:
trigger:
send "&7Event: &f%arg-1%"
send "&7Loaded: &f%eventforge event arg-1 is loaded%"
send "&7Active: &f%eventforge event arg-1 is active%"
send "&7Display: &f%eventforge display name of event arg-1%"
send "&7Time Left: &f%eventforge time left of event arg-1%s"
send "&7Participants: &f%eventforge participants of event arg-1%"

Score expressions

eventforge score of player in "mining_rush"
eventforge rank of player in "mining_rush"

eventforge top player of event "mining_rush" at position 1
eventforge top score of event "mining_rush" at position 1

Example:

command /efscore <text>:
trigger:
send "&7Score: &f%eventforge score of player in arg-1%"
send "&7Rank: &f#%eventforge rank of player in arg-1%"

Schedule expressions

eventforge scheduled event count
eventforge next scheduled event
eventforge next scheduled time

eventforge upcoming event at position 1
eventforge upcoming time at position 1

Example:

command /efupcoming:
trigger:
send "&7Scheduled events: &f%eventforge scheduled event count%"
send "&7Next event: &f%eventforge next scheduled event%"
send "&7Starts in: &f%eventforge next scheduled time%s"

Cooldown expressions

eventforge event "mining_rush" is on cooldown
eventforge cooldown of event "mining_rush"
eventforge cooldown remaining of event "mining_rush"
eventforge cooldown end of event "mining_rush"

Example:

command /efcooldown <text>:
trigger:
if eventforge event arg-1 is on cooldown:
send "&cThat event is on cooldown for &f%eventforge cooldown remaining of event arg-1%s&c."
else:
send "&aThat event is not on cooldown."

Cooldown values are returned in seconds.


Start check expressions

eventforge event "mining_rush" can start
eventforge start reason of event "mining_rush"

Example:

command /efstartsafe <text>:
permission: eventforge.skript.admin
trigger:
if eventforge event arg-1 can start:
start eventforge event arg-1
send "&aStarted &f%arg-1%&a."
else:
send "&cCannot start &f%arg-1%&c: &f%eventforge start reason of event arg-1%"

Metadata and filtering

eventforge metadata "category" of event "mining_rush"

eventforge event count in category "Mining"
eventforge events in category "Mining"

eventforge event count with tag "pvp"
eventforge events with tag "pvp"

eventforge event count with difficulty "Easy"
eventforge events with difficulty "Easy"

Example:

command /efcategory <text>:
trigger:
send "&7Events in category &f%arg-1%&7:"
send "&f%eventforge events in category arg-1%"

Event variables

eventforge variable "event_color" of event "mining_rush"

Example:

command /efvar <text> <text>:
trigger:
send "&7Variable &f%arg-2%&7:"
send "&f%eventforge variable arg-2 of event arg-1%"

EventForge normalizes variable keys, so hyphens and underscores are treated consistently.


Variable parsing

EventForge v1.0.2 added public variable parsing to the Skript addon.

eventforge parsed variables of "{event_display}" for event "mining_rush"
eventforge parsed variables of "{event_display}" for event "mining_rush" and player player

Example:

command /efparse <text> <text>:
trigger:
send eventforge parsed variables of arg-2 for event arg-1 and player player

This is useful when your script wants to reuse EventForge variables in custom messages.


Text effects

EventForge v1.0.2 also added text effect parsing.

eventforge text effects of "<stack:rainbow,wobble>Hello</stack>"
eventforge text effects of "<stack:rainbow,wobble>Hello</stack>" at tick 40

Example:

command /eftexteffect:
trigger:
send eventforge text effects of "<stack:rainbow,wobble>EventForge text effects work!</stack>"

Objective expressions

eventforge objective count of event "mining_rush"

eventforge objective weight of objective "blocks" in event "mining_rush"
eventforge objective multiplier of objective "blocks" in event "mining_rush"

Example:

command /efobjectives <text>:
trigger:
send "&7Objective count: &f%eventforge objective count of event arg-1%"
send "&7Blocks multiplier: &f%eventforge objective multiplier of objective ""blocks"" in event arg-1%"

The multiplier expression returns player-facing text such as:

x1
x1.5
x2

Dialogue expressions

eventforge dialogues of event "relic_hunt"
player player is in eventforge dialogue

Example:

command /efdialogues <text>:
trigger:
send "&7Dialogues for &f%arg-1%&7:"
send "&f%eventforge dialogues of event arg-1%"

Milestone expressions

EventForge v1.0.2 added milestone expressions.

eventforge milestone count of event "mining_rush"
eventforge milestones of event "mining_rush"

eventforge milestone threshold "score_10" of event "mining_rush"
eventforge milestone display name "score_10" of event "mining_rush"

Example:

command /efmilestones <text>:
trigger:
send "&7Milestone count: &f%eventforge milestone count of event arg-1%"
send "&7Milestones: &f%eventforge milestones of event arg-1%"
send "&7Score 10 display: &f%eventforge milestone display name ""score_10"" of event arg-1%"
send "&7Score 10 threshold: &f%eventforge milestone threshold ""score_10"" of event arg-1%"

Event syntax

The addon includes EventForge event listeners for Skript.

on eventforge event start:
on eventforge event stop:
on eventforge event finish:
on eventforge reload:
on eventforge score change:
on eventforge milestone:

Event context expressions

These expressions are only useful inside EventForge Skript events.

current eventforge event id
current eventforge event display name
eventforge event player

eventforge old score
eventforge new score
eventforge score change

eventforge milestone id
eventforge milestone display name
eventforge milestone threshold

eventforge reload loaded events
eventforge reload validation warnings
eventforge reload validation errors
eventforge reload scheduled events
eventforge reload registered objectives

Event start example

on eventforge event start:
broadcast eventforge text effects of "<gradient:#22d3ed:#ffffff>Event started:</gradient> %current eventforge event display name%"

Score change example

on eventforge score change:
set {_p} to eventforge event player
if {_p} is set:
send "&eScore changed: &f%eventforge old score% &7-> &f%eventforge new score% &8(+%eventforge score change%)" to {_p}

Milestone example

on eventforge milestone:
set {_p} to eventforge event player
if {_p} is set:
send eventforge text effects of "<pulse:#22d3ed:#ffffff>Milestone reached:</pulse> %eventforge milestone display name%" to {_p}
send "&7Threshold: &f%eventforge milestone threshold% &7points" to {_p}

Reload example

on eventforge reload:
broadcast "&bEventForge reloaded:"
broadcast "&7Loaded events: &f%eventforge reload loaded events%"
broadcast "&7Warnings: &e%eventforge reload validation warnings%"
broadcast "&7Errors: &c%eventforge reload validation errors%"
broadcast "&7Scheduled events: &f%eventforge reload scheduled events%"
broadcast "&7Registered objectives: &f%eventforge reload registered objectives%"

Example scripts

The addon includes ready-to-use scripts under:

src/main/resources/example-scripts/

Included scripts:

eventforge-admin-tools.sk
eventforge-custom-rewards.sk
eventforge-dialogues.sk
eventforge-event-browser.sk
eventforge-leaderboard.sk
eventforge-multi-objective.sk
eventforge-player-status.sk
eventforge-upcoming-events.sk
eventforge-v102-features.sk

Copy the scripts you want into:

plugins/Skript/scripts/

Then reload Skript:

/sk reload all

v1.0.2 feature script

The new v1.0.2 example script is:

eventforge-v102-features.sk

It demonstrates:

text effect parsing
variable parsing
milestone expressions
event start/stop/finish listeners
score change listener
milestone listener
reload stats

Common issues

Syntax is not recognizedโ€‹

Check:

EventForge is installed
Skript is installed
EventForgeSkriptAddon is installed
the server was fully restarted
the addon loaded after EventForge and Skript

Event commands do nothingโ€‹

Check:

the event ID is correct
the event is loaded
the event can start
the player or console has permission to run your Skript command

Start event failsโ€‹

Use:

eventforge event "event_id" can start
eventforge start reason of event "event_id"

This lets your script show the reason instead of silently failing.

Cooldown looks wrongโ€‹

Cooldown values are returned in seconds.

A natural event finish can start cooldown.

A forced stop does not.

Milestone data is emptyโ€‹

Check that the event has milestones configured:

milestones:
enabled: true

Then reload EventForge.

Text effects show as raw tagsโ€‹

Check that you are using:

eventforge text effects of "<stack:rainbow,wobble>Hello</stack>"

instead of sending the raw text directly.


Summary

EventForgeSkriptAddon v1.0.2 gives Skript access to the main EventForge systems.

It includes:

event control effects
score effects
cooldown effects
dialogue effects
event state expressions
leaderboard expressions
schedule expressions
metadata and filtering expressions
objective multiplier expressions
variable parsing
text effect parsing
milestone expressions
EventForge lifecycle events
score change events
milestone events
reload stats