Use one PermissibleBase for all Command Blocks.

This fixes issues with too many command blocks lagging or crashing the server, as well as just increases their performance in general.

By: FrozenBrain <carstenbamsti@googlemail.com>
This commit is contained in:
Spigot 2014-03-02 21:18:22 +01:00
parent 2c24774651
commit 2a98b1853e

View file

@ -0,0 +1,33 @@
From aefc5f0df1c5ec8a8172bef74967b1f34336d200 Mon Sep 17 00:00:00 2001
From: FrozenBrain <carstenbamsti@googlemail.com>
Date: Sun, 2 Mar 2014 21:13:46 +0100
Subject: [PATCH] Use one PermissibleBase for all Command Blocks
diff --git a/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java
index 1314c74..b339cf3 100644
--- a/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java
+++ b/src/main/java/org/bukkit/craftbukkit/command/ServerCommandSender.java
@@ -12,9 +12,18 @@ import org.bukkit.plugin.Plugin;
import java.util.Set;
public abstract class ServerCommandSender implements CommandSender {
- private final PermissibleBase perm = new PermissibleBase(this);
+ private static PermissibleBase blockPermInst;
+ private final PermissibleBase perm;
public ServerCommandSender() {
+ if (this instanceof CraftBlockCommandSender) {
+ if (blockPermInst == null) {
+ blockPermInst = new PermissibleBase(this);
+ }
+ this.perm = blockPermInst;
+ } else {
+ this.perm = new PermissibleBase(this);
+ }
}
public boolean isPermissionSet(String name) {
--
1.7.9.5