Skip to main content
Dan's Plugins Community
HomeNewsGuidesLeaderboardAboutRoad MapCommissionsDev PortalAccount
All plugins
MiniFactions icon

MiniFactions

0

Latest: v1.0.1
84 downloads on GitHub

First released April 16, 2022 · Last updated October 7, 2026

Downloads from this site

45 total

7 latest (v1.0.1)

Introduces factions into the game in a simple, minimal, expandable way.

factions
DownloadUser guideSource
A recreated chat panel: every line is the plugin’s real output, captured from commands a bot player ran on a test server.

Verified before release

Version 1.0.1 was started on real servers running Minecraft 1.19.4, 1.21.11, 26.2 and 26.3 before it was published. The jar you download is the exact one that passed. How releases work

Versions

All releases on GitHub
Development build
Pre-release
October 7, 2026· 2 downloads

Automated build of main at cc6f4f3815bf4367e293c438ddef3685f7ff9eaa.

This is not a release. It is unreleased, unreviewed code that has not been through any release check, and a broken build can stop a server from starting. Do not run it on a server you care about without a backup.

Install it with Dan's Plugin Manager:

/dpm get minifactions --experimental

Return to published releases with /dpm get minifactions --stable.

MiniFactions-1.0.2-SNAPSHOT.jar (622.6 KB)

1.0.1

For a server running v1.0.0 this is a drop-in update. Factions data, commands, permissions and configuration all work exactly as before. Usage reporting sends the same information and still respects every existing opt-out. The only visible difference is a new link to the usage-reporting details page.

Changes

  • Usage reporting
    • The startup message about usage reporting now links to https://danielstephenson.dev/usage-reporting. The comments in a newly generated config.yml and plugins/trace/config.yml use the same link. Existing config files are left as they are.
    • The bundled usage-reporting client is updated to 0.6.1. It reports the same data, uses the same server ID from plugins/trace/config.yml, and turns off the same ways as before.

Version

v1.0.0 → 1.0.1 — PATCH. Mechanical floor from comparing the two jars: PATCH. Judgment: MiniFactions behaves the same way for operators after this change. The bundled usage-reporting client moved from 0.5.0 to 0.6.1 and gained installIdFile/installIdFromFile, but the plugin never calls them: it still takes its install ID from server-id in plugins/trace/config.yml. This release sends the same data, reads and writes the same files, and leaves commands, permissions and config keys alone. The only visible change is the usage-reporting details link in the startup log and in comments of newly generated config files, so the patch floor stands.

  • no interface or storage difference observed between the jars

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.minifactions.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
  • dansplugins.minifactions.trace.TraceClient$Builder: added public dansplugins.minifactions.trace.TraceClient$Builder installIdFile(java.io.File);

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
  • save-compatibility gate run: data written by v1.0.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.0.0

On a server running v0.3.0, ordinary players get the core faction commands without a permissions plugin or any extra setup. Until now those commands were op-only unless you granted them. This includes creating, joining and leaving factions, claiming and unclaiming land, inviting, kicking and transferring ownership. Admin nodes (mf.config and the mf.force family) stay op-only. Only the faction leader can now disband a faction. When usage reporting is on, a random server ID is now saved in plugins/trace/config.yml and sent with each event. This release also adds support for Minecraft 26.3.

Changes

