VoteSystem Extension is a poll module for TypeWriter, engineered for BTC Studio infrastructure. Players pick one option of a vote definition; results are stored in an artifact and exposed through commands and placeholders.
- Vote definitions: a display name, a list of options, an optional ISO-8601
endDateand aclosedMessageshown once voting is closed. - One vote per poll, or a cooldown: with
cooldownSecondsat 0 (default) the first vote is final. Above 0, a player can vote again after that many seconds; counts are cumulative. - Legacy votes: votes saved before the cooldown existed are dated at the first contact after the update, so their cooldown starts then.
- Debug log:
debugin the Vote Config logs votes accepted or refused.
| Command | Permission | Description |
|---|---|---|
/tw vote |
typewriter.vote |
Show usage. |
/tw vote <definition> <option> [target] |
typewriter.vote.cast |
Cast a vote (options are numbered from 1). |
/tw vote reset <definition> |
typewriter.vote.reset |
Reset the votes of a poll. |
/tw vote stats [definition] |
typewriter.vote.stats |
Show the results of one or all polls. |
vote_option_<id>_<n>, vote_display_<id>, vote_total_<id>, vote_stats_<id>[_<n>] (alias vote_votes_), vote_player_<id>, vote_has_voted_<id> and vote_closed_<id> (both 1 or 0), and vote_remaining_<id> (seconds before the end date, 0 without one).
VoteSystem Extension configuration is managed via TypeWriter's manifest system. Requires Typewriter 0.9.0-beta-177 on Paper.
| Entry | Id | Role |
|---|---|---|
| Vote Definition | vote_definition |
A poll: displayName, options, endDate, closedMessage, blockedMessage, data (artifact) |
| Vote Data | vote_data |
Artifact storing the votes |
| Vote System Configuration | vote_config |
cooldownSeconds and debug |
| Vote Action | vote_action |
Cast a vote on an option (0-based index). Its triggers and modifiers run only when the vote is recorded; a refused vote shows the closed or blocked message of the poll and fires refusedTriggers |
| Vote Message | vote_message |
Message depending on whether the player already voted |
| Vote Cast Event | vote_cast_event |
Event entry with triggers |
| Vote Fact | vote_fact |
Fact entry |
Poll messages (closedMessage, blockedMessage, the Vote Message texts) resolve placeholders, then are read as MiniMessage, so colours and styles typed in the editor show up.
The Vote Cast Event and Vote Fact entries are declared, but this extension does not fire or read them yet.
Requires Java 21.
# Clone the repository
git clone https://github.com/RenaudRl/TypeWriter-VoteSystem-Public.git
cd TypeWriter-VoteSystem-Public
# Build the project
./gradlew clean buildbuild/libs/VoteSystem-[Version].jar
- TypeWriter - The engine this extension is built for.
- BTC Studio - Maintenance and specialized optimizations.
Full documentation available at BTC Studio Docs.
GNU General Public License v3.0 or later — LICENSE — with a linking exception for the Typewriter engine — LICENSE-EXCEPTION.md.
| You may | Run it anywhere, including on a monetised server. Study it, modify it, use it as a base, and redistribute it — even for a fee. GPLv3 §4 explicitly allows charging for a copy. |
| You must | Publish the complete corresponding source of your version under GPLv3, preserve the copyright notices, and state that you modified it and when (§5(a)). |
| You may not | Ship a closed-source or proprietary version, relicense under stricter terms, or strip the attribution and present this work as your own — §8 terminates your rights automatically. |
| Marks | "Born To Craft" and "BTC Studio" are not covered by the GPL. Fork it freely, sell your fork if you like — but rebrand it. |
Reselling this code is legally allowed and practically pointless: whoever buys a copy from you receives, under the GPL, the right to redistribute it for free. That is the protection — not a clause forbidding sale, which the GPL does not permit us to add.
This is a third-party extension. It uses the public extension API of the Typewriter engine by gabber235 and contains none of its source. Born To Craft Studio is not affiliated with or endorsed by the Typewriter project.
The engine itself is not free software — its licence forbids redistributing it. Get it from the Typewriter project, and never redistribute it, including inside a fork of this repository.
Full attribution, the statement of modifications required by §5(a), and the trademark reservation are in NOTICE.md. Read it before redistributing.
© 2026 Born To Craft Studio.