Tags
Creators
Details
Licensed ARR
Published last year
Updated 3 days ago
All versions
2.4.0
Release
MachinaWards 2.4.0 — Hardened Menus3 weeks ago 13
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
Platforms
Paper
Purpur
Changes
- Fixed a ward duplication exploit in the shop. With
/ward shopopen, clicking a stack of ward items in your own inventory was treated as buying that item, and the shop handed back a copy of the whole stack for one price. Ward items stack, so the stack doubled each time. The shop now only accepts clicks on its own slots, every purchase gives exactly one freshly made ward, and the ward is only handed over once the economy confirms the payment went through. Servers running the shop should update. - Clearer ward block controls. Left-click mines the ward block like any other block (owners can break their own ward in survival), right-click opens the menu, and pickup is sneak+right-click twice. The pickup prompt now says exactly that.
- Every menu button explains itself. Each button describes what it does, shows its current state, and says what a click will do. The PVP and Mob Damage flags keep their own icons and glow when on, instead of turning into a barrier.
- Reworked ward menu. A header at the top shows the ward's tier, radius, members, location, and ID, and the menu title names the ward. The duplicate Add Member button is gone from the main menu; adding members lives on the Members screen, where the button grays out when the ward is full.
- Two-click confirms that work on Bedrock. Remove Member and Clear Logs now take two clicks within the pickup confirm window (
pickup.confirm_ms) instead of a shift-click, so Geyser/Bedrock players can use them. - Friendlier chat prompts. Rename, Entry Message, and Add Member accept
canceland expire after 60 seconds. A rejected name keeps the prompt open so you can try again. - Ward name rules. Names are 1–32 characters, no spaces, and unique across the server. Color codes are allowed and kept for display;
/ward tp <name>and the other name lookups ignore colors. Re-adding an existing member, or the owner, is refused. - More useful shop. Each ward shows its formatted price, member limit, and feature count, plus a red line when you can't afford it. A bought ward now stacks with a crafted one.
- Lighter on the server. History and View Logs close the menu first and read the database off the main thread.
- Show Radius is private. The boundary particles are shown only to the player who clicked, and clicking again restarts them.
- Tidier Ward Intelligence. The menu is now 36 slots, and Clear Logs sits apart from View Logs so a stray click can't reach it.
- No clashes with other plugins. MachinaWards now recognizes its own menus directly instead of by their title, so another plugin's menu with the same title is no longer affected.
- Menu sounds. New
sounds.menu_click,sounds.menu_success, andsounds.menu_errorkeys (set to""to disable). Existing configs need no edits: missing keys fall back to the defaults. - Boot-verified at both ends of the range: Paper 1.21.8 (the compatibility floor) and Paper 26.2 (Java 25), each a clean enable with zero errors. Your wards, members, database, and config carry over — drop the new jar in and restart.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:SX98EKcZ:NcBtXkHc"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:SX98EKcZ:NcBtXkHc"
}

