mirror of
https://github.com/Dreeam-qwq/Gale.git
synced 2025-12-19 14:59:29 +00:00
62 lines
3.1 KiB
Diff
62 lines
3.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martijn Muijsers <martijnmuijsers@live.nl>
|
|
Date: Thu, 24 Nov 2022 10:31:38 +0100
|
|
Subject: [PATCH] Reduce in wall checks
|
|
|
|
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
Gale - https://galemc.org
|
|
|
|
This patch is based on the following patch:
|
|
"Optimize suffocation"
|
|
By: Kevin Raneri <kevin.raneri@gmail.com>
|
|
As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
|
|
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
|
|
|
|
* Pufferfish description *
|
|
|
|
The isInWall check to determine suffocation is quite expensive, and
|
|
often is completely unnecessary to check. We do two things here to
|
|
improve this:
|
|
|
|
1. We only check for suffocation once per 20 ticks. The maximum
|
|
no-damage ticks value means that this change should be extremely
|
|
difficult, if not impossible, for players to notice.
|
|
|
|
2. We additionally execute a check to see if the player can even take
|
|
damage in the first place. This check doesn't improve performance much
|
|
but is so much cheaper than the suffocation check that it's worth
|
|
keeping it.
|
|
|
|
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
|
|
index d17020508a1f8d6c7da630b89a11db9bf7d1748f..1fbc971f4bb2473dc67021b4cec9228109e0c43b 100644
|
|
--- a/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -448,7 +448,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
if (this.isAlive()) {
|
|
boolean flag = this instanceof Player;
|
|
if (this.level() instanceof ServerLevel serverLevel1) {
|
|
- if (this.isInWall()) {
|
|
+ // Gale start - Pufferfish - reduce in wall checks
|
|
+ long checkStuckInWallInterval = this.level().galeConfig().smallOptimizations.reducedIntervals.checkStuckInWall;
|
|
+ if ((checkStuckInWallInterval <= 1 || (tickCount % checkStuckInWallInterval == 0 && couldPossiblyBeHurt(1.0F))) && this.isInWall()) {
|
|
+ // Gale end - Pufferfish - reduce in wall checks
|
|
this.hurtServer(serverLevel1, this.damageSources().inWall(), 1.0F);
|
|
} else if (flag && !this.level().getWorldBorder().isWithinBounds(this.getBoundingBox())) {
|
|
double d = this.level().getWorldBorder().getDistanceToBorder(this) + this.level().getWorldBorder().getDamageSafeZone();
|
|
@@ -1354,6 +1357,15 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
return this.getHealth() <= 0.0F;
|
|
}
|
|
|
|
+ // Gale start - Pufferfish - reduce in wall checks
|
|
+ public boolean couldPossiblyBeHurt(float amount) {
|
|
+ if ((float) this.invulnerableTime > (float) this.invulnerableDuration / 2.0F && amount <= this.lastHurt) {
|
|
+ return false;
|
|
+ }
|
|
+ return true;
|
|
+ }
|
|
+ // Gale end - Pufferfish - reduce in wall checks
|
|
+
|
|
@Override
|
|
public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) {
|
|
if (this.isInvulnerableTo(level, damageSource)) {
|