diff --git a/patches/api/0041-Fire-Immunity-API.patch b/patches/api/0041-Fire-Immunity-API.patch deleted file mode 100644 index 5de466a43..000000000 --- a/patches/api/0041-Fire-Immunity-API.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Racci <90304606+DaRacci@users.noreply.github.com> -Date: Fri, 4 Feb 2022 16:09:47 +1100 -Subject: [PATCH] Fire Immunity API - - -diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index a4136da96f0759ca137a86f2518af58bccb6b632..076fe310d500ebb52e705a3a69e895061702f470 100644 ---- a/src/main/java/org/bukkit/entity/Entity.java -+++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1209,5 +1209,18 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent - * @return True if in daylight - */ - boolean isInDaylight(); -+ -+ /** -+ * Checks if the entity is fire immune -+ * -+ * @return True if fire immune -+ */ -+ boolean isImmuneToFire(); -+ -+ /** -+ * Sets if the entity is fire immune -+ * Set this to null to restore the entity type default -+ */ -+ void setImmuneToFire(@Nullable Boolean fireImmune); - // Purpur end - } diff --git a/patches/server/0264-Fire-Immunity-API.patch b/patches/server/0264-Fire-Immunity-API.patch deleted file mode 100644 index 22086447d..000000000 --- a/patches/server/0264-Fire-Immunity-API.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Racci <90304606+DaRacci@users.noreply.github.com> -Date: Fri, 4 Feb 2022 16:10:21 +1100 -Subject: [PATCH] Fire Immunity API - - -diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 35cd273eb885558003a728eedc63f958e5accf74..c12594a49435440a6c96039b2a54c1a3b1707fc0 100644 ---- a/net/minecraft/world/entity/Entity.java -+++ b/net/minecraft/world/entity/Entity.java -@@ -390,6 +390,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean fixedPose = false; // Paper - Expand Pose API - private final int despawnTime; // Paper - entity despawn time limit -+ public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API - - public void setOrigin(@javax.annotation.Nonnull Location location) { - this.origin = location.toVector(); -@@ -1980,7 +1981,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - public boolean fireImmune() { -- return this.getType().fireImmune(); -+ return this.immuneToFire != null ? immuneToFire : this.getType().fireImmune(); // Purpur - add fire immune API - } - - public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2735,6 +2736,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - nbttagcompound.putBoolean("Paper.FreezeLock", true); - } - // Paper end -+ // Purpur start -+ if (immuneToFire != null) { -+ nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); -+ } -+ // Purpur end - return nbttagcompound; - } catch (Throwable throwable) { - CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2885,6 +2891,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - freezeLocked = nbt.getBoolean("Paper.FreezeLock"); - } - // Paper end -+ // Purpur start -+ if (nbt.contains("Purpur.FireImmune")) { -+ immuneToFire = nbt.getBoolean("Purpur.FireImmune"); -+ } -+ // Purpur end - - } catch (Throwable throwable) { - CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f9d7f1d317a9534d471a481db8c26f9d3b15bfda..0e1b3f64d1a828b9c69efe45c511582880bdcb92 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -88,6 +88,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - } - - // Purpur start - API for any mob to burn daylight -+ @Override -+ public boolean isImmuneToFire() { -+ return getHandle().fireImmune(); -+ } -+ -+ @Override -+ public void setImmuneToFire(Boolean fireImmune) { -+ getHandle().immuneToFire = fireImmune; -+ } -+ - @Override - public boolean isInDaylight() { - return getHandle().isSunBurnTick(); -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 74f5b702b9602e4c8acbad4fb09c641e2c7844b2..762be3721419bfe33ea6577d3c6961204fdb0037 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -173,9 +173,14 @@ public class CraftItem extends CraftEntity implements Item { - return this.getHandle().immuneToExplosion; - } - -+ @Override -+ public void setImmuneToFire(@org.jetbrains.annotations.Nullable Boolean immuneToFire) { -+ this.getHandle().immuneToFire = (immuneToFire != null && immuneToFire); -+ } -+ - @Override - public void setImmuneToFire(boolean immuneToFire) { -- item.immuneToFire = immuneToFire; -+ this.setImmuneToFire((Boolean) immuneToFire); - } - - @Override diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 1ad686669..91c5c6b8b 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1172,4 +_,44 @@ +@@ -1172,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation @@ -44,4 +44,19 @@ + */ + boolean isInDaylight(); + // Purpur end - API for any mob to burn daylight ++ ++ // Purpur start - Fire Immunity API ++ /** ++ * Checks if the entity is fire immune ++ * ++ * @return True if fire immune ++ */ ++ boolean isImmuneToFire(); ++ ++ /** ++ * Sets if the entity is fire immune ++ * Set this to null to restore the entity type default ++ */ ++ void setImmuneToFire(@Nullable Boolean fireImmune); ++ // Purpur end - Fire Immunity API } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 18df33bad..9b25bfdcf 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -30,6 +30,14 @@ protected String stringUUID = this.uuid.toString(); private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl +@@ -342,6 +_,7 @@ + public long activatedTick = Integer.MIN_VALUE; + public boolean isTemporarilyActive; + public long activatedImmunityTick = Integer.MIN_VALUE; ++ public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API + + public void inactiveTick() { + } @@ -526,10 +_,20 @@ } // Paper end - optimise entity tracker @@ -51,6 +59,15 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; +@@ -1830,7 +_,7 @@ + } + + public boolean fireImmune() { +- return this.getType().fireImmune(); ++ return this.immuneToFire != null ? immuneToFire : this.getType().fireImmune(); // Purpur - add fire immune API + } + + public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { @@ -1899,7 +_,7 @@ return this.isInWater() || flag; } @@ -60,6 +77,34 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { +@@ -2532,6 +_,13 @@ + compound.putBoolean("Paper.FreezeLock", true); + } + // Paper end ++ ++ // Purpur start - Fire immune API ++ if (immuneToFire != null) { ++ compound.putBoolean("Purpur.FireImmune", immuneToFire); ++ } ++ // Purpur end - Fire immune API ++ + return compound; + } catch (Throwable var9) { + CrashReport crashReport = CrashReport.forThrowable(var9, "Saving entity NBT"); +@@ -2681,6 +_,13 @@ + freezeLocked = compound.getBoolean("Paper.FreezeLock"); + } + // Paper end ++ ++ // Purpur start - Fire immune API ++ if (compound.contains("Purpur.FireImmune")) { ++ immuneToFire = compound.getBoolean("Purpur.FireImmune"); ++ } ++ // Purpur end - Fire immune API ++ + } catch (Throwable var17) { + CrashReport crashReport = CrashReport.forThrowable(var17, "Loading entity NBT"); + CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); @@ -2922,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index d8d965323..ec1fe92b1 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 91b78711ec06f51e3bc25109129cc164a98bcf87..0d69e89c1ade115b868cb13f08f75cf256734d88 100644 +index de89c7c9388ba9202d075aff60a5e5d0696ae13d..48a2800004c8d5be6b672af849c7a93658e24d7a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1306,4 +1306,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1318,4 +1318,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } } // Paper end - broadcast hurt animation @@ -37,7 +37,7 @@ index 91b78711ec06f51e3bc25109129cc164a98bcf87..0d69e89c1ade115b868cb13f08f75cf2 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index e37aaf77f94b97b736cc20ef070cefdff0400188..eb2f9bfdaf3ed8a684337a15365e70174d1533b3 100644 +index 471752b8f05e9496e6b25efa8412377e937ba1c4..d52d41d8c56e017f95914da19b05c3d79f8f1640 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch index 5d6de1572..22cdeb341 100644 --- a/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0005-Add-EntityTeleportHinderedEvent.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 0d69e89c1ade115b868cb13f08f75cf256734d88..a4a49f9c587aa062236a2da4e80c7bdcc5b4b525 100644 +index 48a2800004c8d5be6b672af849c7a93658e24d7a..f6c8a08fd4f0329357156085348d6b9141d18fdb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -246,6 +246,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -258,6 +258,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean ignorePassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -29,7 +29,7 @@ index 0d69e89c1ade115b868cb13f08f75cf256734d88..a4a49f9c587aa062236a2da4e80c7bdc } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7eb22420bc4cdb401d37e84912960e8372b04511..8211b308727f24bafb58866890dd050ee2fcb389 100644 +index b61e994e90f9ccc3e24cb916dd83a0af46ecf39f..bd0df2ae65e83dd74051d45dde8330af32c4dfe5 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1449,6 +1449,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index 66e96c8df..b8f193bf6 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch @@ -6,12 +6,12 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index fff77d5cbd2ca70ab7ced7075bf86318bfed77df..aa8976d926b486d29c6030104f259d1e53481a3b 100644 +index f6c8a08fd4f0329357156085348d6b9141d18fdb..359fb91294b3b0eb4719982ba64fcf8667533a42 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -87,6 +87,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); +@@ -99,6 +99,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } + // Purpur end - Fire Immunity API + // Purpur start - API for any mob to burn daylight + @Override @@ -24,7 +24,7 @@ index fff77d5cbd2ca70ab7ced7075bf86318bfed77df..aa8976d926b486d29c6030104f259d1e Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 4f98d138a275a6c34528b7a5148ef265bc38d6b5..7ccc40555964b906be6987532de1f319e38741ce 100644 +index 459366331971d09e4cd00fb2035be01b4257477a..3a9d9b7526b2bf0fbd4e0d7886b3d849a6dcfee9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1211,4 +1211,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch new file mode 100644 index 000000000..0c61c86ab --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -0,0 +1,21 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +@@ -87,6 +_,18 @@ + this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); + } + ++ // Purpur start - Fire Immunity API ++ @Override ++ public boolean isImmuneToFire() { ++ return getHandle().fireImmune(); ++ } ++ ++ @Override ++ public void setImmuneToFire(Boolean fireImmune) { ++ getHandle().immuneToFire = fireImmune; ++ } ++ // Purpur end - Fire Immunity API ++ + public static CraftEntity getEntity(CraftServer server, T entity) { + Preconditions.checkArgument(entity != null, "Unknown entity"); + diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch index 327b77e5c..8625ef963 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -@@ -151,4 +_,46 @@ +@@ -151,4 +_,53 @@ public String toString() { return "CraftItem"; } @@ -26,9 +26,16 @@ + return this.getHandle().immuneToExplosion; + } + ++ // Purpur start - Fire Immunity API ++ @Override ++ public void setImmuneToFire(@org.jetbrains.annotations.Nullable Boolean immuneToFire) { ++ this.getHandle().immuneToFire = (immuneToFire != null && immuneToFire); ++ } ++ // Purpur end - Fire Immunity API ++ + @Override + public void setImmuneToFire(boolean immuneToFire) { -+ this.getHandle().immuneToFire = immuneToFire; ++ this.setImmuneToFire((Boolean) immuneToFire); // Purpur - Fire Immunity API + } + + @Override