EventForge v1.0.2

Create server events, packs, objectives, rewards, and more with a powerful event framework!
EventForge v1.0.2 is a large framework update focused on wider server support, better validation tools, more event visuals, new objective types, public API improvements, and updated addon examples.

This version also moves EventForge from a Paper-focused build to a Spigot-compatible build.

tip
v1.0.2 is a strong update for both server owners and addon developers. It adds more ready-to-play content while also making the public API much more useful.

Highlights​

Spigot support
/eventforge validate
/eventforge errors
More PlaceholderAPI placeholders
Public VariableService
Public ActionService
Public TextEffectService
Animated titles
Animated actionbars
Animated bossbar text
CAPTURE_ZONE objective
VISIT_REGIONS objective
INTERACT_BLOCKS objective
Event milestones
Improved template installer
Mob Invasion empty-area wave pause
/events join <event>
Updated ready-to-play templates
Updated Simple Example addon
Updated Advanced Example addon
Updated Skript addon
Protected built-in API registrations


Spigot support​

EventForge now supports:

Spigot 1.21 - 1.21.11
Paper 1.21 - 1.21.11
Purpur 1.21 - 1.21.11

This makes EventForge easier to use on more server setups.


New validation commands​

v1.0.2 adds:

/eventforge validate
/eventforge validate <event>

Use this to check event files without starting them.

It helps catch:

YAML mistakes
missing objective sections
invalid materials
invalid particles
wrong configuration paths
bad template setup


New error report command​

v1.0.2 adds:

/eventforge errors
/eventforge errors <event>

This shows the latest validation or reload problems without searching through console logs.


Message cleanup​

More command output now comes from:

messages.yml

Improved areas include:

event lists
active events
leaderboards
schedules
dialogue command output
/events console output
validation messages
error report messages
template installer messages
join messages


PlaceholderAPI improvements​

v1.0.2 adds more PlaceholderAPI placeholders for:

active events
next scheduled event
player stats
event status
event cooldowns
event metadata
player score
player rank
participant count

Examples:

%eventforge_active_names%
%eventforge_next_event%
%eventforge_next_event_time%
%eventforge_player_total_score%
%eventforge_player_events_played%
%eventforge_player_wins%
%eventforge_event_mining_rush_active%
%eventforge_event_mining_rush_time_left%
%eventforge_event_mining_rush_player_score%
%eventforge_event_mining_rush_player_rank%


Public VariableService​

v1.0.2 adds:

EventForgeAPI.getVariableService()

Addon developers can now parse EventForge variables properly instead of duplicating {var:key} logic.

Example:

EventForgeAPI.getVariableService().parse(eventId, text);
EventForgeAPI.getVariableService().parse(eventId, player, text);

This is useful for addon messages, custom objectives, custom actions, and external integrations.


Public ActionService​

v1.0.2 adds:

EventForgeAPI.getActionService()

Addon developers can now execute EventForge actions through the official action system.

Supported through the shared action system:

MESSAGE
BROADCAST
TITLE
ACTIONBAR
SOUND
COMMAND
EFFECT
PARTICLE
FIREWORK
WEBHOOK
ANIMATED_TITLE
ANIMATED_ACTIONBAR

This means addons can reuse the same action behaviour as normal EventForge event configs.


Public TextEffectService​

v1.0.2 adds:

EventForgeAPI.getTextEffectService()

Text effects can be used by EventForge and addons through the same parser.

Supported effects include:

<rainbow>Text</rainbow>
<reverse-rainbow>Text</reverse-rainbow>
<gradient:#22d3ed:#ffffff>Text</gradient>
<alternate:#22d3ed:#ffffff>Text</alternate>
<striped:#22d3ed:#ffffff>Text</striped>
<pulse:#22d3ed:#ffffff>Text</pulse>
<blink:#ffffff:#555555>Text</blink>
<wave:#22d3ed:#ffffff>Text</wave>
<scan:#777777:#ffffff>Text</scan>
<shimmer:#22d3ed:#ffffff>Text</shimmer>
<wobble:#22d3ed:#ffffff>Text</wobble>
<jump:#22d3ed:#ffffff>Text</jump>
<solid:#22d3ed>Text</solid>
<fire>Text</fire>
<ocean>Text</ocean>
<ice>Text</ice>
<magic>Text</magic>
<toxic>Text</toxic>
<sunset>Text</sunset>
<stack:rainbow,wobble>Text</stack>
<effects:fire,jump>Text</effects>

