Context (skip if you want)
I tried to find a plugin out there that would prevent certain mobs colliding (AKA bumping, nudging, moving) other mobs. I.E. I wanted to have stationary villagers, I found plugins to anchor them but they were still nudgeable. So I made a plugin to do what I wanted.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
What does this plugin do?
The Configuration is easy right? Mostly..
Grouping prefix - leave alone, untested changing this
Time in seconds for the plugin to detect mobs to re-apply the rule
Any ignored worlds you wish to add
When to apply the rule
Default AND example groupings, you can make more with unique labels
Full config as-is:
Permission and Command
As already mentioned, there is only 1 of each meant for the sysops. It's not given by default except to OP.
Permission: xantamcollision.reload
Command: /xantamcollision:xcr
I tried to find a plugin out there that would prevent certain mobs colliding (AKA bumping, nudging, moving) other mobs. I.E. I wanted to have stationary villagers, I found plugins to anchor them but they were still nudgeable. So I made a plugin to do what I wanted.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
What does this plugin do?
- Allows you to group mobs under 4 different mechanisms:
- NEVER - Does NOT collide with anyone
- ALWAYS - Always collides with everyone (AKA: Vanilla)
- PUSH_OWN_TEAM - Collide only with mobs in the same group
- PUSH_OTHER_TEAMS - Collide with everyone EXCEPT the same group
- Allows you to define each group, infinitely as much as you want
- Allows you to set a time-definition on how often the plugin should check mobs to re-link. I.E. if you just spawned a mob, the plugin will group it and apply the rule (Standard is every 10 seconds)
- Only 1 permission and command: /reload, solely managed via config.yml
- Full limitations of this plugin is untested; behaviours of having mobs in multiple groups is unknown. Try to keep it simple as much as you can.
- Intended use is "small", not massively complex situations. I designed this for villagers to stop the community moving them, please do not downvote if you made the config super complex the plugin couldn't comprehend.
The Configuration is easy right? Mostly..
Grouping prefix - leave alone, untested changing this
Code (Text):
# Prefix added to all scoreboard team names created by this plugin.
# Change this if another plugin uses the same prefix.
team-prefix: "xc_"
# Change this if another plugin uses the same prefix.
team-prefix: "xc_"
Code (Text):
# How often (in seconds) to re-assert team membership and collision rules
# for loaded entities. This repairs changes made by other plugins/commands.
# Set to 0 to disable the repair task entirely.
repair-interval-seconds: 10
# for loaded entities. This repairs changes made by other plugins/commands.
# Set to 0 to disable the repair task entirely.
repair-interval-seconds: 10
Code (Text):
# Worlds the plugin should completely ignore. No changes are made in these worlds.
# Example: ["lobby", "minigames"]
ignored-worlds: []
# Example: ["lobby", "minigames"]
ignored-worlds: []
Code (Text):
# When should rules be auto-applied?
apply-triggers:
# When a player joins the server.
on-player-join: true
# When a new entity spawns (natural, spawner, breeding, commands, etc).
on-entity-spawn: true
# When a chunk becomes loaded (entities inside get processed).
on-chunk-load: true
apply-triggers:
# When a player joins the server.
on-player-join: true
# When a new entity spawns (natural, spawner, breeding, commands, etc).
on-entity-spawn: true
# When a chunk becomes loaded (entities inside get processed).
on-chunk-load: true
Code (Text):
# -------------------------------
# Groups (scoreboard "teams")
# -------------------------------
# Define as many groups as you need. Each group has:
# collision: one of [ALWAYS, NEVER, PUSH_OWN_TEAM, PUSH_OTHER_TEAMS]
# include: list of entity types that belong to this group
#
# IMPORTANT:
# - "PLAYER" refers to real players.
# - Keep each entity type in exactly one group for predictable results.
teams:
# Example: players and villagers never nudge anything and aren’t nudged by anything.
noclip:
# NEVER = members DO NOT collide with anyone (no push / no being pushed).
collision: NEVER
include:
- PLAYER
- VILLAGER
# Example: hostiles behave like vanilla (full collision with everyone).
hostiles:
# ALWAYS = members collide with everyone (vanilla behavior).
collision: ALWAYS
include:
- ZOMBIE
- SKELETON
- CREEPER
- SPIDER
- ENDERMAN
# Groups (scoreboard "teams")
# -------------------------------
# Define as many groups as you need. Each group has:
# collision: one of [ALWAYS, NEVER, PUSH_OWN_TEAM, PUSH_OTHER_TEAMS]
# include: list of entity types that belong to this group
#
# IMPORTANT:
# - "PLAYER" refers to real players.
# - Keep each entity type in exactly one group for predictable results.
teams:
# Example: players and villagers never nudge anything and aren’t nudged by anything.
noclip:
# NEVER = members DO NOT collide with anyone (no push / no being pushed).
collision: NEVER
include:
- PLAYER
- VILLAGER
# Example: hostiles behave like vanilla (full collision with everyone).
hostiles:
# ALWAYS = members collide with everyone (vanilla behavior).
collision: ALWAYS
include:
- ZOMBIE
- SKELETON
- CREEPER
- SPIDER
- ENDERMAN
Spoiler
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Code (Text):
# ===============================
# XantamCollision – config.yml
# ===============================
# Purpose: Decide which entities can push / be pushed (collide).
# Works by placing entities into scoreboard "teams" with a collision rule.
#
# What “collision” means here (plain English):
# - Collision = nudging and being nudged by hitboxes (body blocking).
# - Rules are per-group (team). Every member of a group follows that rule.
# - The four rules:
# ALWAYS -> Collide with EVERYONE (vanilla behavior).
# NEVER -> Collide with NO ONE (no push / no being pushed).
# PUSH_OWN_TEAM -> Collide ONLY with your own group.
# PUSH_OTHER_TEAMS -> Collide with everyone EXCEPT your own group.
#
# Tips:
# - Each entity type should appear in EXACTLY ONE group.
# - If a type appears in multiple groups, the last one processed on reload wins.
# - If a type appears in NONE, XantamCollision leaves it alone (vanilla behavior).
# - Type names are Bukkit enum names (e.g., PLAYER, VILLAGER, ZOMBIE, IRON_GOLEM).
# Prefix added to all scoreboard team names created by this plugin.
# Change this if another plugin uses the same prefix.
team-prefix: "xc_"
# How often (in seconds) to re-assert team membership and collision rules
# for loaded entities. This repairs changes made by other plugins/commands.
# Set to 0 to disable the repair task entirely.
repair-interval-seconds: 10
# Worlds the plugin should completely ignore. No changes are made in these worlds.
# Example: ["lobby", "minigames"]
ignored-worlds: []
# When should rules be auto-applied?
apply-triggers:
# When a player joins the server.
on-player-join: true
# When a new entity spawns (natural, spawner, breeding, commands, etc).
on-entity-spawn: true
# When a chunk becomes loaded (entities inside get processed).
on-chunk-load: true
# -------------------------------
# Groups (scoreboard "teams")
# -------------------------------
# Define as many groups as you need. Each group has:
# collision: one of [ALWAYS, NEVER, PUSH_OWN_TEAM, PUSH_OTHER_TEAMS]
# include: list of entity types that belong to this group
#
# IMPORTANT:
# - "PLAYER" refers to real players.
# - Keep each entity type in exactly one group for predictable results.
teams:
# Example: players and villagers never nudge anything and aren’t nudged by anything.
noclip:
# NEVER = members DO NOT collide with anyone (no push / no being pushed).
collision: NEVER
include:
- PLAYER
- VILLAGER
# Example: hostiles behave like vanilla (full collision with everyone).
hostiles:
# ALWAYS = members collide with everyone (vanilla behavior).
collision: ALWAYS
include:
- ZOMBIE
- SKELETON
- CREEPER
- SPIDER
- ENDERMAN
# Example (commented): members collide only with their own group.
# squads:
# # PUSH_OWN_TEAM = collide only with same-group members.
# collision: PUSH_OWN_TEAM
# include:
# - IRON_GOLEM
# - SNOW_GOLEM
# Example (commented): members collide with others, but NOT with teammates.
# no-friend-bump:
# # PUSH_OTHER_TEAMS = collide with everyone EXCEPT same-group members.
# collision: PUSH_OTHER_TEAMS
# include:
# - WARDEN
# - WITHER
# - ENDER_DRAGON
# -------------------------------
# Admin command & permission
# -------------------------------
# Command: /xcr -> reloads this file and re-applies rules immediately
# Permission: xantamcollision.reload (default: op)
# -------------------------------
# FYI:
# - Paper has a global switch "enable-player-collisions". If disabled, players won’t
# collide regardless of groups. XantamCollision will warn you on startup/reload.
# - After /xcr, all loaded players and nearby entities are re-processed immediately.
# XantamCollision – config.yml
# ===============================
# Purpose: Decide which entities can push / be pushed (collide).
# Works by placing entities into scoreboard "teams" with a collision rule.
#
# What “collision” means here (plain English):
# - Collision = nudging and being nudged by hitboxes (body blocking).
# - Rules are per-group (team). Every member of a group follows that rule.
# - The four rules:
# ALWAYS -> Collide with EVERYONE (vanilla behavior).
# NEVER -> Collide with NO ONE (no push / no being pushed).
# PUSH_OWN_TEAM -> Collide ONLY with your own group.
# PUSH_OTHER_TEAMS -> Collide with everyone EXCEPT your own group.
#
# Tips:
# - Each entity type should appear in EXACTLY ONE group.
# - If a type appears in multiple groups, the last one processed on reload wins.
# - If a type appears in NONE, XantamCollision leaves it alone (vanilla behavior).
# - Type names are Bukkit enum names (e.g., PLAYER, VILLAGER, ZOMBIE, IRON_GOLEM).
# Prefix added to all scoreboard team names created by this plugin.
# Change this if another plugin uses the same prefix.
team-prefix: "xc_"
# How often (in seconds) to re-assert team membership and collision rules
# for loaded entities. This repairs changes made by other plugins/commands.
# Set to 0 to disable the repair task entirely.
repair-interval-seconds: 10
# Worlds the plugin should completely ignore. No changes are made in these worlds.
# Example: ["lobby", "minigames"]
ignored-worlds: []
# When should rules be auto-applied?
apply-triggers:
# When a player joins the server.
on-player-join: true
# When a new entity spawns (natural, spawner, breeding, commands, etc).
on-entity-spawn: true
# When a chunk becomes loaded (entities inside get processed).
on-chunk-load: true
# -------------------------------
# Groups (scoreboard "teams")
# -------------------------------
# Define as many groups as you need. Each group has:
# collision: one of [ALWAYS, NEVER, PUSH_OWN_TEAM, PUSH_OTHER_TEAMS]
# include: list of entity types that belong to this group
#
# IMPORTANT:
# - "PLAYER" refers to real players.
# - Keep each entity type in exactly one group for predictable results.
teams:
# Example: players and villagers never nudge anything and aren’t nudged by anything.
noclip:
# NEVER = members DO NOT collide with anyone (no push / no being pushed).
collision: NEVER
include:
- PLAYER
- VILLAGER
# Example: hostiles behave like vanilla (full collision with everyone).
hostiles:
# ALWAYS = members collide with everyone (vanilla behavior).
collision: ALWAYS
include:
- ZOMBIE
- SKELETON
- CREEPER
- SPIDER
- ENDERMAN
# Example (commented): members collide only with their own group.
# squads:
# # PUSH_OWN_TEAM = collide only with same-group members.
# collision: PUSH_OWN_TEAM
# include:
# - IRON_GOLEM
# - SNOW_GOLEM
# Example (commented): members collide with others, but NOT with teammates.
# no-friend-bump:
# # PUSH_OTHER_TEAMS = collide with everyone EXCEPT same-group members.
# collision: PUSH_OTHER_TEAMS
# include:
# - WARDEN
# - WITHER
# - ENDER_DRAGON
# -------------------------------
# Admin command & permission
# -------------------------------
# Command: /xcr -> reloads this file and re-applies rules immediately
# Permission: xantamcollision.reload (default: op)
# -------------------------------
# FYI:
# - Paper has a global switch "enable-player-collisions". If disabled, players won’t
# collide regardless of groups. XantamCollision will warn you on startup/reload.
# - After /xcr, all loaded players and nearby entities are re-processed immediately.
Permission and Command
As already mentioned, there is only 1 of each meant for the sysops. It's not given by default except to OP.
Permission: xantamcollision.reload
Command: /xantamcollision:xcr
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
Mobs Colliding (XantamCollision) is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 37 times (via Spigot). Download it and open it directly in the game.