d627cfa110
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 CraftBukkit Changes: 17da3420 Fix reading custom persistent entity data 83783357 SPIGOT-4980: Shields will not be put on cooldown when hit with an axe 8d0f3722 SPIGOT-4752: Fixed inconsistency between isChunkLoaded and chunk load/unload events 3f9f31c3 SPIGOT-4982: Armor disappearing while breaking the armor stand
44 lines
1.7 KiB
Diff
44 lines
1.7 KiB
Diff
From f9f1fae13e164ae6bf3c806d2d36ddfe22c4e707 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 22 Mar 2016 00:33:47 -0400
|
|
Subject: [PATCH] Use a Shared Random for Entities
|
|
|
|
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index da99714450..e6e47bc574 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -54,6 +54,20 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
|
|
// CraftBukkit start
|
|
private static final int CURRENT_LEVEL = 2;
|
|
+ // Paper start
|
|
+ public static Random SHARED_RANDOM = new Random() {
|
|
+ private boolean locked = false;
|
|
+ @Override
|
|
+ public synchronized void setSeed(long seed) {
|
|
+ if (locked) {
|
|
+ LogManager.getLogger().error("Ignoring setSeed on Entity.SHARED_RANDOM", new Throwable());
|
|
+ } else {
|
|
+ super.setSeed(seed);
|
|
+ locked = true;
|
|
+ }
|
|
+ }
|
|
+ };
|
|
+ // Paper end
|
|
static boolean isLevelAtLeast(NBTTagCompound tag, int level) {
|
|
return tag.hasKey("Bukkit.updateLevel") && tag.getInt("Bukkit.updateLevel") >= level;
|
|
}
|
|
@@ -189,7 +203,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
this.B = Vec3D.a;
|
|
this.av = 1.0F;
|
|
this.aw = 1.0F;
|
|
- this.random = new Random();
|
|
+ this.random = SHARED_RANDOM; // Paper
|
|
this.fireTicks = -this.getMaxFireTicks();
|
|
this.justCreated = true;
|
|
this.uniqueID = MathHelper.a(this.random);
|
|
--
|
|
2.21.0
|
|
|