geforkt von Mirrors/Paper
4cdbb0c86c
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 044d4ee9 SPIGOT-7283, SPIGOT-7318: Add AsyncStructureGenerateEvent and BlockState cloning 57b73d57 PR-913: Deprecate Projectile#doesBounce() and #setBounce() 43373c44 PR-904: Update FeatureFlag for 1.20.2 a7bbbf0c PR-911: Expand DataPack API with 1.20.2 pack version methods 0341e3a0 SPIGOT-7489: Add TeleportDuration to Display Entity bcd8d2aa PR-912: Update Minecraft Wiki URLs CraftBukkit Changes: 99aafc222 Increase outdated build delay dab849f08 SPIGOT-7283, SPIGOT-7318: Add AsyncStructureGenerateEvent and BlockState cloning 041b29ae3 Upgrade specialsource-maven-plugin 851a32cff PR-1263: Remove unused implementation of AbstractProjectile#doesBounce() and #setBounce() 251af0da3 PR-1261: Expand DataPack API with 1.20.2 pack version methods 46e4ba627 Upgrade specialsource-maven-plugin df3738a24 SPIGOT-7489: Add TeleportDuration to Display Entity 8d0fea457 PR-1262: Update Minecraft Wiki URLs e62905aab SPIGOT-7490: Fix entity equipment updates Spigot Changes: a0f3d486 Rebuild patches
44 Zeilen
2.4 KiB
Diff
44 Zeilen
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 1a6581a1524ab6599b13e6ae3fd419d59a1c915d..4c4a0f8d9c48f15095d9ce5c1773bf58b35137af 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -3399,10 +3399,24 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
if (this.level().isClientSide()) {
|
|
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 = this.level().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<Entity> list = this.level().getEntities((Entity) this, this.getBoundingBox(), EntitySelector.pushableBy(this));
|
|
|
|
if (!list.isEmpty()) {
|
|
- int i = this.level().getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING);
|
|
+ // Paper - moved up
|
|
|
|
if (i > 0 && list.size() > i - 1 && this.random.nextInt(4) == 0) {
|
|
int j = 0;
|