Legacy colour codes inside effect tags are cleaned up safely, so display names like &aCollection Rush do not show raw &a inside gradients.


Animated titles​

v1.0.2 adds:

ANIMATED_TITLE

Example:

- type: ANIMATED_TITLE
frames:
- title: "<stack:rainbow,wobble>{event_display}</stack>"
subtitle: "&7Starting..."
fade-in: 5
stay: 40
fade-out: 10
interval: 5

Animated titles support:

placeholders
variables
text effects
animation ticks
tracked cancellation


Animated actionbars​

v1.0.2 adds:

ANIMATED_ACTIONBAR

Example:

- type: ANIMATED_ACTIONBAR
frames:
- message: "<pulse:#22d3ed:#ffffff>+{score_change} points</pulse> &8| &7Total: &f{new_score}"
duration: 30
interval: 5

Animated actionbars are useful for player score feedback, milestone progress, event warnings, and short event messages.


Tracked animation manager​

Animated title and actionbar tasks are now tracked internally.

They are cancelled safely when:

event stops
event reloads
all events stop
plugin disables

This prevents delayed animation frames from continuing after an event has ended.


Animated bossbar text​

Bossbars can now rotate through configurable frames.

Example:

bossbar:
enabled: true
text: "&e{event_display} &8| &f{time_left}"
color: YELLOW
style: SOLID

animated-text:
enabled: true
interval: 20
frames:
- "<stack:rainbow,wobble>{event_display}</stack> &8| &f{time_left}"
- "&eScore: &f{score} &8| &7Rank: &e#{rank}"
- "<pulse:#22d3ed:#ffffff>Keep going!</pulse>"

This lets bossbars feel more active without needing a resource pack.


New objective: CAPTURE_ZONE​

CAPTURE_ZONE is a KOTH-style objective.

It supports:

score while standing in zones
points every X seconds
contested zone handling
team field
team placeholder
zone particle rendering
capture actions
contested actions
rich placeholders

Public API classes:

CaptureZoneInfo
CaptureZoneObjectiveData
ZoneRenderInfo

Example use cases:

King of the Hill
capture zones
server war events
team capture points
PvP events


New objective: VISIT_REGIONS​

VISIT_REGIONS is an exploration/checkpoint objective.

It supports:

score when entering configured regions
once-per-player visits
cooldowns
region discovery messages
region discovery actionbars
region actions
rich placeholders

Public API classes:

VisitRegionInfo
VisitRegionsObjectiveData

Example use cases:

exploration hunt
spawn tour
easter egg hunt
checkpoint event
landmark discovery


New objective: INTERACT_BLOCKS​

INTERACT_BLOCKS lets players score by right-clicking configured blocks.

It supports:

vanilla blocks
ItemsAdder custom block IDs
Oraxen custom block IDs
Nexo custom block IDs
fallback materials
per-location tracking
global tracking
cooldowns
once-per-player interactions
cancel-event
success actions
cooldown actions
rich placeholders

Public API classes:

InteractBlockInfo
InteractBlocksObjectiveData

Example use cases:

bell hunt
button hunt
crate hunt
hidden object hunt
custom block interaction event


Event milestones​

Events can now define score milestones.

Example:

milestones:
enabled: true
thresholds:
50:
display-name: "&e50 Points"
once-per-player: true
actions:
- type: MESSAGE
message: "&aYou reached {milestone_display}!"
- type: SOUND
sound: ENTITY_PLAYER_LEVELUP

Milestones support:

per-player tracking
score threshold detection
milestone actions
milestone placeholders
public API event

Milestone placeholders include:

{milestone}
{milestone_display}
{milestone_threshold}
{old_score}
{new_score}
{score}
{score_change}

Public API:

EventMilestoneInfo
EventForgePlayerMilestoneEvent


Improved template installer​

Template installation now supports overwrite confirmation.

/eventforge installtemplate <template>
/eventforge installtemplate <template> confirm

This makes updating bundled templates safer because EventForge will not overwrite an existing installed event unless you confirm it.


Mob Invasion polish​

Mob Invasion now supports:

start-requirements:
require-player-nearby: true
radius: 50

empty-area:
pause-waves: true
radius: 50

join:
enabled: true
world: world
x: 0
y: 70
z: 0
yaw: 0
pitch: 0

New player command:

/events join <event>

