Skip to content

Commit 3ef3a4e

Browse files
committed
Do not thread-check Projectile#getOwnerRaw if the projectile is not yet in the world
1 parent 2397f04 commit 3ef3a4e

File tree

1 file changed

+5
-22
lines changed

1 file changed

+5
-22
lines changed

folia-server/minecraft-patches/features/0001-Region-Threading-Base.patch

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16259,27 +16259,10 @@ index d8dc196ef92e97f831cf97cd1536a46f81f9d5d1..3e223b49878d2622711cb8791d653f78
1625916259
if (this.attachedToEntity != null) {
1626016260
Vec3 handHoldingItemAngle;
1626116261
diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java
16262-
index 5f3abbe943be394e9cb987945a238208940b5015..1dba06643cae653db44e28fe07f8876c8e8cee27 100644
16262+
index 5f3abbe943be394e9cb987945a238208940b5015..7760ab1fe365b4bf1ab6c2ff953e8659a28008a8 100644
1626316263
--- a/net/minecraft/world/entity/projectile/FishingHook.java
1626416264
+++ b/net/minecraft/world/entity/projectile/FishingHook.java
16265-
@@ -98,7 +98,7 @@ public class FishingHook extends Projectile {
16266-
16267-
public FishingHook(Player owner, Level level, int luck, int lureSpeed) {
16268-
this(EntityType.FISHING_BOBBER, level, luck, lureSpeed);
16269-
- this.setOwner(owner);
16270-
+ //this.setOwner(owner); // Folia - region threading - move this down after position so that thread-checks do not fail
16271-
float xRot = owner.getXRot();
16272-
float yRot = owner.getYRot();
16273-
float cos = Mth.cos(-yRot * (float) (Math.PI / 180.0) - (float) Math.PI);
16274-
@@ -109,6 +109,7 @@ public class FishingHook extends Projectile {
16275-
double eyeY = owner.getEyeY();
16276-
double d1 = owner.getZ() - cos * 0.3;
16277-
this.snapTo(d, eyeY, d1, yRot, xRot);
16278-
+ this.setOwner(owner); // Folia - region threading - move this down after position so that thread-checks do not fail
16279-
Vec3 vec3 = new Vec3(-sin, Mth.clamp(-(sin1 / f), -5.0F, 5.0F), -cos);
16280-
double len = vec3.length();
16281-
vec3 = vec3.multiply(
16282-
@@ -270,6 +271,11 @@ public class FishingHook extends Projectile {
16265+
@@ -270,6 +270,11 @@ public class FishingHook extends Projectile {
1628316266
}
1628416267

1628516268
private boolean shouldStopFishing(Player player) {
@@ -16291,7 +16274,7 @@ index 5f3abbe943be394e9cb987945a238208940b5015..1dba06643cae653db44e28fe07f8876c
1629116274
ItemStack mainHandItem = player.getMainHandItem();
1629216275
ItemStack offhandItem = player.getOffhandItem();
1629316276
boolean isFishingRod = mainHandItem.is(Items.FISHING_ROD);
16294-
@@ -612,10 +618,18 @@ public class FishingHook extends Projectile {
16277+
@@ -612,10 +617,18 @@ public class FishingHook extends Projectile {
1629516278

1629616279
@Override
1629716280
public void remove(Entity.RemovalReason reason, @Nullable org.bukkit.event.entity.EntityRemoveEvent.Cause cause) { // CraftBukkit - add Bukkit remove cause
@@ -16328,7 +16311,7 @@ index f736f72b8e76dd82236badcdd2756f0d4da89aa4..e0277e9c8037e90d0a479e8fb5013b88
1632816311
HitResult hitResultOnMoveVector = ProjectileUtil.getHitResultOnMoveVector(this, this::canHitEntity);
1632916312
this.preHitTargetOrDeflectSelf(hitResultOnMoveVector); // CraftBukkit - projectile hit event
1633016313
diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java
16331-
index ee16a05b8b2747ce95fcae1616c96143a5dec74e..777d785b1d478a76b36942de9ce5f426d39bd8c7 100644
16314+
index ee16a05b8b2747ce95fcae1616c96143a5dec74e..b6cdd02ead8ecc38afd4e76fa0c19a9433550b1d 100644
1633216315
--- a/net/minecraft/world/entity/projectile/Projectile.java
1633316316
+++ b/net/minecraft/world/entity/projectile/Projectile.java
1633416317
@@ -71,9 +71,20 @@ public abstract class Projectile extends Entity implements TraceableEntity {
@@ -16348,7 +16331,7 @@ index ee16a05b8b2747ce95fcae1616c96143a5dec74e..777d785b1d478a76b36942de9ce5f426
1634816331
+
1634916332
+ @Nullable
1635016333
+ public Entity getOwnerRaw() { // Folia - region threading
16351-
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this, "Cannot update owner state asynchronously"); // Folia - region threading
16334+
+ if (!this.hasNullCallback()) ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this, "Cannot update owner state asynchronously"); // Folia - region threading
1635216335
return EntityReference.get(this.owner, this.level(), Entity.class);
1635316336
}
1635416337

0 commit comments

Comments
 (0)