mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-09 06:50:32 +08:00
298c9022b0
Upstream has released updates that appears 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:
ccb9614e #548: LivingEntity - add methods for getting/setting invisibility
CraftBukkit Changes:
f8d4da08
#743: LivingEntity - add methods for getting/setting invisibility
Spigot Changes:
17d78dbd Rebuild patches
51 lines
2.8 KiB
Diff
51 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 8 Mar 2016 23:25:45 -0500
|
|
Subject: [PATCH] Disable Scoreboards for non players by default
|
|
|
|
Entities collision is checking for scoreboards setting.
|
|
This is very heavy to do map lookups for every collision to check
|
|
this setting.
|
|
|
|
So avoid looking up scoreboards and short circuit to the "not on a team"
|
|
logic which is most likely to be true.
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index abbf59bb91021821876a8960e8f77fac24457ec4..04430aae52205ee167662004e45c145b9d2e8bed 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -203,4 +203,9 @@ public class PaperWorldConfig {
|
|
private void disableTeleportationSuffocationCheck() {
|
|
disableTeleportationSuffocationCheck = getBoolean("disable-teleportation-suffocation-check", false);
|
|
}
|
|
+
|
|
+ public boolean nonPlayerEntitiesOnScoreboards = false;
|
|
+ private void nonPlayerEntitiesOnScoreboards() {
|
|
+ nonPlayerEntitiesOnScoreboards = getBoolean("allow-non-player-entities-on-scoreboards", false);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 7cdb5c74ef3260917618fc0bfc393bcf933ffb7a..ab4405638f56844a54d4dba08bef11e7f54c568d 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -2198,6 +2198,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
|
|
@Nullable
|
|
public ScoreboardTeamBase getScoreboardTeam() {
|
|
+ if (!this.world.paperConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) { return null; } // Paper
|
|
return this.world.getScoreboard().getPlayerTeam(this.getName());
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index 8928d9438f1ee1f37b7d38bef6671b3a2940e645..98742de5952c6d09592bdbcb12ed8862712a63e7 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -642,6 +642,7 @@ public abstract class EntityLiving extends Entity {
|
|
if (nbttagcompound.hasKeyOfType("Team", 8)) {
|
|
String s = nbttagcompound.getString("Team");
|
|
ScoreboardTeam scoreboardteam = this.world.getScoreboard().getTeam(s);
|
|
+ if (!world.paperConfig.nonPlayerEntitiesOnScoreboards && !(this instanceof EntityHuman)) { scoreboardteam = null; } // Paper
|
|
boolean flag = scoreboardteam != null && this.world.getScoreboard().addPlayerToTeam(this.getUniqueIDString(), scoreboardteam);
|
|
|
|
if (!flag) {
|