Paper
Paper copied to clipboard
Collidable
Expected behavior
Using LivingEntity#setCollidable(boolean) should disable or enable collisions with the living entity.
Observed/Actual behavior
When setting collidable to false on Player, it collides with another entity no matter if it is set to false or true.
Steps/models to reproduce
- Spawn entity or obtain entity instance
- Get player instance
- Use setCollidable(false) on the player
- Collide with the entity :)
Plugin and Datapack List
[16:52:55 INFO]: Server Plugins (4): [16:52:55 INFO]: Bukkit Plugins: [16:52:55 INFO]: - FastAsyncWorldEdit, Multiverse-Core, ServerFramework, VoidGen
Paper version
[16:53:13 INFO]: Checking version, please wait... [16:53:14 INFO]: This server is running Paper version 1.21.1-99-master@1bc02e6 (2024-09-25T02:41:02Z) (Implementing API version 1.21.1-R0.1-SNAPSHOT) You are running the latest version Previous version: 1.21.1-98-9b1ee0d (MC: 1.21.1)
Other
I was doing this when command is issued using Brigadier, though I don't think that could cause any issues.
if you only set it on the player, this is the expected behavior because collisions work both ways
I have this logic which you say, should work:
Player player = context.getArgument("player", PlayerSelectorArgumentResolver.class).resolve(context.getSource()).getFirst();
disguiseManager.disguiseAsEntity(player, entityType.getEntityClass(), entity -> {
player.getCollidableExemptions().add(entity.getUniqueId());
if (entity instanceof LivingEntity livingEntity) {
livingEntity.setAI(false);
livingEntity.getCollidableExemptions().add(player.getUniqueId());
}
});
However this does not work.
setCollidable and collidable exemptions are purely server concepts, the player doesn't know it's not supposed to collide with a certain entity. The only way I can see that this could be fixed would be for the server to send team packets with collision set to never, but when dealing with plugins that may do the same it could become quite an ordeal.