This helps stop waves from spam-completing when nobody is near the invasion area.


Updated ready-to-play templates​

New bundled templates:

capture_zone.yml
exploration_hunt.yml
interact_blocks_hunt.yml

Existing templates were also updated to showcase v1.0.2 features while staying vanilla-friendly.


Protected built-in API registrations​

Built-in action and objective registrations are now protected.

Protected built-in objectives:

MINE_BLOCKS
KILL_MOBS
FISH_ITEMS
COLLECT_ITEMS
MOB_INVASION
CAPTURE_ZONE
VISIT_REGIONS
INTERACT_BLOCKS

Protected built-in actions include:

ANIMATED_TITLE
ANIMATED_ACTIONBAR

This prevents addons from accidentally unregistering EventForge core systems.


Updated EventForgeSkriptAddon​

EventForgeSkriptAddon was updated for v1.0.2.

Added new Skript expressions:

eventforge text effects of %string%
eventforge text effects of %string% at tick %number%
eventforge parsed variables of %string% for event %string%
eventforge parsed variables of %string% for event %string% and player %player%
eventforge milestone count of event %string%
eventforge milestones of event %string%
eventforge milestone threshold %string% of event %string%
eventforge milestone display name %string% of event %string%

Added new Skript events:

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

Added event-context expressions:

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

New example script:

eventforge-v102-features.sk


Updated Simple Example addon​

EventForgeSimpleExample was updated to demonstrate v1.0.2 API features.

Added command examples:

/efsimple texteffects <text>
/efsimple parse <event> <text>
/efsimple milestones <event>

It now demonstrates:

TextEffectService
VariableService
EventInfo#getMilestones()
EventMilestoneInfo
EventForgePlayerMilestoneEvent


Updated Advanced Example addon​

EventForgeAdvancedExample was updated to demonstrate advanced v1.0.2 API usage.

It now showcases:

custom objective registration
custom action registration
VariableService
TextEffectService
animated title/actionbar/bossbar config
event milestones
milestone placeholders
dialogue integration
custom objective scoring

The bundled relic_hunt.yml example was updated to v1.0.2.


Summary​

EventForge v1.0.2 adds a lot of practical value:

more supported server software
better admin debugging tools
more polished event visuals
more ready-to-play objectives
better Mob Invasion behaviour
more useful public API
updated addon examples
EventForge v1.0.1 expands the plugin into a more complete event framework update. View full changelog here

This release adds reusable event variables, chance rewards, event cooldowns, multi-objective events, the action/trigger system, webhook actions, configurable GUI titles, NPC-style dialogues, API improvements, updated addon examples, and a much larger Skript addon.

Highlights​

Event variables
Chance rewards
Event cooldowns
Better API filtering
Start check reasons
Upcoming schedule API
Action and trigger system
Webhook action
Multi-objective events
GUI title customization
NPC-style dialogue system
Updated simple addon
Updated advanced addon
Updated Skript addon
Bundled Skript example scripts
API published to Maven Central


Event variables​

Event configs can now define reusable variables:

variables:
event_color: "&b"
arena_name: "Spawn Mine"
reward_name: "Mining Tokens"

Use them with:

{var:key}

Example:

display-name: "{var:event_color}Mining Rush"

messages:
start:
- "{var:event_color}&lMining Rush has started!"
- "&7Mine blocks in &f{var:arena_name}&7."

Variables can be used in player-facing event text such as messages, rewards, bossbars, sidebars, titles, actions, dialogues, and webhooks.

Variable keys are normalised, so hyphens and underscores are treated consistently.


Chance rewards​

Rewards now support optional chance-based bonus rewards.

rewards:
participation:
enabled: true
minimum-score: 1
commands:
- "eco give {player} 100"

chance-rewards:
bonus_key:
chance: 10.0
commands:
- "crate key give {player} event 1"

Chance rewards are supported under:

rewards.participation.chance-rewards
rewards.leaderboard.<position>.chance-rewards

Chance values are percentages.

5.0 = 5%
25.0 = 25%
100.0 = guaranteed

Chance rewards use the same reward command pipeline as normal rewards, so developer reward listeners still work.


Event cooldowns​

Events can now have cooldowns.

cooldown:
enabled: true
duration: 1h

Cooldown behaviour:

