d454bbd5e1
This patch replaces the vanilla collision code for both block and entity collisions with faster implementations by JellySquid, used originally in her Lithium mod. Optimizes Full Block voxel collisions, and removes streams from Entity collisions Original code by JellySquid, licensed under GNU Lesser General Public License v3.0 you can find the original code on https://github.com/jellysquid3/lithium-fabric/tree/1.15.x/fabric (Yarn mappings) Ported by Co-authored-by: Zoutelande <54509836+Zoutelande@users.noreply.github.com> Touched up by Aikar to keep previous paper optimizations
77 Zeilen
3.9 KiB
Diff
77 Zeilen
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Byteflux <byte@byteflux.net>
|
|
Date: Tue, 1 Mar 2016 14:14:15 -0600
|
|
Subject: [PATCH] Drop falling block and tnt entities at the specified height
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 8ee2b9bb1bce698fce50ac1b3fc477fcafd0542c..d59b82b7bb1f6d1b231f4e394e0a67a3d154d7be 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -119,4 +119,14 @@ public class PaperWorldConfig {
|
|
keepSpawnInMemory = getBoolean("keep-spawn-loaded", true);
|
|
log("Keep spawn chunk loaded: " + keepSpawnInMemory);
|
|
}
|
|
+
|
|
+ public int fallingBlockHeightNerf;
|
|
+ public int entityTNTHeightNerf;
|
|
+ private void heightNerfs() {
|
|
+ fallingBlockHeightNerf = getInt("falling-block-height-nerf", 0);
|
|
+ entityTNTHeightNerf = getInt("tnt-entity-height-nerf", 0);
|
|
+
|
|
+ if (fallingBlockHeightNerf != 0) log("Falling Block Height Limit set to Y: " + fallingBlockHeightNerf);
|
|
+ if (entityTNTHeightNerf != 0) log("TNT Entity Height Limit set to Y: " + entityTNTHeightNerf);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 2a449ec40a725b01a7bf572ae119c2197944ecbc..0d617c8e09cf0adf0d7aa8c95fc69c641f91b795 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1819,6 +1819,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
return this.a(itemstack, 0.0F);
|
|
}
|
|
|
|
+ @Nullable public final EntityItem dropItem(ItemStack itemstack, float offset) { return this.a(itemstack, offset); } // Paper - OBFHELPER
|
|
@Nullable
|
|
public EntityItem a(ItemStack itemstack, float f) {
|
|
if (itemstack.isEmpty()) {
|
|
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
index 4b4e71bf700f13d9719556d4c07316b93aac0fd2..2097ec535e8a4427fc08da02726044b837d5a716 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java
|
|
@@ -85,6 +85,17 @@ public class EntityFallingBlock extends Entity {
|
|
}
|
|
|
|
this.move(EnumMoveType.SELF, this.getMot());
|
|
+
|
|
+ // Paper start - Configurable EntityFallingBlock height nerf
|
|
+ if (this.world.paperConfig.fallingBlockHeightNerf != 0 && this.locY() > this.world.paperConfig.fallingBlockHeightNerf) {
|
|
+ if (this.dropItem && this.world.getGameRules().getBoolean(GameRules.DO_ENTITY_DROPS)) {
|
|
+ this.a(block);
|
|
+ }
|
|
+
|
|
+ this.die();
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
if (!this.world.isClientSide) {
|
|
blockposition = new BlockPosition(this);
|
|
boolean flag = this.block.getBlock() instanceof BlockConcretePowder;
|
|
diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
index d042124362e02a6ec634a16610d4a1ed5ef83284..d9fd4448c707aca8e2040a5848387ce76bbee1df 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
|
|
@@ -54,6 +54,12 @@ public class EntityTNTPrimed extends Entity {
|
|
}
|
|
|
|
this.move(EnumMoveType.SELF, this.getMot());
|
|
+ // Paper start - Configurable TNT entity height nerf
|
|
+ if (this.world.paperConfig.entityTNTHeightNerf != 0 && this.locY() > this.world.paperConfig.entityTNTHeightNerf) {
|
|
+ this.die();
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
this.setMot(this.getMot().a(0.98D));
|
|
if (this.onGround) {
|
|
this.setMot(this.getMot().d(0.7D, -0.5D, 0.7D));
|