9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-20 07:19:35 +00:00
Files
LeavesMC/patches/server/0087-Cache-CubeVoxelShape-shape-array.patch
2023-09-28 18:12:42 +08:00

43 lines
1.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Tue, 18 Jul 2023 14:43:18 +0800
Subject: [PATCH] Cache CubeVoxelShape shape array
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
diff --git a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java
index 110405e6e70d980d3e09f04d79562b32a7413071..8e44c1ae9f898f943d8c74fe34447546677be7d4 100644
--- a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java
+++ b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java
@@ -5,6 +5,9 @@ import net.minecraft.core.Direction;
import net.minecraft.util.Mth;
public final class CubeVoxelShape extends VoxelShape {
+
+ private DoubleList[] list = null; // Leaves - cache CubeVoxelShape shape array
+
protected CubeVoxelShape(DiscreteVoxelShape voxels) {
super(voxels);
this.initCache(); // Paper - optimise collisions
@@ -12,7 +15,19 @@ public final class CubeVoxelShape extends VoxelShape {
@Override
protected DoubleList getCoords(Direction.Axis axis) {
- return new CubePointRange(this.shape.getSize(axis));
+ // Leaves start - cache CubeVoxelShape shape array
+ if (!top.leavesmc.leaves.LeavesConfig.cacheCubeVoxelShapeShapeArray) {
+ return new CubePointRange(this.shape.getSize(axis));
+ } else {
+ if (this.list == null) {
+ this.list = new DoubleList[Direction.Axis.VALUES.length];
+ for (Direction.Axis existingAxis : Direction.Axis.VALUES) {
+ this.list[existingAxis.ordinal()] = new CubePointRange(this.shape.getSize(axis));
+ }
+ }
+ return this.list[axis.ordinal()];
+ }
+ // Leaves end - cache CubeVoxelShape shape array
}
@Override