natural event finish starts cooldown
forced stop does not start cooldown
reload/shutdown does not start cooldown
manual starts respect cooldown
scheduled starts respect cooldown
API starts respect cooldown
Skript addon starts respect cooldown through the API
cooldowns persist in cooldowns.yml

Cooldowns are stored in:

plugins/EventForge/cooldowns.yml


Better API filtering and start checks​

The API now includes better event filtering and start validation.

New EventService methods include:

getEventsByCategory(String category);
getEventsWithTag(String tag);
getEventsByDifficulty(String difficulty);
getStartCheckResult(String eventId);
canStartEvent(String eventId);

EventStartCheckResult provides:

canStart();
hasPassed();
hasFailed();
getEventId();
getReason();

This is useful for:

custom GUIs
Discord bots
event browsers
admin dashboards
setup tools
start buttons


Upcoming schedule API​

ScheduleService now includes:

getUpcomingEvents(int limit);

This lets addons and dashboards show several upcoming scheduled events instead of only the next one.


Action and trigger system​

v1.0.1 expands the action and trigger system.

Supported triggers:

event-start
event-finish
event-stop
player-score

Built-in action types:

BROADCAST
MESSAGE
TITLE
ACTIONBAR
SOUND
COMMAND
EFFECT
PARTICLE
FIREWORK
WEBHOOK

Example:

triggers:
event-start:
actions:
- type: BROADCAST
message: "&b{event_display} has started!"

player-score:
actions:
- type: ACTIONBAR
message: "&a+{score_change} points &8| &f{new_score} total"


Webhook action​

The new WEBHOOK action can send HTTP POST messages asynchronously.

triggers:
event-start:
actions:
- type: WEBHOOK
url: "https://discord.com/api/webhooks/..."
username: "EventForge"
message: "{event_display} has started!"

Webhook safety improvements include:

HTTPS-only URLs
async execution
main thread is not blocked
Discord message length cap
username length cap
webhook URL is not printed in logs
placeholder support
{var:key} support

warning
Do not share real webhook URLs in public configs, screenshots, template packs, or support messages.

Custom action API​

Developers can now register custom actions.

EventForgeAPI.getActionRegistry().register("DISCORD_LOG", (action, context) -> {
String message = action.getString("message", "{event_display} started!");
String parsed = context.parsePlaceholders(message);

Bukkit.getLogger().info(parsed);
});

Server owners can use registered custom actions in event YAML:

triggers:
event-start:
actions:
- type: DISCORD_LOG
message: "{event_display} started!"

Custom action executor errors are caught safely so events continue running.


Multi-objective events​

Events can now run multiple objectives at the same time.

objectives:
mining:
type: MINE_BLOCKS
weight: 1.0

mobs:
type: KILL_MOBS
weight: 1.5

fishing:
type: FISH_ITEMS
weight: 1.0

All objectives contribute to the same event score and leaderboard.

The old format still works:

objective:
type: MINE_BLOCKS

Objective weight acts like a score multiplier.

Player-facing displays should show:

Multiplier: x1.5

not:

Weight: 1.5


Multi-objective developer API​

Custom objective developers now have access to:

EventObjectiveSession#getObjectiveId();
EventObjectiveSession#getObjectiveDisplayName();
EventObjectiveSession#getObjectiveWeight();
EventObjectiveSession#getWeightedScore(int amount);

EventInfo also exposes objective data:

EventInfo#getObjectives();
EventInfo#hasMultipleObjectives();

Custom objectives should use the public EventObjectiveSession API and should not cast sessions to internal classes.


GUI config updates​

GUI title customization is now available in config.yml.

gui:
enabled: true
rows: 6

titles:
player-main: "&b&lEventForge"
player-active: "&b&lActive Events"
admin-main: "&c&lEventForge Admin"

Implemented in v1.0.1:

GUI titles can be customized
colour codes are supported
configured titles are respected by GUI listeners
GUI config reloads through EventForge reload
hardcoded title constants remain as fallbacks

Current limitation:

GUI layouts still use fixed 6-row menus.
gui.rows is reserved for a future layout update.


Dialogue system​

v1.0.1 adds an NPC-style dialogue engine.

dialogues:
guide_intro:
npc-id: "guide"
display-name: "Guide Introduction"
cancel-existing: true
lines:
- speaker: "&eGuide"
text: "&fHello {player}."
title: "&eGuide"
subtitle: "&fWelcome."
sound: ENTITY_VILLAGER_AMBIENT
delay: 3

Simple line format is also supported:

