Port tuinity biome conversion optimisations and a nitpick

This commit is contained in:
Ivan Pekov 2020-08-13 19:57:40 +03:00 committed by GitHub
parent 5f55124016
commit 4f90ed4545
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 2 deletions

View File

@ -68,6 +68,7 @@ # Patches
| server | Remove vanilla profiler callers | Sotr | |
| server | Skip events if there's no listeners | William Blake Galbreath | |
| server | Swaps the predicate order of collision | ㄗㄠˋ ㄑㄧˊ | |
| server | Tuinity Optimise biome conversion | Spottedleaf | |
| server | Tweak Explosions | Aikar | |
| server | Use block distance in portal search radius | Patrick Hemmer | |
| api | Yatopia API Bundle | Bud Gidiere | |

View File

@ -19,7 +19,7 @@ index 0ed01f40edfdbeeeea9db55fcba7501ee597c1fb..795fd9308dcd9edce4ef12da2e8bc5a6
if (!this.a(pathtype)) {
return false;
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
index ed37caf036ef9ae4c39622caf9b582678fecdccf..666ac7227e273aabb3f8e5ca78b5ac9652486229 100644
index ed37caf036ef9ae4c39622caf9b582678fecdccf..d1306caa5f98cd6b3fc0614dc6a4edeb0ad6a53a 100644
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
@@ -28,6 +28,15 @@ public abstract class NavigationAbstract {
@ -145,7 +145,7 @@ index ed37caf036ef9ae4c39622caf9b582678fecdccf..666ac7227e273aabb3f8e5ca78b5ac96
+ BaseBlockPosition baseblockposition = pathEntity.g();
+
+ if (baseblockposition.equals(this.h)) {
+ this.i = SystemUtils.getMonotonicMillis() - this.j;
+ this.i += SystemUtils.getMonotonicMillis() - this.j;
+ } else {
+ this.h = baseblockposition;
+ double d0 = vec3d.f(Vec3D.c(this.h));

View File

@ -0,0 +1,69 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <spottedleaf@spottedleaf.dev>
Date: Thu, 13 Aug 2020 19:42:25 +0300
Subject: [PATCH] Tuinity Optimise biome conversion
For some reason this patch was dropped from Tuinity (maybe not needed?), however we ported this
just in case.
Ported by MrIvanPlays <ivan@mrivanplays.com>
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
index bfae77f129859fba5e0f53723ba62a1626773b7c..0e9e3e75487ffedb4128f12a34af7733f05ffa75 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -97,6 +97,16 @@ public final class BiomeBase {
this.p = biomefog;
}
+ // Yatopia start - optimise biome conversion
+ private org.bukkit.block.Biome bukkitBiome;
+ public final org.bukkit.block.Biome getBukkitBiome(IRegistry<BiomeBase> registry) {
+ if (this.bukkitBiome == null) {
+ this.bukkitBiome = org.bukkit.block.Biome.valueOf(registry.getKey(this).getKey().toUpperCase(java.util.Locale.ENGLISH));
+ }
+ return this.bukkitBiome;
+ }
+ // Yatopia end
+
public BiomeSettingsMobs b() {
return this.l;
}
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
index 0677ff98d530da5d4ae2194ebd0c229298d594a6..2155f794a97237b5288d4c7760e41a52993dd19a 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -506,12 +506,14 @@ public class CraftBlock implements Block {
getWorld().setBiome(getX(), getY(), getZ(), bio);
}
+ private static final java.util.EnumMap<Biome, BiomeBase> BUKKIT_BIOME_TO_NMS_CACHE = new java.util.EnumMap<>(Biome.class); // Yatopia
+
public static Biome biomeBaseToBiome(IRegistry<BiomeBase> registry, BiomeBase base) {
if (base == null) {
return null;
}
- return Registry.BIOME.get(CraftNamespacedKey.fromMinecraft(registry.getKey(base)));
+ return base.getBukkitBiome(registry); // Yatopia
}
public static BiomeBase biomeToBiomeBase(IRegistry<BiomeBase> registry, Biome bio) {
@@ -519,7 +521,16 @@ public class CraftBlock implements Block {
return null;
}
- return registry.get(CraftNamespacedKey.toMinecraft(bio.getKey()));
+ // Yatopia start - optimise biome conversion
+ BiomeBase cached = BUKKIT_BIOME_TO_NMS_CACHE.get(bio);
+ if (cached != null) return cached;
+
+ BiomeBase ret = registry.get(CraftNamespacedKey.toMinecraft(bio.getKey()));
+ synchronized (BUKKIT_BIOME_TO_NMS_CACHE) {
+ BUKKIT_BIOME_TO_NMS_CACHE.put(bio, ret);
+ }
+ return ret;
+ // Yatopia end
}
@Override