Permissions and commands

  • mf.list, mf.info, mf.create, mf.join, mf.leave, mf.invite, mf.kick, mf.disband, mf.transfer, mf.power, mf.claim, mf.unclaim and mf.checkclaim now default to true instead of op. mf.config and all force commands stay op-only (#103).
  • /f disband now only works for the faction leader. Other members get "You are not the leader of your faction." (#103).

Compatibility

  • Added support for Minecraft 26.3 (#101).

Usage reporting

  • If reporting is on, a random server ID (a UUID) is created the first time it's needed and added as a server-id: line to plugins/trace/config.yml. All plugins on the server that report to trace share this ID, and it's sent with every event so distinct servers can be counted. It doesn't identify any person, account or IP address. If reporting is turned off, no ID is created or written (#99).
  • The startup message and the comments in config.yml now mention the random server ID (#100).

Upgrade notes

  • Check your permissions. If you relied on these commands being op-only, ordinary players will be able to use them after you upgrade. To keep them restricted, set the nodes to false for the default group in your permissions plugin (for example LuckPerms).
  • If you used mf.disband to let members other than the leader disband a faction, that no longer works. The leader has to disband it, or an operator can use a force command.
  • If you don't want a server ID stored or sent, turn usage reporting off with usage-reporting.enabled: false in this plugin's config.yml, or for every plugin with enabled: false in plugins/trace/config.yml. To get a new ID, delete the server-id: line.

Version

v0.3.0 → 1.0.0 — MAJOR. Mechanical floor from comparing the two jars: PATCH. Judgment: PR #103 changes the default of thirteen player permission nodes (mf.list, mf.info, mf.create, mf.join, mf.leave, mf.invite, mf.kick, mf.disband, mf.transfer, mf.power, mf.claim, mf.unclaim, mf.checkclaim) from op to true. Players who could not use these commands will be able to after the upgrade, and the mechanical check cannot see that. The same PR also changes how /f disband behaves: only the faction leader can now run it, where before any member who held the permission could. Separately, the vendored trace-client 0.5.0 (#99) writes a new server-id line to plugins/trace/config.yml. That alone would be a minor bump, but the permission change makes this major.

  • no interface or storage difference observed between the jars

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.minifactions.trace.TraceClient: added public java.lang.String installId();
  • dansplugins.minifactions.trace.TraceClient$Builder: added public dansplugins.minifactions.trace.TraceClient$Builder installId(java.lang.String);

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
  • save-compatibility gate run: data written by v0.3.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

0.3.0

For a server running v0.2.0, this is a drop-in upgrade. It fixes several command bugs. The worst of them let unclaiming release land that belonged to another faction. Usage reporting can now tag all events from a server, for example to mark a test or CI server. Saved faction and territory data is unchanged, and no config changes are needed.

Changes

Territory

  • Unclaiming no longer touches a chunk held by another faction. Before, /mf unclaim and /mf force unclaim <faction> could clear the owner of a chunk that the named faction didn't own, while the real owner still counted it as theirs. Now the command refuses with "This territory is not claimed by …". The usage line for /mf force unclaim also showed /mf force claim, and now shows the right command (#90)

Commands

  • /mf info <faction> now looks up the faction you name. Before, it read the wrong argument and failed. The help text now lists the optional arguments for /mf info [faction] and /mf power [ign] (#89)
  • /mf force invite and /mf force join now send "That faction wasn't found." and other lookup errors to the admin who ran the command. Before, these went to the target player (#95)

Usage reporting

  • Every usage-reporting event now carries the plugin version as a version tag, not just the startup event (#94)
  • The server-wide plugins/trace/config.yml accepts an optional tags: block. Its tags are added to every event that plugins on the server report. Put ci: "true" there on a test or CI server to keep its events out of real-installation figures. A plugin's own tag of the same name wins. Newly created files include a commented-out example. Existing files are never rewritten, so to use this, add the block yourself (#93)

Version

v0.2.0 → 0.3.0 — MINOR. Mechanical floor from comparing the two jars: PATCH. Judgment: Most of this release is bug fixes: /mf info <faction>, error messages from /mf force invite and join, and unclaiming. The bundled usage-reporting client also adds new behaviour that the mechanical check cannot see. Every reported event now carries the plugin version as a tag, and the server-wide plugins/trace/config.yml can hold a new optional tags: block that is added to every event. That is new behaviour and new data sent, so the floor is raised to minor. Nothing breaks an existing server: no data format changes, the existing trace config file is never rewritten, and the TraceClient.builder signature change is in a vendored internal class rather than the plugin's API.

  • no interface or storage difference observed between the jars

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.minifactions.trace.TraceClient: removed/changed public static dansplugins.minifactions.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
  • dansplugins.minifactions.trace.TraceClient: added public static dansplugins.minifactions.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
  • dansplugins.minifactions.trace.TraceClient: added public static final java.lang.String VERSION;

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • save-compatibility gate run: data written by v0.2.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

0.2.0

MiniFactions is a small, no-frills factions plugin: players create factions, invite and kick members, hand off ownership, and claim chunks of territory using a power system that grows over time and drains on death. It is aimed at server owners who want basic factions and land claiming without the size of a full-featured factions plugin, and at developers who want a simple API (MiniFactionsAPI, data interfaces for factions, power and territory) to build on.

What it adds

All commands are reachable as /minifactions, /mf, /factions or /f. Only mf.default and mf.help are granted to everyone by default; everything else defaults to op, so grant nodes through your permissions plugin before players can use factions.

  • /mf — plugin version and developer info (mf.default, default: everyone)
  • /mf help — help menu (mf.help, default: everyone)
  • /mf list — list all factions (mf.list)
  • /mf info — view faction information, including other factions' (mf.info)
  • /mf create — create a faction (mf.create)
  • /mf join — join a faction you were invited to (mf.join)
  • /mf leave — leave your faction (mf.leave)
  • /mf invite — invite a player; the faction is told when someone is invited (mf.invite)
  • /mf kick — kick a player from your faction (mf.kick)
  • /mf disband — disband your faction; all its chunks are unclaimed (mf.disband)
  • /mf transfer — transfer faction ownership (mf.transfer)
  • /mf power — check a power level (mf.power)
  • /mf claim — claim the chunk you stand in; claiming can cost power (mf.claim)
  • /mf unclaim — unclaim the chunk you stand in (mf.unclaim)
  • /mf checkclaim — see who owns the current chunk (mf.checkclaim)
  • /mf config — view or change config options in-game (mf.config)
  • /mf force ... — admin overrides: help, join, invite, kick, disband, claim, unclaim (mf.force, plus mf.force.help, mf.force.join, mf.force.invite, mf.force.kick, mf.force.disband, mf.force.claim, mf.force.unclaim)

Config to look at (plugins/MiniFactions/config.yml):

  • usage-reporting.enabled (default true) — on enable and on each command, the plugin sends its name, version and the command name to the author's trace server. Nothing about players or the server is sent; it runs off the main thread and is dropped if unreachable. Set to false to turn it off. It can also be disabled server-wide in plugins/trace/config.yml, or with TRACE_USAGE_REPORTING=off / DO_NOT_TRACK=1 in the server environment. Whether reporting is on, and why if it is off, is logged at startup.
  • usage-reporting.endpoint and usage-reporting.key — where reports go and the (non-secret) key that attributes them to MiniFactions. An empty key disables reporting.
  • Gameplay options are read through /mf config; the shipped config.yml only contains the usage-reporting block, and missing defaults are written into the file when the plugin version changes.

What it writes

  • plugins/MiniFactions/config.yml — created on first start; the usage-reporting block is added to older config files that lack it.
  • Faction, player, power-record and territory-chunk data is persisted as JSON under plugins/MiniFactions/ (see PersistentData and the Json* data classes).
  • The plugin also ships bStats metrics, which uses the shared plugins/bStats/config.yml, and the trace client honours a shared plugins/trace/config.yml if one exists.

Requirements

  • Spigot/Paper 1.13 or newer (api-version: 1.13).
  • No plugin dependencies are declared in plugin.yml; the Ponder framework it is built on is bundled in the jar.
  • Outbound HTTPS access is used for bStats and for usage reporting to https://trace.danielstephenson.dev unless you disable them; the plugin works without it.

Since the last prerelease

  • Usage reporting added: a small event (plugin name, version, command name) is sent to the author's trace server on enable and per command, off the main thread, with the usage-reporting.enabled opt-out in config.yml (#81).
  • Usage reporting is now announced in the console at startup, including how to turn it off, and can be disabled server-wide via plugins/trace/config.yml or the TRACE_USAGE_REPORTING / DO_NOT_TRACK environment variables; the usage-reporting block is written into existing config files that predate it (#83).
  • Every mf.* permission node is now declared in plugin.yml so LuckPerms and similar can list and tab-complete them, and the bare /mf command now checks mf.default (granted to everyone by default) instead of silently passing (#73).
  • Checking whether a player has a power record no longer creates one as a side effect (#80).
  • The in-game help menu no longer lists a /mf config sub-command that did not exist (#78).

Verification

Booted twice on a real Spigot server before publication — boot gate run (8 assertions passed). This release carries the exact jar that was verified.

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

Snapshot release marking MiniFactions's move to an AI-first development approach.

Day-to-day feature work, grooming, review and maintenance now run through AI agents working directly against this repository, with the maintainers setting direction and approving what lands. The version bump marks that change in how the project is built — it is not a compatibility break. Behaviour, configuration and stored data are unchanged, and existing installations can upgrade in place.

This is a dated snapshot, not a finished release. It follows the precedent set by Medieval Factions' 6.0.0-SNAPSHOT-7-25-2026: the AI-first line has not yet been verified in live operation, and the snapshot designation stays until it has.

Version changes

  • pom.xml: 0.1-ALPHA → 0.2.0-SNAPSHOT-8-8-2026

Opened as https://github.com/Dans-Plugins/MiniFactions/pull/71.


Drafted by Claude on behalf of Daniel Stephenson.

MiniFactions 0.1 Alpha Release (April 17th, 2022)

What's Changed

Note

Persistence is not implemented in this version. Created factions and claimed land will not be saved upon restarting the server.

Full Changelog

https://github.com/Dans-Plugins/MiniFactions/compare/0.1-ALPHA-4-16-2022...0.1-ALPHA-4-17-2022

MiniFactions 0.1 Alpha Release (April 16th, 2022)

Features

This version of the plugin features social organization and a territory system based on individual power.

Commands

  • /mf help
  • /mf list
  • /mf info
  • /mf join
  • /mf leave
  • /mf create
  • /mf invite
  • /mf disband
  • /mf kick
  • /mf transfer
  • /mf power
  • /mf claim
  • /mf checkclaim
  • /mf unclaim
  • /mf config

Config Options

  • initialPower
  • territoryCostsPower
  • minimumPowerCost
  • losePowerOnDeath
  • percentagePowerLostOnDeath

Note

Persistence is not implemented in this version. Created factions and claimed land will not be saved upon restarting the server.

Full Changelog

https://github.com/Dans-Plugins/MiniFactions/commits/0.1-ALPHA-4-16-2022

BlueMap Medieval Factions

Renders Medieval Factions claims on BlueMap's web map. Originally written by Kilz.

Currencies

An expansion for Medieval Factions that allows faction owners to create and mint local currencies.

Democracy

Lets a Medieval Factions faction hold elections: members stand as candidates, vote, and follow the count.

Fiefs

Allows players to create fiefs and manage them.

Something wrong, or something missing?

Bugs go to the plugin's issue tracker, where they can actually be fixed and tracked. Ideas for new behaviour go to the Dev Portal, where the community can upvote them.

v0.15.2
Source CodeReport a BugKnowledge BaseFree Server Hosting

More by Daniel Stephenson → danielstephenson.dev · Play his games in your browser