dialogues:
guide_intro:
lines:
- "&eGuide: &fHello there!"
- "&eGuide: &fBring me 5 relics."

EventForge provides the dialogue engine. Addons, Skript, NPC plugins, or custom objectives decide when to start a dialogue.


Dialogue API​

New public API:

DialogueLineInfo
DialogueSequenceInfo
DialogueSessionInfo
DialogueService
EventForgeAPI#getDialogueService()

Common usage:

EventForgeAPI.getDialogueService()
.startEventDialogue(player, "relic_hunt", "guide_intro")
.thenAccept(session -> {
if (session.isCompleted()) {
// Move player to next task.
}
});

New Bukkit events:

EventForgeDialogueCompleteEvent
EventForgeDialogueCancelEvent


PlaceholderAPI additions​

v1.0.1 adds placeholders for variables, cooldowns, filtering, and start checks.

Examples:

%eventforge_event_variable_<event>_<variable>%
%eventforge_event_on_cooldown_<event>%
%eventforge_event_cooldown_<event>%
%eventforge_events_category_count_<category>%
%eventforge_events_tag_count_<tag>%
%eventforge_events_difficulty_count_<difficulty>%
%eventforge_event_can_start_<event>%
%eventforge_event_start_reason_<event>%


API published to Maven Central​

The EventForge API is available from Maven Central.

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


Simple addon update​

The Simple Addon has been updated to v1.0.1.

It now demonstrates:

EventService cooldown checks
event start check reasons
category/tag/difficulty filtering
upcoming schedules
event variables
multi-objective inspection
registered action listing
dialogue Bukkit events
player-facing multiplier display

The package structure was cleaned into:

command
listener
util


Advanced addon update​

The Advanced Relic Hunt addon has been updated to v1.0.1.

It now demonstrates:

custom RELIC_HUNT objective
custom RELIC_LOG action
multi-objective sessions
weighted score display
DialogueService usage
variables
cooldowns
triggers
built-in actions
custom actions
chance rewards

The package structure was cleaned into:

action
objective
model
util


Skript addon update​

EventForgeSkriptAddon has been updated to v1.0.1.

New effects:

clear eventforge cooldown of event %string%
start eventforge dialogue %string% of event %string% for %player%
cancel eventforge dialogue for %player%

New expression groups:

cooldowns
start checks
event variables
metadata filtering
upcoming schedules
multi-objective info
dialogues

The addon now depends on:

dev.hxze:eventforge-api:1.0.1-release


Skript example scripts​

The Skript addon now includes ready-to-use example scripts under:

example-scripts/

Included scripts:

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

These can be copied into:

plugins/Skript/scripts/


Notes for upgrading​

Existing v1.0.0 event files should continue to work.

You can keep using:

objective:
type: MINE_BLOCKS

or move to:

objectives:
mining:
type: MINE_BLOCKS

when you want multi-objective events.

Recommended upgrade steps:

Update EventForge jar
Restart the server
Check console for validation warnings
Add cooldowns only where needed
Add variables to simplify large configs
Move new events to objectives: format
Update addon examples to 1.0.1-release API
Update Skript addon if you use Skript integration
EventForge v1.0.0 is the first full release of EventForge, moving the plugin from beta into a more complete and polished release state.

Last updated 18/05/2026
This release focuses on:

Paper/Purpur compatibility
PlaceholderAPI support
expanded developer API
Skript support
event metadata
advanced conditions
better validation
better diagnostics
updated example addons


Compatibility​

EventForge has been tested on:

Paper 1.21.x
Purpur 1.21.x

Tested Minecraft versions:

1.21
1.21.2
1.21.4
1.21.5
1.21.8
1.21.11

Required Java version:

Java 21

info
EventForge is designed for modern Paper and Purpur servers.

Added PlaceholderAPI Support​

EventForge now includes optional PlaceholderAPI support.

PlaceholderAPI is not required for EventForge to run, but if it is installed, EventForge automatically registers its placeholders.

General placeholders​

%eventforge_version%
%eventforge_api_version%
%eventforge_loaded_count%
%eventforge_active_count%
%eventforge_active_events%

Event placeholders​

%eventforge_event_active_<event>%
%eventforge_event_loaded_<event>%
%eventforge_event_display_<event>%
%eventforge_event_time_left_<event>%
%eventforge_event_elapsed_<event>%
%eventforge_event_participants_<event>%

