🚀 EventForge v1.0.0 Release
EventForge v1.0.0 is the first full release of EventForge, moving the plugin from beta into a more complete and polished release state.
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
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: []
Do not leave condition values blank.
Recommended Update Steps
- Stop your server.
- Back up your
plugins/EventForge/folder. - Replace the old EventForge jar with the new release jar.
- Start the server.
- Check the console startup output.
- Run:
/eventforge reload
- Check the reload summary.
- Run:
/eventforge list
/eventforge schedules
/eventforge check <event_id>
- 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