mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 20:50:41 +01:00
3e90a19183
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 304e83eb PR-1002: Improve documentation and implementation of getMaxStackSize e8215ea2 SPIGOT-7638: Library loader does not seem to resolve every dependency 79c595c0 SPIGOT-7637: Bad logic in checking nullability of AttributeModifier slots CraftBukkit Changes: 91b1fc3f1 SPIGOT-7644: Fix ItemMeta#getAsString 4e77a81e1 SPIGOT-7615: PlayerLeashEntityEvent cancelled eats lead 996f660f3 Do not remove leash knot if leasing to an existing leash knot gets cancelled f70367d42 SPIGOT-7643: Fix inverted leash event cancelled usage and remove leash knot if no entity gets leashed 7ddb48294 SPIGOT-7640: Abnormal jumping height of wind charge 080c8711e SPIGOT-7639: Incoming plugin channels not working ad549847e Open a direct connection instead of pinging mojang server to check if it is reachable 38e2926c5 SPIGOT-7365: DamageCause blocked by shield should trigger invulnerableTime
82 lines
4 KiB
Diff
82 lines
4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
|
|
Date: Sun, 26 Dec 2021 20:27:43 -0500
|
|
Subject: [PATCH] Freeze Tick Lock API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
index 2e0dc24bf6732637b29e21c8817f0d3502a2a89a..8e09bfb7c1b4fb34e6615b0cf774bc8e6cae29fa 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -407,6 +407,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
private org.bukkit.util.Vector origin;
|
|
@javax.annotation.Nullable
|
|
private UUID originWorld;
|
|
+ public boolean freezeLocked = false; // Paper - Freeze Tick Lock API
|
|
|
|
public void setOrigin(@javax.annotation.Nonnull Location location) {
|
|
this.origin = location.toVector();
|
|
@@ -777,7 +778,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
this.setRemainingFireTicks(this.remainingFireTicks - 1);
|
|
}
|
|
|
|
- if (this.getTicksFrozen() > 0) {
|
|
+ if (this.getTicksFrozen() > 0 && !freezeLocked) { // Paper - Freeze Tick Lock API
|
|
this.setTicksFrozen(0);
|
|
this.level().levelEvent((Player) null, 1009, this.blockPosition, 1);
|
|
}
|
|
@@ -2274,6 +2275,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
if (fromNetherPortal) {
|
|
nbttagcompound.putBoolean("Paper.FromNetherPortal", true);
|
|
}
|
|
+ if (freezeLocked) {
|
|
+ nbttagcompound.putBoolean("Paper.FreezeLock", true);
|
|
+ }
|
|
// Paper end
|
|
return nbttagcompound;
|
|
} catch (Throwable throwable) {
|
|
@@ -2418,6 +2422,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
|
if (spawnReason == null) {
|
|
spawnReason = org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT;
|
|
}
|
|
+ if (nbt.contains("Paper.FreezeLock")) {
|
|
+ freezeLocked = nbt.getBoolean("Paper.FreezeLock");
|
|
+ }
|
|
// Paper end
|
|
|
|
} catch (Throwable throwable) {
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
index b73601d2903f327b4e7b82ccc6774731c832e941..9e5d1ebcec91c036ab176161b13766ef44f41d59 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -3464,7 +3464,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
|
|
this.level().getProfiler().pop();
|
|
this.level().getProfiler().push("freezing");
|
|
- if (!this.level().isClientSide && !this.isDeadOrDying()) {
|
|
+ if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API
|
|
int i = this.getTicksFrozen();
|
|
|
|
if (this.isInPowderSnow && this.canFreeze()) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
index 97716f0a20fbc5f7048256ad1942e8f56e9fb72b..113ca1d16cb7650d72f488cdaa9e670d51dc85f0 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
@@ -321,6 +321,17 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
|
|
return this.getHandle().isFullyFrozen();
|
|
}
|
|
|
|
+ // Paper start - Freeze Tick Lock API
|
|
+ @Override
|
|
+ public boolean isFreezeTickingLocked() {
|
|
+ return this.entity.freezeLocked;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void lockFreezeTicks(boolean locked) {
|
|
+ this.entity.freezeLocked = locked;
|
|
+ }
|
|
+ // Paper end - Freeze Tick Lock API
|
|
@Override
|
|
public void remove() {
|
|
this.entity.pluginRemoved = true;
|