Player placeholders​

%eventforge_player_score_<event>%
%eventforge_player_rank_<event>%
%eventforge_player_participating_<event>%

Leaderboard placeholders​

%eventforge_top_player_<event>_1%
%eventforge_top_score_<event>_1%

Schedule placeholders​

%eventforge_scheduled_count%
%eventforge_next_scheduled_event%
%eventforge_next_scheduled_time%
%eventforge_event_scheduled_<event>%
%eventforge_event_next_start_<event>%

Metadata placeholders​

%eventforge_event_category_<event>%
%eventforge_event_difficulty_<event>%
%eventforge_event_author_<event>%
%eventforge_event_version_<event>%
%eventforge_event_tags_<event>%
%eventforge_event_description_<event>%

These placeholders can be used in supported scoreboard, TAB, hologram, menu, chat, and dashboard plugins.


Added Event Metadata​

Events can now include optional metadata.

Example:

metadata:
category: "Mining"
tags:
- mining
- survival
- economy
difficulty: "Easy"
author: "HxZe"
version: "1.0.0"
description:
- "Mine configured blocks to earn points."
- "Compete for leaderboard rewards."

Metadata is useful for:

event browsers
custom GUIs
Discord embeds
dashboards
event pack tools
PlaceholderAPI
developer addons

Developers can access metadata through:

eventInfo.getMetadata()


Added Advanced Conditions​

EventForge conditions have been expanded.

Events can now use:

minimum players
world restrictions
required permissions
blocked permissions
operator requirements
Minecraft time windows
weather restrictions

Example:

conditions:
minimum-players: 1
worlds:
- world

permissions: []
blocked-permissions: []

require-op: false
require-non-op: false

time:
enabled: false
min: 0
max: 23999

weather:
allowed: []

Permission conditions​

permissions:
- "eventforge.event.mining"

Blocked permission conditions​

blocked-permissions:
- "eventforge.event.blocked"

Time conditions​

time:
enabled: true
min: 0
max: 13000

Weather conditions​

weather:
allowed:
- CLEAR
- RAIN
- THUNDER

This gives server owners and event pack creators more control over when events can start.


Added Public API Services​

The EventForge API has been expanded with several new services.

EventPackService​

Added:

EventForgeAPI.getEventPackService()

Developers can now read:

pack IDs
pack display names
pack enabled state
pack authors
pack versions
pack event file counts
total pack count
enabled pack count

Useful for:

event pack browsers
custom GUIs
dashboards
Discord bots
pack management addons


StatsService​

Added:

EventForgeAPI.getStatsService()

Developers can now read:

player stats
per-event player stats
all tracked player stats
event history
recent event history
tracked player count
history count
winner data

Useful for:

player profile menus
stats GUIs
Discord commands
web dashboards
holograms
analytics tools


ScheduleService​

Added:

EventForgeAPI.getScheduleService()

Developers can now read:

scheduled event IDs
scheduled event info
next scheduled event
next start epoch second
seconds until next start
schedule type
interval seconds
announce-before timings
scheduled event count

Useful for:

scoreboards
TAB integrations
Discord countdowns
NPC displays
event dashboards
server websites


ObjectiveService​

Added:

EventForgeAPI.getObjectiveService()

Developers can now read:

registered objective IDs
whether an objective is registered
registered objective count

Useful for:

diagnostics
setup GUIs
admin dashboards
custom objective addon checks


Added Bukkit Developer Events​

EventForge now fires custom Bukkit events for addon developers.

Added:

EventForgeEventStartEvent
EventForgeEventStopEvent
EventForgeEventFinishEvent
EventForgePlayerScoreChangeEvent
EventForgeReloadEvent
EventForgeRewardExecuteEvent


Event start/stop/finish events​

Developers can listen for:

EventForgeEventStartEvent
EventForgeEventStopEvent
EventForgeEventFinishEvent

Example:

EventHandler
public void onEventStart(EventForgeEventStartEvent event) {
Bukkit.broadcastMessage("Event started: " + event.getEventDisplayName());
}


Score change event​

Added:

EventForgePlayerScoreChangeEvent

This event is cancellable and can modify the final score.

Example:

EventHandler
public void onScoreChange(EventForgePlayerScoreChangeEvent event) {
if (event.getPlayer().hasPermission("eventforge.booster.double")) {
event.setNewScore(event.getNewScore() * 2);
}
}


Reload event​

