PaperMC/patches/server/0520-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch

131 lines
5.7 KiB
Diff
Raw Permalink Normal View History

2021-06-11 14:02:28 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MeFisto94 <MeFisto94@users.noreply.github.com>
Date: Tue, 11 May 2021 00:48:33 +0200
Subject: [PATCH] Add a "should burn in sunlight" API for Phantoms and
Skeletons
diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
2024-12-03 19:54:10 +01:00
index 7c80c79a87ec438d0891c5c977e162f272d80039..cb89a95e6ff9db73c912bba04d27657683135153 100644
2021-06-11 14:02:28 +02:00
--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
2024-12-03 19:54:10 +01:00
@@ -97,9 +97,15 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
2024-04-24 15:46:45 +02:00
abstract SoundEvent getStepSound();
2021-06-11 14:02:28 +02:00
+ // Paper start - shouldBurnInDay API
2021-06-11 14:02:28 +02:00
+ private boolean shouldBurnInDay = true;
+ public boolean shouldBurnInDay() { return shouldBurnInDay; }
+ public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
+ // Paper end - shouldBurnInDay API
2021-06-11 14:02:28 +02:00
+
@Override
public void aiStep() {
- boolean flag = this.isSunBurnTick();
+ boolean flag = shouldBurnInDay && this.isSunBurnTick(); // Paper - shouldBurnInDay API
2021-06-11 14:02:28 +02:00
if (flag) {
ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
2024-12-03 19:54:10 +01:00
@@ -243,7 +249,20 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
2021-06-15 04:59:31 +02:00
public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt);
2021-06-11 14:02:28 +02:00
this.reassessWeaponGoal();
+ // Paper start - shouldBurnInDay API
+ if (nbt.contains("Paper.ShouldBurnInDay")) {
+ this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
+ }
+ // Paper end - shouldBurnInDay API
2023-03-23 22:57:03 +01:00
+ }
+
+ // Paper start - shouldBurnInDay API
2021-06-11 14:02:28 +02:00
+ @Override
2021-06-15 04:59:31 +02:00
+ public void addAdditionalSaveData(CompoundTag nbt) {
+ super.addAdditionalSaveData(nbt);
+ nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay);
2023-03-23 22:57:03 +01:00
}
+ // Paper end - shouldBurnInDay API
2023-03-23 22:57:03 +01:00
2021-06-11 14:02:28 +02:00
@Override
public void setItemSlot(EquipmentSlot slot, ItemStack stack) {
diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
2024-12-03 19:54:10 +01:00
index 1171a4e45bed0455b29b2cf012fbc2883b16d061..4ff75412452649ebf106ef591cb97dc7ac8175e7 100644
2021-06-11 14:02:28 +02:00
--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
2024-10-23 20:15:25 +02:00
@@ -139,7 +139,7 @@ public class Phantom extends FlyingMob implements Enemy {
2021-06-11 14:02:28 +02:00
@Override
public void aiStep() {
- if (this.isAlive() && this.isSunBurnTick()) {
2024-04-24 15:46:45 +02:00
+ if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API
2024-06-14 00:44:26 +02:00
this.igniteForSeconds(8.0F);
2021-06-11 14:02:28 +02:00
}
2024-10-23 20:15:25 +02:00
@@ -165,6 +165,9 @@ public class Phantom extends FlyingMob implements Enemy {
2021-06-15 04:59:31 +02:00
if (nbt.hasUUID("Paper.SpawningEntity")) {
this.spawningEntity = nbt.getUUID("Paper.SpawningEntity");
2021-06-11 14:02:28 +02:00
}
+ if (nbt.contains("Paper.ShouldBurnInDay")) {
+ this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
+ }
2021-06-11 14:02:28 +02:00
// Paper end
}
2024-10-23 20:15:25 +02:00
@@ -179,6 +182,7 @@ public class Phantom extends FlyingMob implements Enemy {
2021-06-11 14:02:28 +02:00
if (this.spawningEntity != null) {
2021-06-17 23:39:36 +02:00
nbt.putUUID("Paper.SpawningEntity", this.spawningEntity);
2021-06-11 14:02:28 +02:00
}
2021-06-15 04:59:31 +02:00
+ nbt.putBoolean("Paper.ShouldBurnInDay", shouldBurnInDay);
2021-06-11 14:02:28 +02:00
// Paper end
}
2024-04-24 15:46:45 +02:00
@@ -238,6 +242,9 @@ public class Phantom extends FlyingMob implements Enemy {
return this.spawningEntity;
2021-06-11 14:02:28 +02:00
}
public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; }
+ private boolean shouldBurnInDay = true;
+ public boolean shouldBurnInDay() { return shouldBurnInDay; }
+ public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
// Paper end
2024-04-24 15:46:45 +02:00
private static enum AttackPhase {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
index 5ff566186431440c25a26900aba14e4adb642031..5beaa2bb0d58fe477ce8d2de8b77600d3b416d8c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
@@ -20,4 +20,15 @@ public abstract class CraftAbstractSkeleton extends CraftMonster implements Abst
return (net.minecraft.world.entity.monster.AbstractSkeleton) super.getHandle();
2021-06-11 14:02:28 +02:00
}
// Paper end
+ // Paper start
2021-06-11 14:02:28 +02:00
+ @Override
+ public boolean shouldBurnInDay() {
+ return getHandle().shouldBurnInDay();
+ }
+
+ @Override
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
+ getHandle().setShouldBurnInDay(shouldBurnInDay);
+ }
+ // Paper end
2021-06-11 14:02:28 +02:00
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
index 305a635b049741ac5e2670060c6818cb2c07e5ab..9304e201db1ec96d0916aa8ea781f3e4bc7991e6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
@@ -34,5 +34,15 @@ public class CraftPhantom extends CraftFlying implements Phantom, CraftEnemy {
public java.util.UUID getSpawningEntity() {
return getHandle().getSpawningEntity();
2021-06-11 14:02:28 +02:00
}
+
+ @Override
+ public boolean shouldBurnInDay() {
+ return getHandle().shouldBurnInDay();
+ }
+
+ @Override
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
+ getHandle().setShouldBurnInDay(shouldBurnInDay);
+ }
// Paper end
2021-06-11 14:02:28 +02:00
}