1.3
Compatibility
Required content
Changes
The Ascendant Path is offered, not forced
- You can say no. Winning the awakening roll now reserves the path and offers it to you alone, once you're out of combat: a title, a sound, and a chat message with clickable [Accept] and [Decline] (or
/peace ascendant accept|decline) explaining what you gain and give up. Nobody else learns of the offer. You keep your passives while you decide. - An unanswered offer is accepted after 120 seconds. Declining, dying or logging out with the offer open frees the path again, and so does a server stop.
- The kill or peaceful minute that wins the roll still counts normally; the roll is a bonus on top.
- Use it or lose it. The Ascendant must be active at least 3 hours in every 3 days: online, outside safe zones, passing the anti-AFK check, with someone else online. Too rarely seen, and the path abandons them and is announced as free again. The first 3 days are a grace period.
/peace abilitiesand the menu show the time so far. - Reawaken boost: whenever the path is freed (abandoned, cleared by an admin, declined or lost), both awakening chances are 5x until someone accepts it.
- Tougher Ascendant: +4 hearts and Resistance I while holding the path. Still no Strength, Luck or Hero of the Village.
Kill farming
- At most 2 kills of the same victim count per 24 hours, on top of the kill cooldown. A kill over the cap counts like one on cooldown.
- The double kill on a Value 9 or 10 player only applies to your first kill of them in 24 hours.
- And it costs them: a double-counted kill drops the victim one value (10 to 9, 9 to 8), keeping half the minutes needed to climb back. They are then protected for 12 hours: no further drop, and no double kills on them.
Kills you can't dodge
- Indirect kills count. If someone dies to lava, a fall or a trap within 10 seconds of a player hurting them, that player gets the kill, with all the normal rules (karma, the Ascendant passing on).
- Snowballs, eggs and fishing rods never combat-tag anyone or cost peaceful minutes, but they count as that last touch for the 10 seconds.
- Tamed animals count as their owner: a wolf's bite is its owner's attack (combat tag, karma, safe zones), and a wolf defending its owner counts as self-defense.
- Combat logging with a Totem of Undying no longer saves you. You die anyway, the totem drops with everything else, and your opponent gets the kill exactly once.
Anti-AFK
- Peaceful minutes now wait in a pending pile during each activity window, and are only added if the window passes. A failed window throws its minutes away, and the first window is no longer free.
- A window passes if you visited 3 chunks or placed/broke 30 blocks, and gained XP or used a block.
- "Someone else online" only counts active players: an AFK alt account no longer keeps you company.
- Logging out keeps your window and pending minutes for 60 minutes, so a quick reconnect loses nothing.
- Hitting a player, a value drop, kills and admin commands clear pending minutes too.
- With
/peace drift off, the action bar now says "drift off" instead of a minute count that never moves.
The Virtual Arena
- A cylinder: 5 blocks across and 4 up and down from its centre, so players in a cave below or on another floor aren't caught. Cast in the air, it forms on the ground below.
- An invisible wall: a trapped player who leaves (walking, an ender pearl, an elytra, pillaring up) is put back where they last stood inside, and an outsider who walks in is put back outside. Nobody is pulled to the centre, pushed, or put inside blocks.
- Nothing crosses the wall: no melee, arrows, wolves or abilities between a player inside and one outside.
- It only traps players the Ascendant could hurt: never creative or spectator players, players in someone else's duel, or anyone standing in a safe zone.
The Ascendant's abilities are attacks
- Everyone hit by the Sky Drop meteor, trapped by the Arena or caught by the Anti-Heal Aura is in combat with the Ascendant, who started it. Hitting the Ascendant back counts as self-defense.
- The meteor and the aura leave other people's duels alone and don't cross an Arena wall.
Duels
- No more free heal: when a duel ends on the winning blow, both players go back to the health they had when the duel started, instead of full health.
- No request spam: you can't challenge the same player again within 30 seconds, and
/peace duel toggleblocks all incoming requests. - A death within 10 seconds of your duel opponent's hit (lava, a fall) ends the duel the normal way too: nobody dies.
New: Bounties
/peace bounty <player>puts the items in your hand on their head; whoever kills them collects everything. The mod holds the items safely until then./peace bounty cancel <player>takes yours back, and/peace bounty listshows everyone wanted.
New: Hunted (off by default)
- With
huntedEnabled, every Value 0 player glows for 10 seconds every 5 minutes, so the hunters can be hunted too.
New: Discord announcements (off by default)
- Paste a Discord webhook into
discordWebhook, and the big moments are posted to your channel: the Ascendant awakening (never naming the player), taken or abandoned; players reaching Value 10 or 0; new seasons; combat logs; bounties; and duels if you switch them on. Each event has its own switch, and the text comes from the messages file.
Server owners
- The kill cooldown lives in the config only:
/peace setcooldownwriteskillCooldownMinutestoconfig/peacesmp.json, and/peace reloadapplies it. A cooldown saved in an old world is moved into the config once. - Name-colour teams are per player now, so players with the same value are no longer vanilla teammates (tamed wolves defend their owner against anyone). All of PeaceSMP's teams are removed from the scoreboard when the server stops, so nothing is left behind if the mod is removed.
- Resource pack updates can be switched off with
resourcePackAutoUpdate: false: the server keeps sending the pack it already has, and only looks for a newer one on/peace reload. Each build of the mod also only picks packs made for it, so a future pack can never break an older mod. /peace newseasonand/peace resetalso clear the new records: daily kill caps, drop protection, pending minutes, the Ascendant's active time, an open offer and the reawaken boost.- PeaceSMP is designed for online-mode servers. On offline-mode (cracked) servers, alt accounts can get around the per-player limits.
New config keys
maxKillsPerVictimPerDay (2), highValueDeathDropsValue (true), highValueDropKeepsPercent (50), highValueDropProtectionHours (12), killCreditSeconds (10), tamedAnimalsCountAsOwner (true), activityBlocksRequired (30), activityRecordKeepMinutes (60), arenaHeight (4), arenaBlocksProjectiles (true), ascendantMinActiveHours (3), ascendantActiveWindowDays (3), ascendantReawakenBoost (5), ascendantCanDecline (true), ascendantOfferSeconds (120), ascendantOfferTimeoutAccepts (true), ascendantBonusHealth (8), ascendantResistance (true), duelRequestCooldownSeconds (30), bountiesEnabled (true), huntedEnabled (false), huntedIntervalMinutes (5), huntedGlowSeconds (10), discordWebhook (empty), discordAscendant, discordValueExtremes, discordNewSeason, discordCombatLog, discordBounties (true), discordDuels (false), resourcePackAutoUpdate (true). Old configs keep working: missing keys use these defaults and are added to your file.
Permissions
peacesmp.command.bountyandpeacesmp.command.ascendantare open to everyone.
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:nwVERkWN:YfCDg59W"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:nwVERkWN:YfCDg59W"
}

