Skip to content

PokeRemoval

Clears wild Pokemon and dropped items from every loaded dimension on a timer, with chat warnings before each sweep. Shiny, legendary, boss, raid, owned and battling Pokemon are never removed.

What it does

  • Runs one or more removal groups on their own timers (default: Pokemon and dropped items, every 10 minutes).
  • Warns players in chat (or the action bar) before each sweep: 5 minutes, 60, 30, then 5 to 1 seconds. After the sweep it announces how many entities were removed.
  • Skips sweeps when fewer than minOnlinePlayers players are online.
  • Can skip whole dimensions.
  • For Pokemon it always keeps: Pokemon in a battle, owned or released player Pokemon, bosses, legendaries, mythicals, raid Pokemon, and shinies.

Based on EnvyWare's PokeRemoval (MIT), rewritten for this network. Server-side only.

How players use it

Players do not use it directly. They see the warnings and the "cleared" message. Catch or battle a Pokemon you want before the sweep; shinies and legendaries are safe anyway.

Staff guide

Task Command
Reload config.json /pokeremoval (op level 2)

/pokeremoval only reloads the JSON. A new jar needs a restart. Only one pokeremoval-*.jar may be in mods/.

Each sweep logs:

[PokeRemoval]: Completed 'Pokemon' cleanup across all loaded dimensions; removed 123 entities

If that line says removed 0 for hours while the world is busy, the group is not matching anything.

Configuration

config/pokeremoval/config.json, written with defaults on first start. Reload with /pokeremoval.

Field Meaning
minOnlinePlayers No sweeps below this many players (default 1)
removalSettings.<group>.name Name used in logs
mode WHITELIST: remove only the entity types in removedEntities. BLACKLIST: remove every entity type except those listed. Be very careful with BLACKLIST
removedEntities Entity type ids, for example pixelmon:pixelmon, minecraft:item
removalTimeMinutes Minutes between sweeps
initialDelayMinutes Delay before the first sweep after boot
ignoreEntitiesYoungerThan Skip entities younger than this, in ticks (20 ticks = 1 second). The default 60 is 3 seconds
blacklistedWorlds Dimension ids to skip, for example minecraft:the_end
broadcastRemoval, removalBroadcast, removalBroadcastActionBar The after-sweep message. %amount% is the count
warningBroadcasts Warnings before the sweep: enabled, timeBeforeRemovalSeconds, actionBar, broadcast lines
matchingRequirements Not used. Left over from the original mod. The Pokemon protections above are built in

Colour codes use &.

Data and storage

None besides the config. Removed entities are gone for good.

Troubleshooting

Symptom Cause Fix
Sweeps say they ran but removed 0 Old 2.3.1 or earlier spec-based filter matched nothing Use 2.3.2 or later
Shinies were removed 2.3.2 lost shiny protection Use 2.3.3 or later
No sweeps at all Fewer than minOnlinePlayers online, or the group's dimension is blacklisted Check the config
Player items vanished They were on the ground during an item sweep Expected. Warnings go out first

Maintainer notes

  • The Pokemon policy is code, not a PokemonSpecification string. In 2.3.1 a compound spec was accepted but matched nothing, so sweeps logged success and removed nothing.
  • Shiny is a palette tag, not a flag. The check is Pokemon.isShiny() plus the stored palette name, because a displayed ribbon can override the palette.
  • A group is locked while it runs, so a slow sweep is never started twice.
  • The deploy record and rollback jar for main are in manual_uploads/2026-08-05-pokeremoval-2.3.2-main/ in the ops repo.
  • Builds against Pixelmon 9.3.16 and 9.4.x. run-test-server.sh starts a local test server.

Building

./gradlew clean build

Java 21. Output: build/libs/pokeremoval-<version>.jar.

Full command, permission and config tables: Reference.