mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-04 18:12:09 +01:00
a7ba5db3de
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 Please note that this build includes changes to meet upstreams requirements for nullability annotations. While we aim for a level of accuracy, these might not be 100% correct, if there are any issues, please speak to us on discord, or open an issue on the tracker to discuss. Bukkit Changes: 9a6a1de3 Remove nullability annotations from enum constructors 3f0591ea SPIGOT-2540: Add nullability annotations to entire Bukkit API CraftBukkit Changes:8d8475fc
SPIGOT-4666: Force parameter in HumanEntity#sleep8b1588e2
Fix ExplosionPrimeEvent#setFire not working with EnderCrystals39a287b7
Don't ignore newlines in PlayerListHeader/Footer Spigot Changes: cf694d87 Add nullability annotations
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 c399bdecc..3496d4236 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<WorldGenFeatureComposite<?, ?>>> aW = Maps.newHashMap();
|
|
protected final List<WorldGenFeatureCompositeFlower<?>> aX = Lists.newArrayList();
|
|
protected final Map<StructureGenerator<?>, WorldGenFeatureConfiguration> aY = Maps.newHashMap();
|
|
- private final Map<EnumCreatureType, List<BiomeBase.BiomeMeta>> aZ = Maps.newHashMap();
|
|
+ private final java.util.EnumMap<EnumCreatureType, List<BiomeBase.BiomeMeta>> aZ = 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.aZ.put(enumcreaturetype, Lists.newArrayList());
|
|
+ this.aZ.put(enumcreaturetype, new MobList()); // Paper
|
|
}
|
|
|
|
} else {
|
|
@@ -0,0 +0,0 @@ public abstract class BiomeBase {
|
|
|
|
}
|
|
|
|
+ // 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
|
|
--
|