mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
Updated Upstream (Paper & Airplane)
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c1b4899 Fix dupe uuid check on entity add (#6735) PaperMC/Paper@3f043f7 Async catch modifications to critical entity state PaperMC/Paper@bc43f40 Update jline and TCA (#6829) PaperMC/Paper@d9e2817 Update paperweight to 1.1.13 (#6866) PaperMC/Paper@3e310e0 Remove redundant and unneeded repos, reorder repos (#6867) PaperMC/Paper@485d15f Update paperweight to 1.1.14 (#6868) PaperMC/Paper@09d50a9 Added missing mappings (#6810) PaperMC/Paper@0968cdd Move async catches back to where they were (#6869) PaperMC/Paper@6f71b7c Deduplicate strings in ObfHelper (#6841) PaperMC/Paper@ada930b Updated Upstream (Bukkit/CraftBukkit) (#6872) PaperMC/Paper@06d82e0 Cache palette array (#6767) PaperMC/Paper@70fe58d Expose the potential player cause of a lightning (#6782) PaperMC/Paper@c20c9d3 Fix CraftNamespacedKey shenanigans (#6825) PaperMC/Paper@29bb5a9 Add PlayerDeathEvent#getPlayer for clarity (#6859) PaperMC/Paper@124d079 Fix issues with mob conversion (#6831) PaperMC/Paper@22b0238 Add API for checking if a zombie has the option to break doors (#6855) PaperMC/Paper@5af80b0 Add isCollidable methods to various places (#6870) PaperMC/Paper@32ba088 Fix setPatternColor on tropical fish bucket meta (#6877) PaperMC/Paper@87121ce Move `getTrackedPlayers` up from Player to Entity (#6569) PaperMC/Paper@a923e33 Make despawn distance configs per-category, improve per category spawn limit config (#6717) PaperMC/Paper@3f17694 Goat ram API (#6336) PaperMC/Paper@cc2ecbc Add Raw Byte Entity Serialization (#6826) Airplane Changes: TECHNOVE/Airplane@e47949b Ty Penple <3 TECHNOVE/Airplane@86fee6b Update upstream
This commit is contained in:
@@ -19,10 +19,10 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 13f89bdaf1ada33060b1ee4d6f2860ec194b68a4..0bd09bd56968660437a94ec078a13ee78339fa0e 100644
|
||||
index e067c69fea1dec79ef8e97cad1c74020b6a3a235..fd3528be3d90733e826bcbeae967b95cedf92dfe 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -25,8 +25,8 @@ repositories {
|
||||
@@ -22,8 +22,8 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -31,10 +31,10 @@ index 13f89bdaf1ada33060b1ee4d6f2860ec194b68a4..0bd09bd56968660437a94ec078a13ee7
|
||||
+ implementation(project(":Airplane-API")) // Airplane // Paper
|
||||
+ implementation("io.papermc.paper:paper-mojangapi:1.17.1-R0.1-SNAPSHOT") // Airplane
|
||||
// Paper start
|
||||
implementation("org.jline:jline-terminal-jansi:3.12.1")
|
||||
implementation("net.minecrell:terminalconsoleappender:1.2.0")
|
||||
@@ -61,6 +61,13 @@ dependencies {
|
||||
implementation("org.quiltmc:tiny-mappings-parser:0.3.0") // Paper - needed to read mappings for stacktrace deobfuscation
|
||||
implementation("org.jline:jline-terminal-jansi:3.21.0")
|
||||
implementation("net.minecrell:terminalconsoleappender:1.3.0")
|
||||
@@ -57,6 +57,13 @@ dependencies {
|
||||
implementation("net.fabricmc:mapping-io:0.3.0") // Paper - needed to read mappings for stacktrace deobfuscation
|
||||
implementation("com.velocitypowered:velocity-native:1.1.0-SNAPSHOT") // Paper
|
||||
|
||||
+ implementation("com.github.technove:AIR:fe3dbb4420") // Airplane - config
|
||||
@@ -47,7 +47,7 @@ index 13f89bdaf1ada33060b1ee4d6f2860ec194b68a4..0bd09bd56968660437a94ec078a13ee7
|
||||
testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
|
||||
testImplementation("junit:junit:4.13.1")
|
||||
testImplementation("org.hamcrest:hamcrest-library:1.3")
|
||||
@@ -79,6 +86,7 @@ tasks.jar {
|
||||
@@ -75,6 +82,7 @@ tasks.jar {
|
||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||
"Implementation-Title" to "CraftBukkit",
|
||||
"Implementation-Version" to "git-Paper-$implementationVersion",
|
||||
@@ -55,7 +55,7 @@ index 13f89bdaf1ada33060b1ee4d6f2860ec194b68a4..0bd09bd56968660437a94ec078a13ee7
|
||||
"Implementation-Vendor" to date, // Paper
|
||||
"Specification-Title" to "Bukkit",
|
||||
"Specification-Version" to project.version,
|
||||
@@ -136,6 +144,22 @@ relocation {
|
||||
@@ -133,6 +141,22 @@ relocation {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,10 +115,10 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..f5d01bce4d5547b4aeca96b7962b2090
|
||||
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||
index 0277627e97b51e20470ccf578cee48470e06a34b..6a30338648214c98b05feb5a628dbdc6b2683ff9 100644
|
||||
index 2509a170b8ddd812ad5be49e5345ec5a3c0cf2b8..6cda37d340bfc6f76cbb3bdaa3ffb6d3cf90da9f 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java
|
||||
@@ -202,16 +202,26 @@ public class PaperConfig {
|
||||
@@ -205,16 +205,26 @@ public class PaperConfig {
|
||||
public static String timingsServerName;
|
||||
private static void timings() {
|
||||
boolean timings = getBoolean("timings.enabled", true);
|
||||
@@ -146,32 +146,6 @@ index 0277627e97b51e20470ccf578cee48470e06a34b..6a30338648214c98b05feb5a628dbdc6
|
||||
int timingHistoryInterval = getInt("timings.history-interval", 300);
|
||||
int timingHistoryLength = getInt("timings.history-length", 3600);
|
||||
timingsServerName = getString("timings.server-name", "Unknown Server");
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index c2d8294ffeff017a6ec9e7725b50eaef8eb75dfd..6b7006829dde81840bd305ee775d26c9f1ef24f7 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -268,6 +268,9 @@ public class PaperWorldConfig {
|
||||
|
||||
public int softDespawnDistance;
|
||||
public int hardDespawnDistance;
|
||||
+ // Airplane start - separate squared values
|
||||
+ public int softDespawnDistanceSq;
|
||||
+ public int hardDespawnDistanceSq;
|
||||
private void despawnDistances() {
|
||||
softDespawnDistance = getInt("despawn-ranges.soft", 32); // 32^2 = 1024, Minecraft Default
|
||||
hardDespawnDistance = getInt("despawn-ranges.hard", 128); // 128^2 = 16384, Minecraft Default
|
||||
@@ -278,8 +281,9 @@ public class PaperWorldConfig {
|
||||
|
||||
log("Living Entity Despawn Ranges: Soft: " + softDespawnDistance + " Hard: " + hardDespawnDistance);
|
||||
|
||||
- softDespawnDistance = softDespawnDistance*softDespawnDistance;
|
||||
- hardDespawnDistance = hardDespawnDistance*hardDespawnDistance;
|
||||
+ softDespawnDistanceSq = softDespawnDistance*softDespawnDistance;
|
||||
+ hardDespawnDistanceSq = hardDespawnDistance*hardDespawnDistance;
|
||||
+ // Airplane end
|
||||
}
|
||||
|
||||
public boolean keepSpawnInMemory;
|
||||
diff --git a/src/main/java/gg/airplane/AirplaneCommand.java b/src/main/java/gg/airplane/AirplaneCommand.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..89c89e633f14b5820147e734b1b7ad8cadfdce80
|
||||
@@ -774,10 +748,10 @@ index 0000000000000000000000000000000000000000..f9a71ff3edd7e7b6cda680e5a156373b
|
||||
+}
|
||||
diff --git a/src/main/java/gg/airplane/entity/CollisionCache.java b/src/main/java/gg/airplane/entity/CollisionCache.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc74049b5377e
|
||||
index 0000000000000000000000000000000000000000..f67e19ad737a7a6b29e58aad59b1367574609efe
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/gg/airplane/entity/CollisionCache.java
|
||||
@@ -0,0 +1,258 @@
|
||||
@@ -0,0 +1,263 @@
|
||||
+package gg.airplane.entity;
|
||||
+
|
||||
+import io.papermc.paper.util.CollisionUtil;
|
||||
@@ -794,7 +768,6 @@ index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc740
|
||||
+import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||
+import net.minecraft.world.phys.AABB;
|
||||
+import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
+import net.minecraft.world.phys.shapes.EntityCollisionContext;
|
||||
+import net.minecraft.world.phys.shapes.Shapes;
|
||||
+import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
+import org.bukkit.craftbukkit.util.UnsafeList;
|
||||
@@ -808,7 +781,8 @@ index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc740
|
||||
+
|
||||
+public class CollisionCache {
|
||||
+
|
||||
+ private static record BlockEntry(int x, int y, int z, BlockState state){}
|
||||
+ private static record BlockEntry(int x, int y, int z, BlockState state) {
|
||||
+ }
|
||||
+
|
||||
+ @NotNull
|
||||
+ private final Entity entity;
|
||||
@@ -867,11 +841,12 @@ index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc740
|
||||
+ if (checkOnly) {
|
||||
+ for (int i = 0, length = this.blocks.size(); i < length; i++) {
|
||||
+ BlockEntry blockEntry = this.blocks.unsafeGet(i);
|
||||
+ mutablePos.set(blockEntry.x, blockEntry.y, blockEntry.z);
|
||||
+ VoxelShape voxelshape2 = blockEntry.state.getCollisionShape(this.entity.level, mutablePos, collisionShape);
|
||||
+ if (voxelshape2 != Shapes.empty()) {
|
||||
+ VoxelShape voxelshape3 = voxelshape2.move((double) blockEntry.x, (double) blockEntry.y, (double) blockEntry.z);
|
||||
+
|
||||
+ if (voxelshape3.intersects(aabb) && predicate.test(blockEntry.state, mutablePos.set(blockEntry.x, blockEntry.y, blockEntry.z))) {
|
||||
+ if (voxelshape3.intersects(aabb) && predicate.test(blockEntry.state, mutablePos)) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
@@ -879,6 +854,7 @@ index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc740
|
||||
+ } else {
|
||||
+ for (int i = 0, length = this.blocks.size(); i < length; i++) {
|
||||
+ BlockEntry blockEntry = this.blocks.unsafeGet(i);
|
||||
+ mutablePos.set(blockEntry.x, blockEntry.y, blockEntry.z);
|
||||
+ VoxelShape voxelshape2 = blockEntry.state.getCollisionShape(this.entity.level, mutablePos, collisionShape);
|
||||
+
|
||||
+ if (voxelshape2 != Shapes.empty()) {
|
||||
@@ -1011,11 +987,14 @@ index 0000000000000000000000000000000000000000..87e162cc30da9346190c7daeb19cc740
|
||||
+ collisionShape = CollisionContext.of(entity);
|
||||
+ }
|
||||
+ VoxelShape voxelshape2 = blockData.getCollisionShape(this.entity.level, mutablePos, collisionShape);
|
||||
+
|
||||
+ if (voxelshape2 != Shapes.empty() || blockData.getBlock() == Blocks.MOVING_PISTON) {
|
||||
+ this.blocks.add(new BlockEntry(blockX, blockY, blockZ, blockData));
|
||||
+ }
|
||||
+
|
||||
+ if (voxelshape2 != Shapes.empty()) {
|
||||
+ VoxelShape voxelshape3 = voxelshape2.move((double) blockX, (double) blockY, (double) blockZ);
|
||||
+
|
||||
+ this.blocks.add(new BlockEntry(blockX, blockY, blockZ, blockData));
|
||||
+
|
||||
+ ret |= CollisionUtil.addBoxesToIfIntersects(voxelshape3, aabb, into);
|
||||
+ }
|
||||
+ }
|
||||
@@ -2241,10 +2220,10 @@ index 505546d32eea4682452dbac02311433157f6a30e..5c7b9ad379f3c272e15648dd16f4df92
|
||||
|
||||
public static <V> CompletableFuture<List<V>> sequenceFailFast(List<? extends CompletableFuture<? extends V>> futures) {
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 7636b0ae9031e06fd8b4a0c359a45a17e6e075de..49821f441886b4de2cac5b1b13981e2161992f98 100644
|
||||
index f274e40681d47a4ca421107c0d76c527279ce682..ff6ab10a1bc11ecc2d83255e51508ea70344b455 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -1726,7 +1726,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -1727,7 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
|
||||
@DontObfuscate
|
||||
public String getServerModName() {
|
||||
@@ -2253,7 +2232,7 @@ index 7636b0ae9031e06fd8b4a0c359a45a17e6e075de..49821f441886b4de2cac5b1b13981e21
|
||||
}
|
||||
|
||||
public SystemReport fillSystemReport(SystemReport details) {
|
||||
@@ -2302,6 +2302,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -2303,6 +2303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
}
|
||||
|
||||
public ProfilerFiller getProfiler() {
|
||||
@@ -2275,7 +2254,7 @@ index b6ee0e709b0f0529b99567bc9b8fb6bfd99bcd8e..e2901132b78126c0a4eb04363dfe6a0d
|
||||
this.setPvpAllowed(dedicatedserverproperties.pvp);
|
||||
this.setFlightAllowed(dedicatedserverproperties.allowFlight);
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
index 65090afbb510231c05db3132ba416502d188f1c0..4249f24f4c43c55eb13ca85be6e0b8871a1cace9 100644
|
||||
index 4e4ef1646ed40480f58ae3cd1c41dd3b28f56e4a..a9f247ba1d889dffdbac51fa70cc887f4987e717 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||
@@ -2413,8 +2413,28 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
|
||||
@@ -2330,7 +2309,7 @@ index 7470f3ba66c2e894b5a5b0ba392ecabf8b04aff9..35f27e9a7c82eaec5b4a1a71696dac84
|
||||
boolean flag2 = level.ticksPerAnimalSpawns != 0L && worlddata.getGameTime() % level.ticksPerAnimalSpawns == 0L; // CraftBukkit
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
index b7c9294fdd3d799d410afba4a1118aa371c98533..c71bc00973899feec0ec5530bf3d237928810cf4 100644
|
||||
index 1c6bf5a3014beaf5f9c1c38aed4cf3225e50b8bb..a453aac607f9b38f0bf90038ff2d8071687c4bae 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -174,6 +174,7 @@ public class ServerEntity {
|
||||
@@ -2519,7 +2498,7 @@ index 7437f01ca8f416e2c9150250e324af4725a4efb6..bdcd0e38a3ba904811112f41d8bfbfc0
|
||||
int LARGE_MAX_STACK_SIZE = 64;
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 2ce32495758abf64eeeeeea1cdbf4904be77b697..e4e9d7286a91155b55915b9046704b0848962b2f 100644
|
||||
index 6d2cc9d1813c862dfd23cb6897d4f4f4845af529..b938d8d1e13a68b3895fcec3523daecbc3c6628e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -338,6 +338,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -2595,7 +2574,7 @@ index 2ce32495758abf64eeeeeea1cdbf4904be77b697..e4e9d7286a91155b55915b9046704b08
|
||||
|
||||
if (io.papermc.paper.util.CollisionUtil.isCollidingWithBorderEdge(world.getWorldBorder(), collisionBox)) {
|
||||
io.papermc.paper.util.CollisionUtil.addBoxesToIfIntersects(world.getWorldBorder().getCollisionShape(), collisionBox, potentialCollisions);
|
||||
@@ -2440,10 +2469,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -2449,10 +2478,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
AABB axisalignedbb = AABB.ofSize(this.getEyePosition(), (double) f, 1.0E-6D, (double) f);
|
||||
|
||||
// Paper start
|
||||
@@ -2608,7 +2587,7 @@ index 2ce32495758abf64eeeeeea1cdbf4904be77b697..e4e9d7286a91155b55915b9046704b08
|
||||
// Paper end
|
||||
}
|
||||
}
|
||||
@@ -3830,16 +3857,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -3839,16 +3866,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
}
|
||||
|
||||
public boolean updateFluidHeightAndDoFluidPushing(Tag<Fluid> tag, double d0) {
|
||||
@@ -2634,7 +2613,7 @@ index 2ce32495758abf64eeeeeea1cdbf4904be77b697..e4e9d7286a91155b55915b9046704b08
|
||||
double d1 = 0.0D;
|
||||
boolean flag = this.isPushedByFluid();
|
||||
boolean flag1 = false;
|
||||
@@ -3847,14 +3876,62 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -3856,14 +3885,62 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
int k1 = 0;
|
||||
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
|
||||
|
||||
@@ -2703,7 +2682,7 @@ index 2ce32495758abf64eeeeeea1cdbf4904be77b697..e4e9d7286a91155b55915b9046704b08
|
||||
|
||||
if (d2 >= axisalignedbb.minY) {
|
||||
flag1 = true;
|
||||
@@ -3871,9 +3948,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
@@ -3880,9 +3957,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2729,7 +2708,7 @@ index 1c446dba5de89698397041ee38a2e1a00bec8a56..03371c99c34ba4b2ffde3f6da36f171b
|
||||
public final String id;
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index cbdff14b26f67b5040c13659f9d64d9ec4c7eaed..71fefe3956c1e4458dd4b441f90902a3ed0cdf24 100644
|
||||
index 465dab588e770bf4d1e645e1f451a066f388014a..df12ba04df24e1c70c43e00283ea2a78ae2ca422 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent;
|
||||
@@ -2774,7 +2753,7 @@ index cbdff14b26f67b5040c13659f9d64d9ec4c7eaed..71fefe3956c1e4458dd4b441f90902a3
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
index 8a864238e154e2131834d013652746b7e7a78c97..6051fd771dd989f2903b854b6564252a847a74e3 100644
|
||||
index 55d07e70a67e08bab3a7a66076c980986736e5b8..b247d9dc2b2f5b4a6e87ca35e2a08f9be4e7a7b4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||
@@ -207,10 +207,10 @@ public abstract class Mob extends LivingEntity {
|
||||
@@ -2790,26 +2769,6 @@ index 8a864238e154e2131834d013652746b7e7a78c97..6051fd771dd989f2903b854b6564252a
|
||||
this.targetSelector.tick();
|
||||
}
|
||||
}
|
||||
@@ -801,16 +801,16 @@ public abstract class Mob extends LivingEntity {
|
||||
int i = this.getType().getCategory().getDespawnDistance();
|
||||
int j = i * i;
|
||||
|
||||
- if (d0 > (double) level.paperConfig.hardDespawnDistance) { // CraftBukkit - remove isTypeNotPersistent() check // Paper - custom despawn distances
|
||||
+ if (d0 > (double) level.paperConfig.hardDespawnDistanceSq) { // CraftBukkit - remove isTypeNotPersistent() check // Paper - custom despawn distances // Airplane
|
||||
this.discard();
|
||||
}
|
||||
|
||||
int k = this.getType().getCategory().getNoDespawnDistance();
|
||||
int l = k * k;
|
||||
|
||||
- if (this.noActionTime > 600 && this.random.nextInt(800) == 0 && d0 > level.paperConfig.softDespawnDistance) { // CraftBukkit - remove isTypeNotPersistent() check // Paper - custom despawn distances
|
||||
+ if (this.noActionTime > 600 && this.random.nextInt(800) == 0 && d0 > level.paperConfig.softDespawnDistanceSq) { // CraftBukkit - remove isTypeNotPersistent() check // Paper - custom despawn distances // Airplane
|
||||
this.discard();
|
||||
- } else if (d0 < level.paperConfig.softDespawnDistance) { // Paper - custom despawn distances
|
||||
+ } else if (d0 < level.paperConfig.softDespawnDistanceSq) { // Paper - custom despawn distances // Airplane
|
||||
this.noActionTime = 0;
|
||||
}
|
||||
}
|
||||
@@ -838,9 +838,11 @@ public abstract class Mob extends LivingEntity {
|
||||
this.sensing.tick();
|
||||
this.level.getProfiler().pop();
|
||||
@@ -3023,7 +2982,7 @@ index 2b8725087fd3bfeca7162bda2783fdacd13a8390..16adf07774d568852b289ae8507779dd
|
||||
this.level.getProfiler().pop();
|
||||
this.level.getProfiler().push("axolotlActivityUpdate");
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
index 32d0387b6c66462ca965add78a562dec3c4b95a9..82a363c5141cd00eec9b7e03e7ac6522b9b3c527 100644
|
||||
index c7e24da48aaff9fbd1a8272483231744326e3a8e..5eceec2802a14b59ed60c600622d1f76ff6a77fa 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
@@ -144,9 +144,11 @@ public class Goat extends Animal {
|
||||
@@ -3560,7 +3519,7 @@ index f936e9f9a9fa655fa997d6862b5ed54c04169d35..24d772c18d5a448154909e4a51964ba2
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
||||
index bacd75f67f783f49208a74501cc7e6e7485010a4..dc613142603fca4cf5c8e47c084e1439d0450424 100644
|
||||
index d63d89960839b506e240349043ab77c4d81ca71a..a0db30970adebb244ff41913e8ec1df1eb472a4d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
|
||||
@@ -418,12 +418,12 @@ public final class NaturalSpawner {
|
||||
@@ -3944,58 +3903,6 @@ index 72e3264dc74822f746fb84fec0be400047d2d9f5..831e2dbe530daf63ac9e681a92af2740
|
||||
}
|
||||
|
||||
});
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||
index c9e942669458668a184aaec3bc0a5509dd6ab5f0..178e56ffc87ea2beb4d84d1f278f4acf90102379 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java
|
||||
@@ -263,13 +263,17 @@ public class PalettedContainer<T> implements PaletteResize<T> {
|
||||
|
||||
}
|
||||
|
||||
+ // Airplane start - allow reusing int array
|
||||
public synchronized void write(CompoundTag nbt, String paletteKey, String dataKey) { // Paper - synchronize
|
||||
+ this.write(nbt, paletteKey, dataKey, new int[4096]);
|
||||
+ }
|
||||
+ public synchronized void write(CompoundTag nbt, String paletteKey, String dataKey, int[] is) { // Paper - synchronize // Airplane end
|
||||
try {
|
||||
this.acquire();
|
||||
HashMapPalette<T> hashMapPalette = new HashMapPalette<>(this.registry, this.bits, this.dummyPaletteResize, this.reader, this.writer);
|
||||
T object = this.defaultValue;
|
||||
int i = hashMapPalette.idFor(this.defaultValue);
|
||||
- int[] is = new int[4096];
|
||||
+ //int[] is = new int[4096]; // Airplane
|
||||
|
||||
for(int j = 0; j < 4096; ++j) {
|
||||
T object2 = this.get(j);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java
|
||||
index 7921ee2786d0d6a60d43786b20efc03a0f9178e3..9ea4229f58679c6c833762fc6a50471445ff0b9d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java
|
||||
@@ -500,6 +500,7 @@ public class ChunkSerializer {
|
||||
return new AsyncSaveData(blockLight, skyLight, blockTickListSerialized, fluidTickListSerialized, blockEntitiesSerialized, world.getGameTime());
|
||||
}
|
||||
|
||||
+ private static final ThreadLocal<int[]> paletteArray = ThreadLocal.withInitial(() -> new int[4096]); // Airplane
|
||||
public static CompoundTag write(ServerLevel world, ChunkAccess chunk) {
|
||||
return saveChunk(world, chunk, null);
|
||||
}
|
||||
@@ -533,6 +534,7 @@ public class ChunkSerializer {
|
||||
ThreadedLevelLightEngine lightenginethreaded = world.getChunkSource().getLightEngine();
|
||||
boolean flag = chunk.isLightCorrect();
|
||||
|
||||
+ int[] is = paletteArray.get(); // Airplane - use cached
|
||||
for (int i = lightenginethreaded.getMinLightSection(); i < lightenginethreaded.getMaxLightSection(); ++i) {
|
||||
int finalI = i; // CraftBukkit - decompile errors
|
||||
LevelChunkSection chunksection = (LevelChunkSection) Arrays.stream(achunksection).filter((chunksection1) -> {
|
||||
@@ -547,7 +549,7 @@ public class ChunkSerializer {
|
||||
|
||||
nbttagcompound2.putByte("Y", (byte) (i & 255));
|
||||
if (chunksection != LevelChunk.EMPTY_SECTION) {
|
||||
- chunksection.getStates().write(nbttagcompound2, "Palette", "BlockStates");
|
||||
+ chunksection.getStates().write(nbttagcompound2, "Palette", "BlockStates", is); // Airplane - reuse array
|
||||
}
|
||||
|
||||
// Paper start - replace light engine
|
||||
diff --git a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java b/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||
index da1ad0b2679e392ed81b50c15f012c63cb5c939e..81e83022421e2c311c32f6e6007cfc0c82efb822 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/entity/LevelEntityGetter.java
|
||||
@@ -4023,10 +3930,10 @@ index 3b13f6ea36a3bfecabe09221eb5c48dddab119db..c02b9104c0cc1a7319cca29d5e32a5c2
|
||||
@Override
|
||||
public T get(int id) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java b/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java
|
||||
index 9681e397588a8abc4150b991e546fa79b5635c87..646385d0bef31f43a7273fa78ec696dfc761093c 100644
|
||||
index 8cb246863e06c5b95ba1442e2ec47095026c4f39..5a72ce41cc57578498c4a072a1eb04ac28958afe 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/entity/PersistentEntitySectionManager.java
|
||||
@@ -606,6 +606,12 @@ public class PersistentEntitySectionManager<T extends EntityAccess> implements A
|
||||
@@ -627,6 +627,12 @@ public class PersistentEntitySectionManager<T extends EntityAccess> implements A
|
||||
PersistentEntitySectionManager.this.knownUuids.remove(this.entity.getUUID());
|
||||
this.entity.setLevelCallback(PersistentEntitySectionManager.Callback.NULL);
|
||||
PersistentEntitySectionManager.this.removeSectionIfEmpty(this.currentSectionKey, this.currentSection);
|
||||
@@ -4251,7 +4158,7 @@ index fcb7bd9f3b6b6ada0f2e5692bce32ab76b8798a7..61c2096f2c034dbc3ad33b193b058c7d
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
index cfbde4c1220b0d6081a3e4ad2375e0d7bfb2ef40..ae2c4388eddef529fba5d5eae354ee15c6e36c9d 100644
|
||||
index 99a94898316b0601f55b333c15a9926eae24f8a2..c3a256d0ccb9fb44a5a1f9ffa2d48542ef4e857b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||
@@ -251,7 +251,7 @@ import javax.annotation.Nullable; // Paper
|
||||
@@ -4325,7 +4232,7 @@ index 909b2c98e7a9117d2f737245e4661792ffafb744..9da898c6f44832b4421b8c2745e3121b
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index dcaa189c17dd928d7a19e820ec2ff521e7243b7a..25bb190bf7e08539a3590ee35a01f1d816e48d83 100644
|
||||
index 424f3a9a645d57ad43c52932f5b388b5f146b9f0..d68872771c5d29afc19bf7cd74e970c714267b87 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -394,7 +394,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
|
||||
Reference in New Issue
Block a user