Added:

EventForgeReloadEvent

This fires after EventForge reloads and includes reload summary information.

Useful for:

refreshing addon caches
refreshing menus
updating dashboards
logging validation status


Reward execution event​

Added:

EventForgeRewardExecuteEvent

This event fires before EventForge executes a reward command.

It is cancellable and the command can be modified.

Example:

EventHandler
public void onReward(EventForgeRewardExecuteEvent event) {
event.setCommand(event.getCommand().replace("diamond", "emerald"));
}

Reward types:

PARTICIPATION
LEADERBOARD

Useful for:

reward logging
Discord logs
custom reward systems
anti-abuse checks
reward multipliers
external integrations


Added Helper API Improvements​

Custom objective developers now have more helper methods.

EventObjectiveLoadContext​

New helper methods include:

getLong(...)
getKeys(...)
isSection(...)
getCleanStringList(...)

requireString(...)
requirePositiveInt(...)
requirePositiveDouble(...)

getMaterial(...)
getEntityType(...)

getTimeSeconds(...)
requireTimeSeconds(...)

Example:

Material block = context.getMaterial("block", Material.STONE);
int points = context.requirePositiveInt("points");
long interval = context.getTimeSeconds("hint-interval", 30);

This makes custom objective config loading cleaner and safer.


EventObjectiveSession​

New helper methods include:

isActive()
getParticipantCount()
isParticipating(player)
getTopScore()
hasScores()
getLeaderboard(limit)

Example:

for (EventScoreEntry entry : session.getLeaderboard(3)) {
Bukkit.broadcastMessage("#"
+ entry.getRank()
+ " "
+ entry.getPlayerName()
+ " - "
+ entry.getScore());
}

This gives custom objective developers more tools during active events.


Added Better Optional Provider Validation​

EventForge now gives clearer validation warnings for optional custom content providers.

Covered providers:

ItemsAdder
Oraxen
Nexo
MMOItems
MythicMobs

Updated objectives:

Collection Rush
Fishing Frenzy
Mob Hunt
Mob Invasion

Example warning:

Custom item provider ITEMSADDER is used, but ItemsAdder is not installed or enabled.

Example warning:

Custom mob provider MYTHICMOBS is used, but MythicMobs is not installed or enabled.

This makes it easier to debug custom event packs and optional integrations.


Improved Load and Reload Diagnostics​

EventForge now tracks and displays better reload information.

When running:

/eventforge reload

admins now see a summary like:

Loaded events: 5 | Warnings: 0 | Errors: 0

The console also logs:

Event load summary:
  • Files scanned: 5
  • Loaded events: 5
  • Disabled files skipped: 0
  • Failed files: 0
  • Validation warnings: 0
  • Validation errors: 0
  • Scheduled events: 1
  • Registered objectives: 5

This makes debugging event files, packs, and custom objectives much easier.


Added EventForge Skript Addon​

A new optional companion addon is available for Skript users.

The Skript Addon allows scripts to:

start EventForge events
stop EventForge events
finish EventForge events
add EventForge points
set EventForge scores
check if events are active
check if events are loaded
read player scores
read player ranks
read top players
read top scores
read schedule information
read event metadata

Example:

command /eftest:
trigger:
start eventforge event "mining_rush"

command /efscoretest:
trigger:
add 10 eventforge points to player for "mining_rush"
send "&7Score: &f%eventforge score of player in \"mining_rush\"%"

The Skript Addon is optional and requires:

EventForge
Skript
EventForgeSkriptAddon


Updated Simple Example Addon​

The Simple Addon has been updated to demonstrate the expanded EventForge API.

It now demonstrates:

EventService
EventPackService
StatsService
ScheduleService
ObjectiveService
Event metadata
Bukkit developer events
Reward execution events
Score change events

Commands:

/efsimple info
/efsimple events
/efsimple active
/efsimple leaderboard <event>
/efsimple packs
/efsimple schedules
/efsimple objectives
/efsimple stats <player>
/efsimple history
/efsimple metadata <event>

This addon is useful for developers learning how to use the EventForge API.


Updated Advanced Relic Hunt Addon​

The Advanced Relic Hunt addon has been updated to demonstrate newer developer features.

It now demonstrates:

EventObjectiveLoadContext helper methods
EventObjectiveSession helper methods
metadata/tags in config
advanced conditions in config
readable time parsing
custom objective registration
custom scoring
custom leaderboards

