mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-02 09:21:57 +01:00
61c0f2d99e
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:eb2e6578
SPIGOT-5116: Fix concurrent modification exception inside ChunkMapDistance989f9b3d
SPIGOT-4849: Fix server crash when accessing chunks during chunk load/unload/populate eventsf554183c
SPIGOT-5171: Don't fire PlayerTeleportEvent if not actually moving2349feb8
SPIGOT-5163: Cancelling PlayerBucketFillEvent visually removes the targeted block Spigot Changes: 9a643a6a Remove DataWatcher Locking
69 lines
No EOL
2.5 KiB
Diff
69 lines
No EOL
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 12 Sep 2018 21:47:01 -0400
|
|
Subject: [PATCH] Optimize Biome Mob Lookups for Mob Spawning
|
|
|
|
Uses an EnumMap as well as a Set paired List for O(1) contains calls.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
index 9a839d654..72eb669c5 100644
|
|
--- a/src/main/java/net/minecraft/server/BiomeBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
|
|
@@ -0,0 +0,0 @@ public abstract class BiomeBase {
|
|
protected final Map<WorldGenStage.Decoration, List<WorldGenFeatureConfigured<?>>> r = Maps.newHashMap();
|
|
protected final List<WorldGenFeatureConfigured<?>> s = Lists.newArrayList();
|
|
protected final Map<StructureGenerator<?>, WorldGenFeatureConfiguration> t = Maps.newHashMap();
|
|
- private final Map<EnumCreatureType, List<BiomeBase.BiomeMeta>> u = Maps.newHashMap();
|
|
+ private final java.util.EnumMap<EnumCreatureType, List<BiomeBase.BiomeMeta>> u = Maps.newEnumMap(EnumCreatureType.class); // Paper
|
|
|
|
@Nullable
|
|
public static BiomeBase a(BiomeBase biomebase) {
|
|
@@ -0,0 +0,0 @@ public abstract class BiomeBase {
|
|
for (j = 0; j < i; ++j) {
|
|
EnumCreatureType enumcreaturetype = aenumcreaturetype[j];
|
|
|
|
- this.u.put(enumcreaturetype, Lists.newArrayList());
|
|
+ this.u.put(enumcreaturetype, new MobList()); // Paper
|
|
}
|
|
|
|
} else {
|
|
@@ -0,0 +0,0 @@ public abstract class BiomeBase {
|
|
return this.m;
|
|
}
|
|
|
|
+ // Paper start - keep track of data in a pair set to give O(1) contains calls - we have to hook removals incase plugins mess with it
|
|
+ public static class MobList extends java.util.ArrayList<BiomeMeta> {
|
|
+ java.util.Set<BiomeMeta> biomes = new java.util.HashSet<>();
|
|
+
|
|
+ @Override
|
|
+ public boolean contains(Object o) {
|
|
+ return biomes.contains(o);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean add(BiomeMeta biomeMeta) {
|
|
+ biomes.add(biomeMeta);
|
|
+ return super.add(biomeMeta);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public BiomeMeta remove(int index) {
|
|
+ BiomeMeta removed = super.remove(index);
|
|
+ if (removed != null) {
|
|
+ biomes.remove(removed);
|
|
+ }
|
|
+ return removed;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void clear() {
|
|
+ biomes.clear();
|
|
+ super.clear();
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
public static class a {
|
|
|
|
@Nullable
|
|
--
|