Anti-Exploit Features

Built-in protections against XP farming

Placed Block Tracking

Players cannot gain XP from blocks they placed (enabled by default).

How It Works

  • Block positions are recorded when players place blocks
  • Breaking a self-placed block awards no XP
  • Other players CAN still get XP from blocks you placed
  • Applies to Mining, Woodcutting, Excavation
  • Placements made in creative mode are not recorded at all (and earn no Building XP either: a creative placement is not announced as a place moment, so nothing reacts to it)

New in 1.6.0: one ledger, read by everything

The record of what a player put down lives in the shared library, as one bit on the chunk the block sits in, saved and loaded with that chunk. XP, statistics, quest progress and achievement progress all read that same record, so a place-then-break credits nothing anywhere - it can no longer count toward a quest objective while being correctly refused for XP. There is no file to edit, scan or back up: only loaded chunks cost memory, and the record travels with the world.

Configuration

The knobs stay in skill-config.json, and they are read live, so /mmoconfig reload moves them without a restart.

// skill-config.json
{
  "trackPlacedBlocks": true,
  "placedItemExpireMinutes": 5
}
  • trackPlacedBlocks - Enable/disable tracking (default: true)
  • placedItemExpireMinutes - Minutes until placed items "become natural" (default 5)

A placed block is remembered until it is broken, whoever breaks it, and earns nobody credit; there is no expiry and no lenient mode. The case the old lenient setting was really for, a builder standing ore up for players to mine, is answered by the mmoskilltree.placedblocks.exempt permission: an exempt player's placements are never recorded, so players who mine them earn normally, and the builder still earns for placing. OP and creative placements are exempt already.

These knobs and the blacklist are server-owner settings only, kept in skill-config.json; no content pack can ship or override them. For the neighboring surfaces a pack can ship (bonus drops, XP maps, item requirements), see Building the zip.

Upgrading: one window of exposure

The MMO's own mods/mmoskilltree/placed-blocks.json is renamed to .legacy on the first start after upgrading to 1.6.0, with one notice naming the replacement, and 1.6.1 retires the library's own mods/ziggfreedcommon/placed-blocks.json the same way, since the record moved onto the chunks. Neither file is read or deleted. Blocks placed before the upgrade are forgotten once: place them again and they are remembered as usual. Two keys retire with the file, strictPlacedBlockCheck and placedBlockExpireMinutes; a skill-config.json still carrying either gets one boot notice and drops them on the next save.

One action, one credit

Break, kill, craft, pickup and place are each announced once, and XP, statistics, quest progress, achievement progress and bonus drops all answer that same announcement instead of re-detecting the moment for themselves. A self-placed block pays nothing anywhere: not XP, not a statistic, not a quest step, not a bonus drop. A placement the world cancels, and a placement made in creative mode, produce no place moment at all, so neither one advances a place-block objective either. See Bonus Drops for how a self-placed block is refused there too.

Placed Item Tracking

Prevents the place-and-harvest exploit for the Harvesting skill.

How It Works

  • Placed items (fruits, crops) are recorded in the same shared ledger as placed blocks
  • Harvesting an item you placed awards no XP, and counts toward no objective
  • Items expire after 5 minutes by default (placedItemExpireMinutes)

Combat Entity Blacklist

Certain entities don't give combat XP to prevent farming.

Default Blacklist

  • Deployable - Totems, turrets, and player-deployed entities
  • Projectile - Arrows and other projectiles (hardcoded)

Managing the Blacklist

A bare /mmoconfig blacklist with no arguments prints the current list. Every other verb takes its argument after a pipe, not a space, or it silently fails:

/mmoconfig blacklist                          # View current blacklist
/mmoconfig blacklist --args=add|Dummy         # Add "Dummy" entities
/mmoconfig blacklist --args=remove|Deployable # Remove from blacklist
/mmoconfig blacklist --args=clear             # Clear entire blacklist

Pattern Matching

Blacklist patterns use substring matching against entity archetype component names.

Creative Mode XP

XP is disabled in creative mode by default.

/mmoconfig creative --args=true   # Disable XP in creative (default)
/mmoconfig creative --args=false  # Enable XP in creative

Crafting Exploits

Currency conversion recipes give 0 XP:

  • Ingredient_Life_Essence_100_Recipe_ → 0 XP
  • Ingredient_Life_Essence_Concentrated_Recipe_ → 0 XP

Luck for Crafting

Luck bonuses are disabled for Crafting due to item duplication bugs. This may be re-enabled in a future update.

Protection Summary

ExploitProtectionConfigurable
Place & break blocksPlaced block trackingYes
Place & harvest itemsPlaced item trackingYes
Hit deployablesEntity blacklistYes
Hit projectilesHardcoded blockNo
Creative mode farmingCreative XP disableYes
Currency conversionZero XP recipesYes (via xp-maps)
Place then break, for a quest stepThe shared ledgerYes