From b83eb29260240eceefe140ae3001369c2689ae11 Mon Sep 17 00:00:00 2001 From: Sotr Date: Fri, 29 Mar 2019 01:36:39 +0800 Subject: [PATCH] Optimize physics --- .../akarin/server/core/AkarinAsyncScheduler.java | 2 ++ .../java/net/minecraft/server/BlockPosition.java | 14 ++++++++++++++ src/main/java/net/minecraft/server/World.java | 12 ++++++------ work/Paper | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/akarin/server/core/AkarinAsyncScheduler.java b/src/main/java/io/akarin/server/core/AkarinAsyncScheduler.java index 3b22d3a36..ea505fe5a 100644 --- a/src/main/java/io/akarin/server/core/AkarinAsyncScheduler.java +++ b/src/main/java/io/akarin/server/core/AkarinAsyncScheduler.java @@ -2,6 +2,8 @@ package io.akarin.server.core; import java.util.List; +import javax.swing.text.html.parser.Entity; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java index 5ce18f54c..9c2a58554 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java @@ -20,6 +20,20 @@ public class BlockPosition extends BaseBlockPosition { private static final long i = (1L << BlockPosition.c) - 1L; private static final long j = (1L << BlockPosition.f) - 1L; private static final long k = (1L << BlockPosition.d) - 1L; + // Akarin start + protected BlockPosition shiftX(int x) { + this.x = this.x + x; + return this; + } + protected BlockPosition shiftY(int y) { + this.y = this.y + y; + return this; + } + protected BlockPosition shiftZ(int z) { + this.z = this.z + z; + return this; + } + // Akarin end public BlockPosition(int i, int j, int k) { super(i, j, k); diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 59a77409a..23a59a9af 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -641,12 +641,12 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc public void applyPhysics(BlockPosition blockposition, Block block) { if (captureBlockStates) { return; } // Paper - Cancel all physics during placement - this.a(blockposition.west(), block, blockposition); - this.a(blockposition.east(), block, blockposition); - this.a(blockposition.down(), block, blockposition); - this.a(blockposition.up(), block, blockposition); - this.a(blockposition.north(), block, blockposition); - this.a(blockposition.south(), block, blockposition); + this.a(blockposition.shiftX(-1), block, blockposition); // Akarin - west + this.a(blockposition.shiftX(2), block, blockposition); // Akarin - east + this.a(blockposition.shiftX(-1).shiftY(-1), block, blockposition); // Akarin - down + this.a(blockposition.shiftY(2), block, blockposition); // Akarin - up + this.a(blockposition.shiftY(-1).shiftZ(-1), block, blockposition); // Akarin - north + this.a(blockposition.shiftZ(2), block, blockposition); // Akarin - south } public void a(BlockPosition blockposition, Block block, EnumDirection enumdirection) { diff --git a/work/Paper b/work/Paper index 3eeec2ec1..def003392 160000 --- a/work/Paper +++ b/work/Paper @@ -1 +1 @@ -Subproject commit 3eeec2ec1176e421b9e9391138e64906300f4eae +Subproject commit def003392986c54fdc63fc3f425607998fa5013c