Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-11-15 12:30:06 +01:00
2d09115b3a
Uses the new ANSIComponentSerializer introduced in Adventure 4.14.0 to serialize components when logging them via the ComponentLogger, or when sending messages to the console. This replaces the old solution which uses legacy jank and custom color conversions, with a new library that handles the conversion and config
83 Zeilen
4.0 KiB
Diff
83 Zeilen
4.0 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 ef5e979d09df13660ac7893be1209c2c2b8a136c..dc676cdabfa306a3975e25f981078ead317196c1 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -402,6 +402,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
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();
|
|
@@ -833,7 +834,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
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);
|
|
}
|
|
@@ -2417,6 +2418,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
if (fromNetherPortal) {
|
|
nbt.putBoolean("Paper.FromNetherPortal", true);
|
|
}
|
|
+ if (freezeLocked) {
|
|
+ nbt.putBoolean("Paper.FreezeLock", true);
|
|
+ }
|
|
// Paper end
|
|
return nbt;
|
|
} catch (Throwable throwable) {
|
|
@@ -2582,6 +2586,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
|
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 5287ff8b30a6d27ca05241695a6c99e868a5aa36..351c60a6f1dfc00aa1a300ed929e81df8d0d025a 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -3427,7 +3427,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() && !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 428795adbd9e08353196ab78730e6dc6984011e7..8317d5100d16fb242e4ff9f7b965e1dbd147cede 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
|
|
@@ -663,6 +663,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.discard();
|