mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 12:27:59 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
44 lines
2.4 KiB
Diff
44 lines
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
|
Date: Wed, 15 Apr 2020 17:56:07 -0700
|
|
Subject: [PATCH] Don't run entity collision code if not needed
|
|
|
|
Will not run if:
|
|
Max entity cramming is disabled and the max collisions per entity is less than or equal to 0.
|
|
Entity#isPushable() returns false, meaning all entities will not be able to collide with this
|
|
entity anyways.
|
|
The entity's current team collision rule causes them to NEVER collide.
|
|
|
|
Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
index 559c949f5ddf086877a798a7e8eb492c329b62c8..428881b560f30cd7804dfc660a62f0ec94bd7f4c 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -3682,10 +3682,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
if (!(world instanceof ServerLevel worldserver)) {
|
|
this.level().getEntities(EntityTypeTest.forClass(net.minecraft.world.entity.player.Player.class), this.getBoundingBox(), EntitySelector.pushableBy(this)).forEach(this::doPush);
|
|
} else {
|
|
+ // Paper start - don't run getEntities if we're not going to use its result
|
|
+ if (!this.isPushable()) {
|
|
+ return;
|
|
+ }
|
|
+ net.minecraft.world.scores.Team team = this.getTeam();
|
|
+ if (team != null && team.getCollisionRule() == net.minecraft.world.scores.Team.CollisionRule.NEVER) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ int i = worldserver.getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING);
|
|
+ if (i <= 0 && this.level().paperConfig().collisions.maxEntityCollisions <= 0) {
|
|
+ return;
|
|
+ }
|
|
+ // Paper end - don't run getEntities if we're not going to use its result
|
|
List list = this.level().getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushableBy(this));
|
|
|
|
if (!list.isEmpty()) {
|
|
- int i = worldserver.getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING);
|
|
+ // Paper - don't run getEntities if we're not going to use its result; moved up
|
|
|
|
if (i > 0 && list.size() > i - 1 && this.random.nextInt(4) == 0) {
|
|
int j = 0;
|