Example:

metadata:
category: "Adventure"
tags:
- relic
- hunt
- exploration
- custom-objective
difficulty: "Medium"

Example:

hint-interval: 30s

The addon uses:

context.getTimeSeconds("hint-interval", 30);
session.getLeaderboard(3);


Improved Score Handling Safety​

ActiveEvent#addScore now handles zero or negative final scores more safely.

If a score-change listener modifies the final score to 0 or below, EventForge removes the player's score/participant entry instead of storing an unwanted zero or negative score.

This keeps scoring behaviour consistent.


API Documentation Updated​

Developer documentation has been expanded for:

Maven setup
API overview
EventPackService
StatsService
ScheduleService
ObjectiveService
Bukkit events
Custom objectives
Simple addon
Advanced addon
Skript addon


Migration Notes​

From beta to release​

If you are updating from the beta version, update your API dependency to:

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

Do not install an API jar​

Server owners should only install:

EventForge.jar

Addons use the API through Maven and depend on EventForge at runtime.

Example addons​

If you are using the example addons, rebuild or download the updated versions designed for 1.0.0-release.

Existing event files​

Existing event files should continue to work.

New optional config sections include:

metadata
advanced conditions

Safe condition defaults:

conditions:
minimum-players: 1
worlds:
- world

permissions: []
blocked-permissions: []

require-op: false
require-non-op: false

time:
enabled: false
min: 0
max: 23999

weather:
allowed: []

warning
Do not leave condition values blank.

Recommended Update Steps​

  1. Stop your server.
  2. Back up your plugins/EventForge/ folder.
  3. Replace the old EventForge jar with the new release jar.
  4. Start the server.
  5. Check the console startup output.
  6. Run:
/eventforge reload

  1. Check the reload summary.
  2. Run:
/eventforge list
/eventforge schedules
/eventforge check <event_id>

  1. Test one event manually.
Example:

/eventforge start mining_rush
/eventforge points <player> mining_rush 10
/eventforge finish mining_rush


Summary​

EventForge v1.0.0 Release is a major improvement over the beta version.

It adds:

PlaceholderAPI support
Skript support
Paper/Purpur testing
expanded Java API services
Bukkit developer events
reward execution event
event metadata/tags
advanced conditions
better validation
better reload diagnostics
updated example addons
custom objective helper APIs

This release makes EventForge stronger for:

server owners
event pack creators
Java addon developers
Skript users
Discord integrations
dashboard creators
custom objective developers
Buy a license now
$14.99
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
Lifetime
Share and earn
Refer this resource and earn a 10% commission.
410 Views
0 Purchases
2 Downloads
May 19, 2026 Published
May 31, 2026 Updated
Not yet rated
426.7 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. Minigame
  1. Mobs
Game mode
  1. Factions
  1. Prison
  1. Minigame
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
Creator
Owner
Recommended for you
Configurable milestones, GUI claiming, leaderboards, admin tools, and persistent YAML storage.
Not yet rated
1 purchase
Connect Minecraft server with Discord verification, staff alerts, rewards, role sync, booster perks
Not yet rated
0 purchases
Premium shader powered animated text for Minecraft Servers.
Not yet rated
0 purchases
Complete Eeveelution line, fully compatible with IA, Nexo, and Oraxen!
Not yet rated
1 purchase
Arcade decorations, fully compatible with IA, Nexo, and Oraxen!
Not yet rated
0 purchases
Share and earn
Refer this resource and earn a 10% commission.
410 Views
0 Purchases
2 Downloads
May 19, 2026 Published
May 31, 2026 Updated
Not yet rated
426.7 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. No
Type
  1. Gameplay
  1. Minigame
  1. Mobs
Game mode
  1. Factions
  1. Prison
  1. Minigame
Supported software
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. English
Creator
Owner
Recommended for you
Configurable milestones, GUI claiming, leaderboards, admin tools, and persistent YAML storage.
Not yet rated
1 purchase
Connect Minecraft server with Discord verification, staff alerts, rewards, role sync, booster perks
Not yet rated
0 purchases
Premium shader powered animated text for Minecraft Servers.
Not yet rated
0 purchases
Complete Eeveelution line, fully compatible with IA, Nexo, and Oraxen!
Not yet rated
1 purchase
Arcade decorations, fully compatible with IA, Nexo, and Oraxen!
Not yet rated
0 purchases
Top