Skip to content

Commit 8356d46

Browse files
authored
Make block update bound use speed in box size calculation, to limit collisions not working with too high speeds (LazuriteMC#40)
1 parent 08ecd02 commit 8356d46

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

common/src/main/java/dev/lazurite/rayon/impl/bullet/collision/body/shape/MinecraftShape.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.function.Supplier;
1818
import java.util.stream.Stream;
1919

20-
public sealed interface MinecraftShape permits MinecraftShape.Box, MinecraftShape.Convex, MinecraftShape.Concave {
20+
public interface MinecraftShape {
2121
List<Triangle> getTriangles(Quaternion quaternion);
2222
float getVolume();
2323

common/src/main/java/dev/lazurite/rayon/impl/bullet/collision/space/cache/SimpleChunkCache.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@
1313
import it.unimi.dsi.fastutil.longs.LongSet;
1414
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
1515
import net.minecraft.core.BlockPos;
16+
import net.minecraft.util.Mth;
1617
import net.minecraft.world.level.Level;
17-
import net.minecraft.world.level.block.Block;
1818
import net.minecraft.world.level.block.state.BlockState;
19-
import net.minecraft.world.phys.AABB;
2019

2120
import java.util.*;
2221
import java.util.concurrent.ConcurrentHashMap;
@@ -92,7 +91,7 @@ public void refreshAll() {
9291
continue;
9392
}
9493

95-
final var aabb = rigidBody.getCurrentMinecraftBoundingBox().inflate(1.0f);
94+
final var aabb = rigidBody.getCurrentMinecraftBoundingBox().inflate(1.0f + Mth.sqrt(rigidBody.getSquaredSpeed()) / 20);
9695

9796
BlockPos.betweenClosedStream(aabb).forEach(blockPos -> {
9897
if (this.activePositions.contains(blockPos.asLong())) {

0 commit comments

Comments
 (0)